/* Generated by Cython 3.1.2 */

#ifndef PY_SSIZE_T_CLEAN
#define PY_SSIZE_T_CLEAN
#endif /* PY_SSIZE_T_CLEAN */
/* InitLimitedAPI */
#if defined(Py_LIMITED_API) && !defined(CYTHON_LIMITED_API)
  #define CYTHON_LIMITED_API 1
#endif

#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 < 0x03080000
    #error Cython requires Python 3.8+.
#else
#define __PYX_ABI_VERSION "3_1_2"
#define CYTHON_HEX_VERSION 0x030102F0
#define CYTHON_FUTURE_DIVISION 1
/* CModulePreamble */
#include <stddef.h>
#ifndef offsetof
  #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(_WIN32) && !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
#define __PYX_COMMA ,
#ifndef HAVE_LONG_LONG
  #define HAVE_LONG_LONG
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#define __PYX_LIMITED_VERSION_HEX PY_VERSION_HEX
#if defined(GRAALVM_PYTHON)
  /* For very preliminary testing purposes. Most variables are set the same as PyPy.
     The existence of this section does not imply that anything works or is even tested */
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 1
  #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 0
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
  #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_ASSUME_SAFE_SIZE
  #define CYTHON_ASSUME_SAFE_SIZE 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #undef CYTHON_PEP489_MULTI_PHASE_INIT
  #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 0
  #undef CYTHON_USE_SYS_MONITORING
  #define CYTHON_USE_SYS_MONITORING 0
  #undef CYTHON_USE_TP_FINALIZE
  #define CYTHON_USE_TP_FINALIZE 0
  #undef CYTHON_USE_AM_SEND
  #define CYTHON_USE_AM_SEND 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 1
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#elif defined(PYPY_VERSION)
  #define CYTHON_COMPILING_IN_PYPY 1
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 1
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #undef CYTHON_USE_UNICODE_WRITER
  #define CYTHON_USE_UNICODE_WRITER 0
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #undef CYTHON_AVOID_BORROWED_REFS
  #define CYTHON_AVOID_BORROWED_REFS 1
  #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
  #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #ifndef CYTHON_ASSUME_SAFE_SIZE
    #define CYTHON_ASSUME_SAFE_SIZE 1
  #endif
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL 0
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #if PY_VERSION_HEX < 0x03090000
    #undef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 0
  #elif !defined(CYTHON_PEP489_MULTI_PHASE_INIT)
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #undef CYTHON_USE_MODULE_STATE
  #define CYTHON_USE_MODULE_STATE 0
  #undef CYTHON_USE_SYS_MONITORING
  #define CYTHON_USE_SYS_MONITORING 0
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE (PYPY_VERSION_NUM >= 0x07030C00)
  #endif
  #undef CYTHON_USE_AM_SEND
  #define CYTHON_USE_AM_SEND 0
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC (PYPY_VERSION_NUM >= 0x07031100)
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#elif defined(CYTHON_LIMITED_API)
  #ifdef Py_LIMITED_API
    #undef __PYX_LIMITED_VERSION_HEX
    #define __PYX_LIMITED_VERSION_HEX Py_LIMITED_API
  #endif
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 0
  #define CYTHON_COMPILING_IN_LIMITED_API 1
  #define CYTHON_COMPILING_IN_GRAAL 0
  #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
  #undef CYTHON_CLINE_IN_TRACEBACK
  #define CYTHON_CLINE_IN_TRACEBACK 0
  #undef CYTHON_USE_TYPE_SLOTS
  #define CYTHON_USE_TYPE_SLOTS 0
  #undef CYTHON_USE_TYPE_SPECS
  #define CYTHON_USE_TYPE_SPECS 1
  #undef CYTHON_USE_PYTYPE_LOOKUP
  #define CYTHON_USE_PYTYPE_LOOKUP 0
  #undef CYTHON_USE_PYLIST_INTERNALS
  #define CYTHON_USE_PYLIST_INTERNALS 0
  #undef CYTHON_USE_UNICODE_INTERNALS
  #define CYTHON_USE_UNICODE_INTERNALS 0
  #ifndef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #endif
  #undef CYTHON_USE_PYLONG_INTERNALS
  #define CYTHON_USE_PYLONG_INTERNALS 0
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
    #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
  #endif
  #undef CYTHON_ASSUME_SAFE_MACROS
  #define CYTHON_ASSUME_SAFE_MACROS 0
  #undef CYTHON_ASSUME_SAFE_SIZE
  #define CYTHON_ASSUME_SAFE_SIZE 0
  #undef CYTHON_UNPACK_METHODS
  #define CYTHON_UNPACK_METHODS 0
  #undef CYTHON_FAST_THREAD_STATE
  #define CYTHON_FAST_THREAD_STATE 0
  #undef CYTHON_FAST_GIL
  #define CYTHON_FAST_GIL 0
  #undef CYTHON_METH_FASTCALL
  #define CYTHON_METH_FASTCALL (__PYX_LIMITED_VERSION_HEX >= 0x030C0000)
  #undef CYTHON_FAST_PYCALL
  #define CYTHON_FAST_PYCALL 0
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_MODULE_STATE
    #define CYTHON_USE_MODULE_STATE 0
  #endif
  #undef CYTHON_USE_SYS_MONITORING
  #define CYTHON_USE_SYS_MONITORING 0
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 0
  #endif
  #ifndef CYTHON_USE_AM_SEND
    #define CYTHON_USE_AM_SEND (__PYX_LIMITED_VERSION_HEX >= 0x030A0000)
  #endif
  #undef CYTHON_USE_DICT_VERSIONS
  #define CYTHON_USE_DICT_VERSIONS 0
  #undef CYTHON_USE_EXC_INFO_STACK
  #define CYTHON_USE_EXC_INFO_STACK 0
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 0
  #endif
  #undef CYTHON_USE_FREELISTS
  #define CYTHON_USE_FREELISTS 0
#else
  #define CYTHON_COMPILING_IN_PYPY 0
  #define CYTHON_COMPILING_IN_CPYTHON 1
  #define CYTHON_COMPILING_IN_LIMITED_API 0
  #define CYTHON_COMPILING_IN_GRAAL 0
  #ifdef Py_GIL_DISABLED
    #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 1
  #else
    #define CYTHON_COMPILING_IN_CPYTHON_FREETHREADING 0
  #endif
  #if PY_VERSION_HEX < 0x030A0000
    #undef CYTHON_USE_TYPE_SLOTS
    #define CYTHON_USE_TYPE_SLOTS 1
  #elif !defined(CYTHON_USE_TYPE_SLOTS)
    #define CYTHON_USE_TYPE_SLOTS 1
  #endif
  #ifndef CYTHON_USE_TYPE_SPECS
    #define CYTHON_USE_TYPE_SPECS 0
  #endif
  #ifndef CYTHON_USE_PYTYPE_LOOKUP
    #define CYTHON_USE_PYTYPE_LOOKUP 1
  #endif
  #ifndef CYTHON_USE_PYLONG_INTERNALS
    #define CYTHON_USE_PYLONG_INTERNALS 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_USE_PYLIST_INTERNALS
    #define CYTHON_USE_PYLIST_INTERNALS 0
  #elif !defined(CYTHON_USE_PYLIST_INTERNALS)
    #define CYTHON_USE_PYLIST_INTERNALS 1
  #endif
  #ifndef CYTHON_USE_UNICODE_INTERNALS
    #define CYTHON_USE_UNICODE_INTERNALS 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING || PY_VERSION_HEX >= 0x030B00A2
    #undef CYTHON_USE_UNICODE_WRITER
    #define CYTHON_USE_UNICODE_WRITER 0
  #elif !defined(CYTHON_USE_UNICODE_WRITER)
    #define CYTHON_USE_UNICODE_WRITER 1
  #endif
  #ifndef CYTHON_AVOID_BORROWED_REFS
    #define CYTHON_AVOID_BORROWED_REFS 0
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
    #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 1
  #elif !defined(CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)
    #define CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS 0
  #endif
  #ifndef CYTHON_ASSUME_SAFE_MACROS
    #define CYTHON_ASSUME_SAFE_MACROS 1
  #endif
  #ifndef CYTHON_ASSUME_SAFE_SIZE
    #define CYTHON_ASSUME_SAFE_SIZE 1
  #endif
  #ifndef CYTHON_UNPACK_METHODS
    #define CYTHON_UNPACK_METHODS 1
  #endif
  #ifndef CYTHON_FAST_THREAD_STATE
    #define CYTHON_FAST_THREAD_STATE 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_FAST_GIL
    #define CYTHON_FAST_GIL 0
  #elif !defined(CYTHON_FAST_GIL)
    #define CYTHON_FAST_GIL (PY_VERSION_HEX < 0x030C00A6)
  #endif
  #ifndef CYTHON_METH_FASTCALL
    #define CYTHON_METH_FASTCALL 1
  #endif
  #ifndef CYTHON_FAST_PYCALL
    #define CYTHON_FAST_PYCALL 1
  #endif
  #ifndef CYTHON_PEP487_INIT_SUBCLASS
    #define CYTHON_PEP487_INIT_SUBCLASS 1
  #endif
  #ifndef CYTHON_PEP489_MULTI_PHASE_INIT
    #define CYTHON_PEP489_MULTI_PHASE_INIT 1
  #endif
  #ifndef CYTHON_USE_MODULE_STATE
    #define CYTHON_USE_MODULE_STATE 0
  #endif
  #ifndef CYTHON_USE_SYS_MONITORING
    #define CYTHON_USE_SYS_MONITORING (PY_VERSION_HEX >= 0x030d00B1)
  #endif
  #ifndef CYTHON_USE_TP_FINALIZE
    #define CYTHON_USE_TP_FINALIZE 1
  #endif
  #ifndef CYTHON_USE_AM_SEND
    #define CYTHON_USE_AM_SEND 1
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    #undef CYTHON_USE_DICT_VERSIONS
    #define CYTHON_USE_DICT_VERSIONS 0
  #elif !defined(CYTHON_USE_DICT_VERSIONS)
    #define CYTHON_USE_DICT_VERSIONS  (PY_VERSION_HEX < 0x030C00A5 && !CYTHON_USE_MODULE_STATE)
  #endif
  #ifndef CYTHON_USE_EXC_INFO_STACK
    #define CYTHON_USE_EXC_INFO_STACK 1
  #endif
  #ifndef CYTHON_UPDATE_DESCRIPTOR_DOC
    #define CYTHON_UPDATE_DESCRIPTOR_DOC 1
  #endif
  #ifndef CYTHON_USE_FREELISTS
    #define CYTHON_USE_FREELISTS (!CYTHON_COMPILING_IN_CPYTHON_FREETHREADING)
  #endif
#endif
#ifndef CYTHON_FAST_PYCCALL
#define CYTHON_FAST_PYCCALL  CYTHON_FAST_PYCALL
#endif
#ifndef CYTHON_VECTORCALL
#if CYTHON_COMPILING_IN_LIMITED_API
#define CYTHON_VECTORCALL  (__PYX_LIMITED_VERSION_HEX >= 0x030C0000)
#else
#define CYTHON_VECTORCALL  (CYTHON_FAST_PYCCALL && PY_VERSION_HEX >= 0x030800B1)
#endif
#endif
#define CYTHON_BACKPORT_VECTORCALL (CYTHON_METH_FASTCALL && PY_VERSION_HEX < 0x030800B1)
#if CYTHON_USE_PYLONG_INTERNALS
  #undef SHIFT
  #undef BASE
  #undef MASK
  #ifdef SIZEOF_VOID_P
    enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
  #endif
#endif
#ifndef __has_attribute
  #define __has_attribute(x) 0
#endif
#ifndef __has_cpp_attribute
  #define __has_cpp_attribute(x) 0
#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
#ifndef CYTHON_UNUSED
  #if defined(__cplusplus)
    /* for clang __has_cpp_attribute(maybe_unused) is true even before C++17
     * but leads to warnings with -pedantic, since it is a C++17 feature */
    #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
      #if __has_cpp_attribute(maybe_unused)
        #define CYTHON_UNUSED [[maybe_unused]]
      #endif
    #endif
  #endif
#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_UNUSED_VAR
#  if defined(__cplusplus)
     template<class T> void CYTHON_UNUSED_VAR( const T& ) { }
#  else
#    define CYTHON_UNUSED_VAR(x) (void)(x)
#  endif
#endif
#ifndef CYTHON_MAYBE_UNUSED_VAR
  #define CYTHON_MAYBE_UNUSED_VAR(x) CYTHON_UNUSED_VAR(x)
#endif
#ifndef CYTHON_NCP_UNUSED
# if CYTHON_COMPILING_IN_CPYTHON && !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#  define CYTHON_NCP_UNUSED
# else
#  define CYTHON_NCP_UNUSED CYTHON_UNUSED
# endif
#endif
#ifndef CYTHON_USE_CPP_STD_MOVE
  #if defined(__cplusplus) && (\
    __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1600))
    #define CYTHON_USE_CPP_STD_MOVE 1
  #else
    #define CYTHON_USE_CPP_STD_MOVE 0
  #endif
#endif
#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)
#ifdef _MSC_VER
    #ifndef _MSC_STDINT_H_
        #if _MSC_VER < 1300
            typedef unsigned char     uint8_t;
            typedef unsigned short    uint16_t;
            typedef unsigned int      uint32_t;
        #else
            typedef unsigned __int8   uint8_t;
            typedef unsigned __int16  uint16_t;
            typedef unsigned __int32  uint32_t;
        #endif
    #endif
    #if _MSC_VER < 1300
        #ifdef _WIN64
            typedef unsigned long long  __pyx_uintptr_t;
        #else
            typedef unsigned int        __pyx_uintptr_t;
        #endif
    #else
        #ifdef _WIN64
            typedef unsigned __int64    __pyx_uintptr_t;
        #else
            typedef unsigned __int32    __pyx_uintptr_t;
        #endif
    #endif
#else
    #include <stdint.h>
    typedef uintptr_t  __pyx_uintptr_t;
#endif
#ifndef CYTHON_FALLTHROUGH
  #if defined(__cplusplus)
    /* for clang __has_cpp_attribute(fallthrough) is true even before C++17
     * but leads to warnings with -pedantic, since it is a C++17 feature */
    #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || __cplusplus >= 201703L)
      #if __has_cpp_attribute(fallthrough)
        #define CYTHON_FALLTHROUGH [[fallthrough]]
      #endif
    #endif
    #ifndef CYTHON_FALLTHROUGH
      #if __has_cpp_attribute(clang::fallthrough)
        #define CYTHON_FALLTHROUGH [[clang::fallthrough]]
      #elif __has_cpp_attribute(gnu::fallthrough)
        #define CYTHON_FALLTHROUGH [[gnu::fallthrough]]
      #endif
    #endif
  #endif
  #ifndef CYTHON_FALLTHROUGH
    #if __has_attribute(fallthrough)
      #define CYTHON_FALLTHROUGH __attribute__((fallthrough))
    #else
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
  #if defined(__clang__) && defined(__apple_build_version__)
    #if __apple_build_version__ < 7000000
      #undef  CYTHON_FALLTHROUGH
      #define CYTHON_FALLTHROUGH
    #endif
  #endif
#endif
#ifndef Py_UNREACHABLE
  #define Py_UNREACHABLE()  assert(0); abort()
#endif
#ifdef __cplusplus
  template <typename T>
  struct __PYX_IS_UNSIGNED_IMPL {static const bool value = T(0) < T(-1);};
  #define __PYX_IS_UNSIGNED(type) (__PYX_IS_UNSIGNED_IMPL<type>::value)
#else
  #define __PYX_IS_UNSIGNED(type) (((type)-1) > 0)
#endif
#if CYTHON_COMPILING_IN_PYPY == 1
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x030A0000)
#else
  #define __PYX_NEED_TP_PRINT_SLOT  (PY_VERSION_HEX >= 0x030800b4 && PY_VERSION_HEX < 0x03090000)
#endif
#define __PYX_REINTERPRET_FUNCION(func_pointer, other_pointer) ((func_pointer)(void(*)(void))(other_pointer))

/* CInitCode */
#ifndef CYTHON_INLINE
  #if defined(__clang__)
    #define CYTHON_INLINE __inline__ __attribute__ ((__unused__))
  #elif 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

/* PythonCompatibility */
#define __PYX_BUILD_PY_SSIZE_T "n"
#define CYTHON_FORMAT_SSIZE_T "z"
#define __Pyx_BUILTIN_MODULE_NAME "builtins"
#define __Pyx_DefaultClassType PyType_Type
#if CYTHON_COMPILING_IN_LIMITED_API
    #ifndef CO_OPTIMIZED
    static int CO_OPTIMIZED;
    #endif
    #ifndef CO_NEWLOCALS
    static int CO_NEWLOCALS;
    #endif
    #ifndef CO_VARARGS
    static int CO_VARARGS;
    #endif
    #ifndef CO_VARKEYWORDS
    static int CO_VARKEYWORDS;
    #endif
    #ifndef CO_ASYNC_GENERATOR
    static int CO_ASYNC_GENERATOR;
    #endif
    #ifndef CO_GENERATOR
    static int CO_GENERATOR;
    #endif
    #ifndef CO_COROUTINE
    static int CO_COROUTINE;
    #endif
#else
    #ifndef CO_COROUTINE
      #define CO_COROUTINE 0x80
    #endif
    #ifndef CO_ASYNC_GENERATOR
      #define CO_ASYNC_GENERATOR 0x200
    #endif
#endif
static int __Pyx_init_co_variables(void);
#if PY_VERSION_HEX >= 0x030900A4 || defined(Py_IS_TYPE)
  #define __Pyx_IS_TYPE(ob, type) Py_IS_TYPE(ob, type)
#else
  #define __Pyx_IS_TYPE(ob, type) (((const PyObject*)ob)->ob_type == (type))
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_Is)
  #define __Pyx_Py_Is(x, y)  Py_Is(x, y)
#else
  #define __Pyx_Py_Is(x, y) ((x) == (y))
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsNone)
  #define __Pyx_Py_IsNone(ob) Py_IsNone(ob)
#else
  #define __Pyx_Py_IsNone(ob) __Pyx_Py_Is((ob), Py_None)
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsTrue)
  #define __Pyx_Py_IsTrue(ob) Py_IsTrue(ob)
#else
  #define __Pyx_Py_IsTrue(ob) __Pyx_Py_Is((ob), Py_True)
#endif
#if PY_VERSION_HEX >= 0x030A00B1 || defined(Py_IsFalse)
  #define __Pyx_Py_IsFalse(ob) Py_IsFalse(ob)
#else
  #define __Pyx_Py_IsFalse(ob) __Pyx_Py_Is((ob), Py_False)
#endif
#define __Pyx_NoneAsNull(obj)  (__Pyx_Py_IsNone(obj) ? NULL : (obj))
#if PY_VERSION_HEX >= 0x030900F0 && !CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyObject_GC_IsFinalized(o) PyObject_GC_IsFinalized(o)
#else
  #define __Pyx_PyObject_GC_IsFinalized(o) _PyGC_FINALIZED(o)
#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
#ifndef Py_TPFLAGS_SEQUENCE
  #define Py_TPFLAGS_SEQUENCE 0
#endif
#ifndef Py_TPFLAGS_MAPPING
  #define Py_TPFLAGS_MAPPING 0
#endif
#ifndef METH_STACKLESS
  #define METH_STACKLESS 0
#endif
#ifndef METH_FASTCALL
  #ifndef METH_FASTCALL
     #define METH_FASTCALL 0x80
  #endif
  typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject *const *args, Py_ssize_t nargs);
  typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject *const *args,
                                                          Py_ssize_t nargs, PyObject *kwnames);
#else
  #if PY_VERSION_HEX >= 0x030d00A4
  #  define __Pyx_PyCFunctionFast PyCFunctionFast
  #  define __Pyx_PyCFunctionFastWithKeywords PyCFunctionFastWithKeywords
  #else
  #  define __Pyx_PyCFunctionFast _PyCFunctionFast
  #  define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords
  #endif
#endif
#if CYTHON_METH_FASTCALL
  #define __Pyx_METH_FASTCALL METH_FASTCALL
  #define __Pyx_PyCFunction_FastCall __Pyx_PyCFunctionFast
  #define __Pyx_PyCFunction_FastCallWithKeywords __Pyx_PyCFunctionFastWithKeywords
#else
  #define __Pyx_METH_FASTCALL METH_VARARGS
  #define __Pyx_PyCFunction_FastCall PyCFunction
  #define __Pyx_PyCFunction_FastCallWithKeywords PyCFunctionWithKeywords
#endif
#if CYTHON_VECTORCALL
  #define __pyx_vectorcallfunc vectorcallfunc
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  PY_VECTORCALL_ARGUMENTS_OFFSET
  #define __Pyx_PyVectorcall_NARGS(n)  PyVectorcall_NARGS((size_t)(n))
#elif CYTHON_BACKPORT_VECTORCALL
  typedef PyObject *(*__pyx_vectorcallfunc)(PyObject *callable, PyObject *const *args,
                                            size_t nargsf, PyObject *kwnames);
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  ((size_t)1 << (8 * sizeof(size_t) - 1))
  #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(((size_t)(n)) & ~__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET))
#else
  #define __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET  0
  #define __Pyx_PyVectorcall_NARGS(n)  ((Py_ssize_t)(n))
#endif
#if PY_VERSION_HEX >= 0x030900B1
#define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_CheckExact(func)
#else
#define __Pyx_PyCFunction_CheckExact(func)  PyCFunction_Check(func)
#endif
#define __Pyx_CyOrPyCFunction_Check(func)  PyCFunction_Check(func)
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  (((PyCFunctionObject*)(func))->m_ml->ml_meth)
#elif !CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyOrPyCFunction_GET_FUNCTION(func)  PyCFunction_GET_FUNCTION(func)
#endif
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_CyOrPyCFunction_GET_FLAGS(func)  (((PyCFunctionObject*)(func))->m_ml->ml_flags)
static CYTHON_INLINE PyObject* __Pyx_CyOrPyCFunction_GET_SELF(PyObject *func) {
    return (__Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_STATIC) ? NULL : ((PyCFunctionObject*)func)->m_self;
}
#endif
static CYTHON_INLINE int __Pyx__IsSameCFunction(PyObject *func, void (*cfunc)(void)) {
#if CYTHON_COMPILING_IN_LIMITED_API
    return PyCFunction_Check(func) && PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
#else
    return PyCFunction_Check(func) && PyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
#endif
}
#define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCFunction(func, cfunc)
#if __PYX_LIMITED_VERSION_HEX < 0x03090000
  #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  ((void)m, PyType_FromSpecWithBases(s, b))
  typedef PyObject *(*__Pyx_PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, size_t, PyObject *);
#else
  #define __Pyx_PyType_FromModuleAndSpec(m, s, b)  PyType_FromModuleAndSpec(m, s, b)
  #define __Pyx_PyCMethod  PyCMethod
#endif
#ifndef METH_METHOD
  #define METH_METHOD 0x200
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc)
  #define PyObject_Malloc(s)   PyMem_Malloc(s)
  #define PyObject_Free(p)     PyMem_Free(p)
  #define PyObject_Realloc(p)  PyMem_Realloc(p)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)
#elif CYTHON_COMPILING_IN_GRAAL
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno) _PyFrame_SetLineNumber((frame), (lineno))
#else
  #define __Pyx_PyCode_HasFreeVars(co)  (PyCode_GetNumFree(co) > 0)
  #define __Pyx_PyFrame_SetLineNumber(frame, lineno)  (frame)->f_lineno = (lineno)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyThreadState_Current PyThreadState_Get()
#elif !CYTHON_FAST_THREAD_STATE
  #define __Pyx_PyThreadState_Current PyThreadState_GET()
#elif PY_VERSION_HEX >= 0x030d00A1
  #define __Pyx_PyThreadState_Current PyThreadState_GetUnchecked()
#else
  #define __Pyx_PyThreadState_Current _PyThreadState_UncheckedGet()
#endif
#if CYTHON_USE_MODULE_STATE
static CYTHON_INLINE void *__Pyx__PyModule_GetState(PyObject *op)
{
    void *result;
    result = PyModule_GetState(op);
    if (!result)
        Py_FatalError("Couldn't find the module state");
    return result;
}
#define __Pyx_PyModule_GetState(o) (__pyx_mstatetype *)__Pyx__PyModule_GetState(o)
#else
#define __Pyx_PyModule_GetState(op) ((void)op,__pyx_mstate_global)
#endif
#define __Pyx_PyObject_GetSlot(obj, name, func_ctype)  __Pyx_PyType_GetSlot(Py_TYPE((PyObject *) obj), name, func_ctype)
#define __Pyx_PyObject_TryGetSlot(obj, name, func_ctype) __Pyx_PyType_TryGetSlot(Py_TYPE(obj), name, func_ctype)
#define __Pyx_PyObject_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(Py_TYPE(obj), sub, name, func_ctype)
#define __Pyx_PyObject_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSubSlot(Py_TYPE(obj), sub, name, func_ctype)
#if CYTHON_USE_TYPE_SLOTS
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((type)->name)
  #define __Pyx_PyType_TryGetSlot(type, name, func_ctype) __Pyx_PyType_GetSlot(type, name, func_ctype)
  #define __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype) (((type)->sub) ? ((type)->sub->name) : NULL)
  #define __Pyx_PyType_TryGetSubSlot(type, sub, name, func_ctype) __Pyx_PyType_GetSubSlot(type, sub, name, func_ctype)
#else
  #define __Pyx_PyType_GetSlot(type, name, func_ctype)  ((func_ctype) PyType_GetSlot((type), Py_##name))
  #define __Pyx_PyType_TryGetSlot(type, name, func_ctype)\
    ((__PYX_LIMITED_VERSION_HEX >= 0x030A0000 ||\
     (PyType_GetFlags(type) & Py_TPFLAGS_HEAPTYPE) || __Pyx_get_runtime_version() >= 0x030A0000) ?\
     __Pyx_PyType_GetSlot(type, name, func_ctype) : NULL)
  #define __Pyx_PyType_GetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_GetSlot(obj, name, func_ctype)
  #define __Pyx_PyType_TryGetSubSlot(obj, sub, name, func_ctype) __Pyx_PyType_TryGetSlot(obj, name, func_ctype)
#endif
#if CYTHON_COMPILING_IN_CPYTHON || defined(_PyDict_NewPresized)
#define __Pyx_PyDict_NewPresized(n)  ((n <= 8) ? PyDict_New() : _PyDict_NewPresized(n))
#else
#define __Pyx_PyDict_NewPresized(n)  PyDict_New()
#endif
#define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
#define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_UNICODE_INTERNALS
#define __Pyx_PyDict_GetItemStrWithError(dict, name)  _PyDict_GetItem_KnownHash(dict, name, ((PyASCIIObject *) name)->hash)
static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStr(PyObject *dict, PyObject *name) {
    PyObject *res = __Pyx_PyDict_GetItemStrWithError(dict, name);
    if (res == NULL) PyErr_Clear();
    return res;
}
#elif !CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07020000
#define __Pyx_PyDict_GetItemStrWithError  PyDict_GetItemWithError
#define __Pyx_PyDict_GetItemStr           PyDict_GetItem
#else
static CYTHON_INLINE PyObject * __Pyx_PyDict_GetItemStrWithError(PyObject *dict, PyObject *name) {
#if CYTHON_COMPILING_IN_PYPY
    return PyDict_GetItem(dict, name);
#else
    PyDictEntry *ep;
    PyDictObject *mp = (PyDictObject*) dict;
    long hash = ((PyStringObject *) name)->ob_shash;
    assert(hash != -1);
    ep = (mp->ma_lookup)(mp, name, hash);
    if (ep == NULL) {
        return NULL;
    }
    return ep->me_value;
#endif
}
#define __Pyx_PyDict_GetItemStr           PyDict_GetItem
#endif
#if CYTHON_USE_TYPE_SLOTS
  #define __Pyx_PyType_GetFlags(tp)   (((PyTypeObject *)tp)->tp_flags)
  #define __Pyx_PyType_HasFeature(type, feature)  ((__Pyx_PyType_GetFlags(type) & (feature)) != 0)
#else
  #define __Pyx_PyType_GetFlags(tp)   (PyType_GetFlags((PyTypeObject *)tp))
  #define __Pyx_PyType_HasFeature(type, feature)  PyType_HasFeature(type, feature)
#endif
#define __Pyx_PyObject_GetIterNextFunc(iterator)  __Pyx_PyObject_GetSlot(iterator, tp_iternext, iternextfunc)
#if CYTHON_USE_TYPE_SPECS && PY_VERSION_HEX >= 0x03080000
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  {\
    PyTypeObject *type = Py_TYPE((PyObject*)obj);\
    assert(__Pyx_PyType_HasFeature(type, Py_TPFLAGS_HEAPTYPE));\
    PyObject_GC_Del(obj);\
    Py_DECREF(type);\
}
#else
#define __Pyx_PyHeapTypeObject_GC_Del(obj)  PyObject_GC_Del(obj)
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_ReadChar(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   ((void)u, 1114111U)
  #define __Pyx_PyUnicode_KIND(u)         ((void)u, (0))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)u)
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)k, PyUnicode_ReadChar((PyObject*)(d), i))
  #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GetLength(u))
#else
  #if PY_VERSION_HEX >= 0x030C0000
    #define __Pyx_PyUnicode_READY(op)       (0)
  #else
    #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ?\
                                                0 : _PyUnicode_Ready((PyObject *)(op)))
  #endif
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
  #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u)   PyUnicode_MAX_CHAR_VALUE(u)
  #define __Pyx_PyUnicode_KIND(u)         ((int)PyUnicode_KIND(u))
  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
  #define __Pyx_PyUnicode_WRITE(k, d, i, ch)  PyUnicode_WRITE(k, d, i, (Py_UCS4) ch)
  #if PY_VERSION_HEX >= 0x030C0000
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != PyUnicode_GET_LENGTH(u))
  #else
    #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x03090000
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : ((PyCompactUnicodeObject *)(u))->wstr_length))
    #else
    #define __Pyx_PyUnicode_IS_TRUE(u)      (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))
    #endif
  #endif
#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
  #if !defined(PyUnicode_DecodeUnicodeEscape)
    #define PyUnicode_DecodeUnicodeEscape(s, size, errors)  PyUnicode_Decode(s, size, "unicode_escape", errors)
  #endif
  #if !defined(PyUnicode_Contains)
    #define PyUnicode_Contains(u, s)  PySequence_Contains(u, s)
  #endif
  #if !defined(PyByteArray_Check)
    #define PyByteArray_Check(obj)  PyObject_TypeCheck(obj, &PyByteArray_Type)
  #endif
  #if !defined(PyObject_Format)
    #define PyObject_Format(obj, fmt)  PyObject_CallMethod(obj, "__format__", "O", fmt)
  #endif
#endif
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None || (PyUnicode_Check(b) && !PyUnicode_CheckExact(b)))) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if CYTHON_COMPILING_IN_CPYTHON
  #define __Pyx_PySequence_ListKeepNew(obj)\
    (likely(PyList_CheckExact(obj) && Py_REFCNT(obj) == 1) ? __Pyx_NewRef(obj) : PySequence_List(obj))
#else
  #define __Pyx_PySequence_ListKeepNew(obj)  PySequence_List(obj)
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        __Pyx_IS_TYPE(obj, &PySet_Type)
#endif
#if PY_VERSION_HEX >= 0x030900A4
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_SET_REFCNT(obj, refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SET_SIZE(obj, size)
#else
  #define __Pyx_SET_REFCNT(obj, refcnt) Py_REFCNT(obj) = (refcnt)
  #define __Pyx_SET_SIZE(obj, size) Py_SIZE(obj) = (size)
#endif
#if CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
  #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
    #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i)
  #elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_PyList_GetItemRef(o, i) (likely((i) >= 0) ? PySequence_GetItem(o, i) : (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
  #else
    #define __Pyx_PyList_GetItemRef(o, i) PySequence_ITEM(o, i)
  #endif
#elif CYTHON_COMPILING_IN_LIMITED_API || !CYTHON_ASSUME_SAFE_MACROS
  #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
    #define __Pyx_PyList_GetItemRef(o, i) PyList_GetItemRef(o, i)
  #else
    #define __Pyx_PyList_GetItemRef(o, i) __Pyx_XNewRef(PyList_GetItem(o, i))
  #endif
#else
  #define __Pyx_PyList_GetItemRef(o, i) __Pyx_NewRef(PyList_GET_ITEM(o, i))
#endif
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
#define __Pyx_PyDict_GetItemRef(dict, key, result) PyDict_GetItemRef(dict, key, result)
#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) {
  *result = PyObject_GetItem(dict, key);
  if (*result == NULL) {
    if (PyErr_ExceptionMatches(PyExc_KeyError)) {
      PyErr_Clear();
      return 0;
    }
    return -1;
  }
  return 1;
}
#else
static CYTHON_INLINE int __Pyx_PyDict_GetItemRef(PyObject *dict, PyObject *key, PyObject **result) {
  *result = PyDict_GetItemWithError(dict, key);
  if (*result == NULL) {
    return PyErr_Occurred() ? -1 : 0;
  }
  Py_INCREF(*result);
  return 1;
}
#endif
#if defined(CYTHON_DEBUG_VISIT_CONST) && CYTHON_DEBUG_VISIT_CONST
  #define __Pyx_VISIT_CONST(obj)  Py_VISIT(obj)
#else
  #define __Pyx_VISIT_CONST(obj)
#endif
#if CYTHON_ASSUME_SAFE_MACROS
  #define __Pyx_PySequence_ITEM(o, i) PySequence_ITEM(o, i)
  #define __Pyx_PySequence_SIZE(seq)  Py_SIZE(seq)
  #define __Pyx_PyTuple_SET_ITEM(o, i, v) (PyTuple_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GET_ITEM(o, i)
  #define __Pyx_PyList_SET_ITEM(o, i, v) (PyList_SET_ITEM(o, i, v), (0))
  #define __Pyx_PyList_GET_ITEM(o, i) PyList_GET_ITEM(o, i)
#else
  #define __Pyx_PySequence_ITEM(o, i) PySequence_GetItem(o, i)
  #define __Pyx_PySequence_SIZE(seq)  PySequence_Size(seq)
  #define __Pyx_PyTuple_SET_ITEM(o, i, v) PyTuple_SetItem(o, i, v)
  #define __Pyx_PyTuple_GET_ITEM(o, i) PyTuple_GetItem(o, i)
  #define __Pyx_PyList_SET_ITEM(o, i, v) PyList_SetItem(o, i, v)
  #define __Pyx_PyList_GET_ITEM(o, i) PyList_GetItem(o, i)
#endif
#if CYTHON_ASSUME_SAFE_SIZE
  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_GET_SIZE(o)
  #define __Pyx_PyList_GET_SIZE(o) PyList_GET_SIZE(o)
  #define __Pyx_PySet_GET_SIZE(o) PySet_GET_SIZE(o)
  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_GET_SIZE(o)
  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_GET_SIZE(o)
  #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GET_LENGTH(o)
#else
  #define __Pyx_PyTuple_GET_SIZE(o) PyTuple_Size(o)
  #define __Pyx_PyList_GET_SIZE(o) PyList_Size(o)
  #define __Pyx_PySet_GET_SIZE(o) PySet_Size(o)
  #define __Pyx_PyBytes_GET_SIZE(o) PyBytes_Size(o)
  #define __Pyx_PyByteArray_GET_SIZE(o) PyByteArray_Size(o)
  #define __Pyx_PyUnicode_GET_LENGTH(o) PyUnicode_GetLength(o)
#endif
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
  #define __Pyx_PyImport_AddModuleRef(name) PyImport_AddModuleRef(name)
#else
  static CYTHON_INLINE PyObject *__Pyx_PyImport_AddModuleRef(const char *name) {
      PyObject *module = PyImport_AddModule(name);
      Py_XINCREF(module);
      return module;
  }
#endif
#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_InternFromString)
  #define PyUnicode_InternFromString(s) PyUnicode_FromString(s)
#endif
#define __Pyx_PyLong_FromHash_t PyLong_FromSsize_t
#define __Pyx_PyLong_AsHash_t   __Pyx_PyIndex_AsSsize_t
#if __PYX_LIMITED_VERSION_HEX >= 0x030A0000
    #define __Pyx_PySendResult PySendResult
#else
    typedef enum {
        PYGEN_RETURN = 0,
        PYGEN_ERROR = -1,
        PYGEN_NEXT = 1,
    } __Pyx_PySendResult;
#endif
#if CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX < 0x030A00A3
  typedef __Pyx_PySendResult (*__Pyx_pyiter_sendfunc)(PyObject *iter, PyObject *value, PyObject **result);
#else
  #define __Pyx_pyiter_sendfunc sendfunc
#endif
#if !CYTHON_USE_AM_SEND
#define __PYX_HAS_PY_AM_SEND 0
#elif __PYX_LIMITED_VERSION_HEX >= 0x030A0000
#define __PYX_HAS_PY_AM_SEND 1
#else
#define __PYX_HAS_PY_AM_SEND 2  // our own backported implementation
#endif
#if __PYX_HAS_PY_AM_SEND < 2
    #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods
#else
    typedef struct {
        unaryfunc am_await;
        unaryfunc am_aiter;
        unaryfunc am_anext;
        __Pyx_pyiter_sendfunc am_send;
    } __Pyx_PyAsyncMethodsStruct;
    #define __Pyx_SlotTpAsAsync(s) ((PyAsyncMethods*)(s))
#endif
#if CYTHON_USE_AM_SEND && PY_VERSION_HEX < 0x030A00F0
    #define __Pyx_TPFLAGS_HAVE_AM_SEND (1UL << 21)
#else
    #define __Pyx_TPFLAGS_HAVE_AM_SEND (0)
#endif
#if PY_VERSION_HEX >= 0x03090000
#define __Pyx_PyInterpreterState_Get() PyInterpreterState_Get()
#else
#define __Pyx_PyInterpreterState_Get() PyThreadState_Get()->interp
#endif
#if CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030A0000
#ifdef __cplusplus
extern "C"
#endif
PyAPI_FUNC(void *) PyMem_Calloc(size_t nelem, size_t elsize);
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static int __Pyx_init_co_variable(PyObject *inspect, const char* name, int *write_to) {
    int value;
    PyObject *py_value = PyObject_GetAttrString(inspect, name);
    if (!py_value) return 0;
    value = (int) PyLong_AsLong(py_value);
    Py_DECREF(py_value);
    *write_to = value;
    return value != -1 || !PyErr_Occurred();
}
static int __Pyx_init_co_variables(void) {
    PyObject *inspect;
    int result;
    inspect = PyImport_ImportModule("inspect");
    result =
#if !defined(CO_OPTIMIZED)
        __Pyx_init_co_variable(inspect, "CO_OPTIMIZED", &CO_OPTIMIZED) &&
#endif
#if !defined(CO_NEWLOCALS)
        __Pyx_init_co_variable(inspect, "CO_NEWLOCALS", &CO_NEWLOCALS) &&
#endif
#if !defined(CO_VARARGS)
        __Pyx_init_co_variable(inspect, "CO_VARARGS", &CO_VARARGS) &&
#endif
#if !defined(CO_VARKEYWORDS)
        __Pyx_init_co_variable(inspect, "CO_VARKEYWORDS", &CO_VARKEYWORDS) &&
#endif
#if !defined(CO_ASYNC_GENERATOR)
        __Pyx_init_co_variable(inspect, "CO_ASYNC_GENERATOR", &CO_ASYNC_GENERATOR) &&
#endif
#if !defined(CO_GENERATOR)
        __Pyx_init_co_variable(inspect, "CO_GENERATOR", &CO_GENERATOR) &&
#endif
#if !defined(CO_COROUTINE)
        __Pyx_init_co_variable(inspect, "CO_COROUTINE", &CO_COROUTINE) &&
#endif
        1;
    Py_DECREF(inspect);
    return result ? 0 : -1;
}
#else
static int __Pyx_init_co_variables(void) {
    return 0;  // It's a limited API-only feature
}
#endif

/* MathInitCode */
#if defined(_WIN32) || defined(WIN32) || defined(MS_WINDOWS)
  #ifndef _USE_MATH_DEFINES
    #define _USE_MATH_DEFINES
  #endif
#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 defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)
#define __Pyx_truncl trunc
#else
#define __Pyx_truncl truncl
#endif

#ifndef CYTHON_CLINE_IN_TRACEBACK_RUNTIME
#define CYTHON_CLINE_IN_TRACEBACK_RUNTIME 0
#endif
#ifndef CYTHON_CLINE_IN_TRACEBACK
#define CYTHON_CLINE_IN_TRACEBACK CYTHON_CLINE_IN_TRACEBACK_RUNTIME
#endif
#if CYTHON_CLINE_IN_TRACEBACK
#define __PYX_MARK_ERR_POS(f_index, lineno)  { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; __pyx_clineno = __LINE__; (void) __pyx_clineno; }
#else
#define __PYX_MARK_ERR_POS(f_index, lineno)  { __pyx_filename = __pyx_f[f_index]; (void) __pyx_filename; __pyx_lineno = lineno; (void) __pyx_lineno; (void) __pyx_clineno; }
#endif
#define __PYX_ERR(f_index, lineno, Ln_error) \
    { __PYX_MARK_ERR_POS(f_index, lineno) goto Ln_error; }

#ifdef CYTHON_EXTERN_C
    #undef __PYX_EXTERN_C
    #define __PYX_EXTERN_C CYTHON_EXTERN_C
#elif defined(__PYX_EXTERN_C)
    #ifdef _MSC_VER
    #pragma message ("Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.")
    #else
    #warning Please do not define the '__PYX_EXTERN_C' macro externally. Use 'CYTHON_EXTERN_C' instead.
    #endif
#else
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#define __PYX_HAVE__scamper
#define __PYX_HAVE_API__scamper
/* Early includes */
#include <stdint.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/types.h>
#include <signal.h>
#include <sys/time.h>
#include "scamper_addr.h"
#include "scamper_list.h"
#include "scamper_file.h"
#include "scamper_icmpext.h"
#include "scamper_trace.h"
#include "scamper_ping.h"
#include "scamper_tracelb.h"
#include "scamper_dealias.h"
#include "scamper_neighbourdisc.h"
#include "scamper_tbit.h"
#include "scamper_sting.h"
#include "scamper_sniff.h"
#include "scamper_host.h"
#include "scamper_http.h"
#include "scamper_udpprobe.h"
#include "libscamperctrl.h"
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#if defined(PYREX_WITHOUT_ASSERTIONS) && !defined(CYTHON_WITHOUT_ASSERTIONS)
#define CYTHON_WITHOUT_ASSERTIONS
#endif

#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 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)))  )
static CYTHON_INLINE int __Pyx_is_valid_index(Py_ssize_t i, Py_ssize_t limit) {
    return (size_t) i < (size_t) limit;
}
#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)
    #define __Pyx_sst_abs(value) ((Py_ssize_t)_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 Py_ssize_t __Pyx_ssize_strlen(const char *s);
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char*);
#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 CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AS_STRING(s))
    #define __Pyx_PyByteArray_AsString(s) PyByteArray_AS_STRING(s)
#else
    #define __Pyx_PyBytes_AsWritableString(s)     ((char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsWritableSString(s)    ((signed char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsWritableUString(s)    ((unsigned char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsString(s)     ((const char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsSString(s)    ((const signed char*) PyBytes_AsString(s))
    #define __Pyx_PyBytes_AsUString(s)    ((const unsigned char*) PyBytes_AsString(s))
    #define __Pyx_PyByteArray_AsString(s) PyByteArray_AsString(s)
#endif
#define __Pyx_PyObject_AsWritableString(s)    ((char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableSString(s)    ((signed char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsWritableUString(s)    ((unsigned char*)(__pyx_uintptr_t) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsSString(s)    ((const signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((const 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_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)
#define __Pyx_PyUnicode_FromOrdinal(o)       PyUnicode_FromOrdinal((int)o)
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
static CYTHON_INLINE PyObject *__Pyx_NewRef(PyObject *obj) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_NewRef)
    return Py_NewRef(obj);
#else
    Py_INCREF(obj);
    return obj;
#endif
}
static CYTHON_INLINE PyObject *__Pyx_XNewRef(PyObject *obj) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030a0000 || defined(Py_XNewRef)
    return Py_XNewRef(obj);
#else
    Py_XINCREF(obj);
    return obj;
#endif
}
static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b);
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b);
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE int __Pyx_PyObject_IsTrueAndDecref(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x);
#define __Pyx_PySequence_Tuple(obj)\
    (likely(PyTuple_CheckExact(obj)) ? __Pyx_NewRef(obj) : PySequence_Tuple(obj))
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t);
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject*);
#if CYTHON_ASSUME_SAFE_MACROS
#define __Pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AS_DOUBLE(x)
#else
#define __Pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#define __Pyx_PyFloat_AS_DOUBLE(x) PyFloat_AsDouble(x)
#endif
#define __Pyx_PyFloat_AsFloat(x) ((float) __Pyx_PyFloat_AsDouble(x))
#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))
#if CYTHON_USE_PYLONG_INTERNALS
  #if PY_VERSION_HEX >= 0x030C00A7
  #ifndef _PyLong_SIGN_MASK
    #define _PyLong_SIGN_MASK 3
  #endif
  #ifndef _PyLong_NON_SIZE_BITS
    #define _PyLong_NON_SIZE_BITS 3
  #endif
  #define __Pyx_PyLong_Sign(x)  (((PyLongObject*)x)->long_value.lv_tag & _PyLong_SIGN_MASK)
  #define __Pyx_PyLong_IsNeg(x)  ((__Pyx_PyLong_Sign(x) & 2) != 0)
  #define __Pyx_PyLong_IsNonNeg(x)  (!__Pyx_PyLong_IsNeg(x))
  #define __Pyx_PyLong_IsZero(x)  (__Pyx_PyLong_Sign(x) & 1)
  #define __Pyx_PyLong_IsPos(x)  (__Pyx_PyLong_Sign(x) == 0)
  #define __Pyx_PyLong_CompactValueUnsigned(x)  (__Pyx_PyLong_Digits(x)[0])
  #define __Pyx_PyLong_DigitCount(x)  ((Py_ssize_t) (((PyLongObject*)x)->long_value.lv_tag >> _PyLong_NON_SIZE_BITS))
  #define __Pyx_PyLong_SignedDigitCount(x)\
        ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * __Pyx_PyLong_DigitCount(x))
  #if defined(PyUnstable_Long_IsCompact) && defined(PyUnstable_Long_CompactValue)
    #define __Pyx_PyLong_IsCompact(x)     PyUnstable_Long_IsCompact((PyLongObject*) x)
    #define __Pyx_PyLong_CompactValue(x)  PyUnstable_Long_CompactValue((PyLongObject*) x)
  #else
    #define __Pyx_PyLong_IsCompact(x)     (((PyLongObject*)x)->long_value.lv_tag < (2 << _PyLong_NON_SIZE_BITS))
    #define __Pyx_PyLong_CompactValue(x)  ((1 - (Py_ssize_t) __Pyx_PyLong_Sign(x)) * (Py_ssize_t) __Pyx_PyLong_Digits(x)[0])
  #endif
  typedef Py_ssize_t  __Pyx_compact_pylong;
  typedef size_t  __Pyx_compact_upylong;
  #else
  #define __Pyx_PyLong_IsNeg(x)  (Py_SIZE(x) < 0)
  #define __Pyx_PyLong_IsNonNeg(x)  (Py_SIZE(x) >= 0)
  #define __Pyx_PyLong_IsZero(x)  (Py_SIZE(x) == 0)
  #define __Pyx_PyLong_IsPos(x)  (Py_SIZE(x) > 0)
  #define __Pyx_PyLong_CompactValueUnsigned(x)  ((Py_SIZE(x) == 0) ? 0 : __Pyx_PyLong_Digits(x)[0])
  #define __Pyx_PyLong_DigitCount(x)  __Pyx_sst_abs(Py_SIZE(x))
  #define __Pyx_PyLong_SignedDigitCount(x)  Py_SIZE(x)
  #define __Pyx_PyLong_IsCompact(x)  (Py_SIZE(x) == 0 || Py_SIZE(x) == 1 || Py_SIZE(x) == -1)
  #define __Pyx_PyLong_CompactValue(x)\
        ((Py_SIZE(x) == 0) ? (sdigit) 0 : ((Py_SIZE(x) < 0) ? -(sdigit)__Pyx_PyLong_Digits(x)[0] : (sdigit)__Pyx_PyLong_Digits(x)[0]))
  typedef sdigit  __Pyx_compact_pylong;
  typedef digit  __Pyx_compact_upylong;
  #endif
  #if PY_VERSION_HEX >= 0x030C00A5
  #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->long_value.ob_digit)
  #else
  #define __Pyx_PyLong_Digits(x)  (((PyLongObject*)x)->ob_digit)
  #endif
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_UTF8
  #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#elif __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
  #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeASCII(c_str, size, NULL)
#else
  #define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#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__ */
/* PretendToInitialize */
#ifdef __cplusplus
#if __cplusplus > 201103L
#include <type_traits>
#endif
template <typename T>
static void __Pyx_pretend_to_initialize(T* ptr) {
#if __cplusplus > 201103L
    if ((std::is_trivially_default_constructible<T>::value))
#endif
        *ptr = T();
    (void)ptr;
}
#else
static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }
#endif


#if !CYTHON_USE_MODULE_STATE
static PyObject *__pyx_m = NULL;
#endif
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * const __pyx_cfilenm = __FILE__;
static const char *__pyx_filename;

/* #### Code section: filename_table ### */

static const char* const __pyx_f[] = {
  "lib/python/scamper.pyx",
  "<stringsource>",
  "cpython/type.pxd",
};
/* #### Code section: utility_code_proto_before_types ### */
/* Atomics.proto */
#include <pythread.h>
#ifndef CYTHON_ATOMICS
    #define CYTHON_ATOMICS 1
#endif
#define __PYX_CYTHON_ATOMICS_ENABLED() CYTHON_ATOMICS
#define __PYX_GET_CYTHON_COMPILING_IN_CPYTHON_FREETHREADING() CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#define __pyx_atomic_int_type int
#define __pyx_nonatomic_int_type int
#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\
                        (__STDC_VERSION__ >= 201112L) &&\
                        !defined(__STDC_NO_ATOMICS__))
    #include <stdatomic.h>
#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\
                    (__cplusplus >= 201103L) ||\
                    (defined(_MSC_VER) && _MSC_VER >= 1700)))
    #include <atomic>
#endif
#if CYTHON_ATOMICS && (defined(__STDC_VERSION__) &&\
                        (__STDC_VERSION__ >= 201112L) &&\
                        !defined(__STDC_NO_ATOMICS__) &&\
                       ATOMIC_INT_LOCK_FREE == 2)
    #undef __pyx_atomic_int_type
    #define __pyx_atomic_int_type atomic_int
    #define __pyx_atomic_ptr_type atomic_uintptr_t
    #define __pyx_nonatomic_ptr_type uintptr_t
    #define __pyx_atomic_incr_relaxed(value) atomic_fetch_add_explicit(value, 1, memory_order_relaxed)
    #define __pyx_atomic_incr_acq_rel(value) atomic_fetch_add_explicit(value, 1, memory_order_acq_rel)
    #define __pyx_atomic_decr_acq_rel(value) atomic_fetch_sub_explicit(value, 1, memory_order_acq_rel)
    #define __pyx_atomic_sub(value, arg) atomic_fetch_sub(value, arg)
    #define __pyx_atomic_int_cmp_exchange(value, expected, desired) atomic_compare_exchange_strong(value, expected, desired)
    #define __pyx_atomic_load(value) atomic_load(value)
    #define __pyx_atomic_store(value, new_value) atomic_store(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) atomic_load_explicit(value, memory_order_relaxed)
    #define __pyx_atomic_pointer_load_acquire(value) atomic_load_explicit(value, memory_order_acquire)
    #define __pyx_atomic_pointer_exchange(value, new_value) atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value)
    #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER)
        #pragma message ("Using standard C atomics")
    #elif defined(__PYX_DEBUG_ATOMICS)
        #warning "Using standard C atomics"
    #endif
#elif CYTHON_ATOMICS && (defined(__cplusplus) && (\
                    (__cplusplus >= 201103L) ||\
\
                    (defined(_MSC_VER) && _MSC_VER >= 1700)) &&\
                    ATOMIC_INT_LOCK_FREE == 2)
    #undef __pyx_atomic_int_type
    #define __pyx_atomic_int_type std::atomic_int
    #define __pyx_atomic_ptr_type std::atomic_uintptr_t
    #define __pyx_nonatomic_ptr_type uintptr_t
    #define __pyx_atomic_incr_relaxed(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_relaxed)
    #define __pyx_atomic_incr_acq_rel(value) std::atomic_fetch_add_explicit(value, 1, std::memory_order_acq_rel)
    #define __pyx_atomic_decr_acq_rel(value) std::atomic_fetch_sub_explicit(value, 1, std::memory_order_acq_rel)
    #define __pyx_atomic_sub(value, arg) std::atomic_fetch_sub(value, arg)
    #define __pyx_atomic_int_cmp_exchange(value, expected, desired) std::atomic_compare_exchange_strong(value, expected, desired)
    #define __pyx_atomic_load(value) std::atomic_load(value)
    #define __pyx_atomic_store(value, new_value) std::atomic_store(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) std::atomic_load_explicit(value, std::memory_order_relaxed)
    #define __pyx_atomic_pointer_load_acquire(value) std::atomic_load_explicit(value, std::memory_order_acquire)
    #define __pyx_atomic_pointer_exchange(value, new_value) std::atomic_exchange(value, (__pyx_nonatomic_ptr_type)new_value)
    #if defined(__PYX_DEBUG_ATOMICS) && defined(_MSC_VER)
        #pragma message ("Using standard C++ atomics")
    #elif defined(__PYX_DEBUG_ATOMICS)
        #warning "Using standard C++ atomics"
    #endif
#elif CYTHON_ATOMICS && (__GNUC__ >= 5 || (__GNUC__ == 4 &&\
                    (__GNUC_MINOR__ > 1 ||\
                    (__GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ >= 2))))
    #define __pyx_atomic_ptr_type void*
    #define __pyx_atomic_incr_relaxed(value) __sync_fetch_and_add(value, 1)
    #define __pyx_atomic_incr_acq_rel(value) __sync_fetch_and_add(value, 1)
    #define __pyx_atomic_decr_acq_rel(value) __sync_fetch_and_sub(value, 1)
    #define __pyx_atomic_sub(value, arg) __sync_fetch_and_sub(value, arg)
    static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) {
        __pyx_nonatomic_int_type old = __sync_val_compare_and_swap(value, *expected, desired);
        int result = old == *expected;
        *expected = old;
        return result;
    }
    #define __pyx_atomic_load(value) __sync_fetch_and_add(value, 0)
    #define __pyx_atomic_store(value, new_value) __sync_lock_test_and_set(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) __sync_fetch_and_add(value, 0)
    #define __pyx_atomic_pointer_load_acquire(value) __sync_fetch_and_add(value, 0)
    #define __pyx_atomic_pointer_exchange(value, new_value) __sync_lock_test_and_set(value, (__pyx_atomic_ptr_type)new_value)
    #ifdef __PYX_DEBUG_ATOMICS
        #warning "Using GNU atomics"
    #endif
#elif CYTHON_ATOMICS && defined(_MSC_VER)
    #include <intrin.h>
    #undef __pyx_atomic_int_type
    #define __pyx_atomic_int_type long
    #define __pyx_atomic_ptr_type void*
    #undef __pyx_nonatomic_int_type
    #define __pyx_nonatomic_int_type long
    #pragma intrinsic (_InterlockedExchangeAdd, _InterlockedExchange, _InterlockedCompareExchange, _InterlockedCompareExchangePointer, _InterlockedExchangePointer)
    #define __pyx_atomic_incr_relaxed(value) _InterlockedExchangeAdd(value, 1)
    #define __pyx_atomic_incr_acq_rel(value) _InterlockedExchangeAdd(value, 1)
    #define __pyx_atomic_decr_acq_rel(value) _InterlockedExchangeAdd(value, -1)
    #define __pyx_atomic_sub(value, arg) _InterlockedExchangeAdd(value, -arg)
    static CYTHON_INLINE int __pyx_atomic_int_cmp_exchange(__pyx_atomic_int_type* value, __pyx_nonatomic_int_type* expected, __pyx_nonatomic_int_type desired) {
        __pyx_nonatomic_int_type old = _InterlockedCompareExchange(value, desired, *expected);
        int result = old == *expected;
        *expected = old;
        return result;
    }
    #define __pyx_atomic_load(value) _InterlockedExchangeAdd(value, 0)
    #define __pyx_atomic_store(value, new_value) _InterlockedExchange(value, new_value)
    #define __pyx_atomic_pointer_load_relaxed(value) *(void * volatile *)value
    #define __pyx_atomic_pointer_load_acquire(value) _InterlockedCompareExchangePointer(value, 0, 0)
    #define __pyx_atomic_pointer_exchange(value, new_value) _InterlockedExchangePointer(value, (__pyx_atomic_ptr_type)new_value)
    #ifdef __PYX_DEBUG_ATOMICS
        #pragma message ("Using MSVC atomics")
    #endif
#else
    #undef CYTHON_ATOMICS
    #define CYTHON_ATOMICS 0
    #ifdef __PYX_DEBUG_ATOMICS
        #warning "Not using atomics"
    #endif
#endif
#if CYTHON_ATOMICS
    #define __pyx_add_acquisition_count(memview)\
             __pyx_atomic_incr_relaxed(__pyx_get_slice_count_pointer(memview))
    #define __pyx_sub_acquisition_count(memview)\
            __pyx_atomic_decr_acq_rel(__pyx_get_slice_count_pointer(memview))
#else
    #define __pyx_add_acquisition_count(memview)\
            __pyx_add_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock)
    #define __pyx_sub_acquisition_count(memview)\
            __pyx_sub_acquisition_count_locked(__pyx_get_slice_count_pointer(memview), memview->lock)
#endif

/* IncludeStructmemberH.proto */
#include <structmember.h>

/* CriticalSections.proto */
#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
#define __Pyx_PyCriticalSection void*
#define __Pyx_PyCriticalSection2 void*
#define __Pyx_PyCriticalSection_Begin1(cs, arg) (void)cs
#define __Pyx_PyCriticalSection_Begin2(cs, arg1, arg2) (void)cs
#define __Pyx_PyCriticalSection_End1(cs)
#define __Pyx_PyCriticalSection_End2(cs)
#else
#define __Pyx_PyCriticalSection PyCriticalSection
#define __Pyx_PyCriticalSection2 PyCriticalSection2
#define __Pyx_PyCriticalSection_Begin1 PyCriticalSection_Begin
#define __Pyx_PyCriticalSection_Begin2 PyCriticalSection2_Begin
#define __Pyx_PyCriticalSection_End1 PyCriticalSection_End
#define __Pyx_PyCriticalSection_End2 PyCriticalSection2_End
#endif
#if PY_VERSION_HEX < 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_BEGIN_CRITICAL_SECTION(o) {
#define __Pyx_END_CRITICAL_SECTION() }
#else
#define __Pyx_BEGIN_CRITICAL_SECTION Py_BEGIN_CRITICAL_SECTION
#define __Pyx_END_CRITICAL_SECTION Py_END_CRITICAL_SECTION
#endif

/* #### Code section: numeric_typedefs ### */
/* #### Code section: complex_type_declarations ### */
/* #### Code section: type_declarations ### */

/*--- Type declarations ---*/
struct __pyx_obj_7scamper_ScamperAddr;
struct __pyx_obj_7scamper_ScamperList;
struct __pyx_obj_7scamper_ScamperCycle;
struct __pyx_obj_7scamper_ScamperIcmpExt;
struct __pyx_obj_7scamper_ScamperIcmpExts;
struct __pyx_obj_7scamper_ScamperTraceHop;
struct __pyx_obj_7scamper_ScamperTracePmtudNote;
struct __pyx_obj_7scamper_ScamperTracePmtud;
struct __pyx_obj_7scamper_ScamperTrace;
struct __pyx_obj_7scamper_ScamperPingReply;
struct __pyx_obj_7scamper_ScamperPing;
struct __pyx_obj_7scamper_ScamperTracelbReply;
struct __pyx_obj_7scamper_ScamperTracelbProbe;
struct __pyx_obj_7scamper_ScamperTracelbProbeset;
struct __pyx_obj_7scamper_ScamperTracelbNode;
struct __pyx_obj_7scamper_ScamperTracelbLink;
struct __pyx_obj_7scamper_ScamperTracelb;
struct __pyx_obj_7scamper_ScamperDealiasReply;
struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound;
struct __pyx_obj_7scamper_ScamperDealiasProbedef;
struct __pyx_obj_7scamper_ScamperDealiasProbe;
struct __pyx_obj_7scamper_ScamperDealias;
struct __pyx_obj_7scamper_ScamperNeighbourdisc;
struct __pyx_obj_7scamper_ScamperTbitPkt;
struct __pyx_obj_7scamper_ScamperTbit;
struct __pyx_obj_7scamper_ScamperSting;
struct __pyx_obj_7scamper_ScamperSniffPkt;
struct __pyx_obj_7scamper_ScamperSniff;
struct __pyx_obj_7scamper_ScamperHostMX;
struct __pyx_obj_7scamper_ScamperHostSOA;
struct __pyx_obj_7scamper_ScamperHostTXT;
struct __pyx_obj_7scamper_ScamperHostOPTElem;
struct __pyx_obj_7scamper_ScamperHostOPT;
struct __pyx_obj_7scamper_ScamperHostSVCBParam;
struct __pyx_obj_7scamper_ScamperHostSVCB;
struct __pyx_obj_7scamper_ScamperHostRR;
struct __pyx_obj_7scamper_ScamperHostQuery;
struct __pyx_obj_7scamper_ScamperHost;
struct __pyx_obj_7scamper_ScamperHttpBuf;
struct __pyx_obj_7scamper_ScamperHttp;
struct __pyx_obj_7scamper_ScamperUdpprobeReply;
struct __pyx_obj_7scamper_ScamperUdpprobeProbe;
struct __pyx_obj_7scamper_ScamperUdpprobe;
struct __pyx_obj_7scamper_ScamperFile;
struct __pyx_obj_7scamper_ScamperCtrl;
struct __pyx_obj_7scamper_ScamperMux;
struct __pyx_obj_7scamper_ScamperVp;
struct __pyx_obj_7scamper_ScamperInst;
struct __pyx_obj_7scamper_ScamperTask;
struct __pyx_obj_7scamper___pyx_scope_struct__notes;
struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions;
struct __pyx_obj_7scamper___pyx_scope_struct_2_responses;
struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace;
struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr;
struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb;
struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr;
struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping;
struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr;
struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr;
struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally;
struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr;
struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan;
struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr;

/* "scamper.pyx":384
 * ####
 * 
 * cdef class ScamperAddr:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperAddr` is used by scamper to store and interpret different
*/
struct __pyx_obj_7scamper_ScamperAddr {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperAddr *__pyx_vtab;
  scamper_addr_t *_c;
};


/* "scamper.pyx":571
 * #### Scamper List Object
 * ####
 * cdef class ScamperList:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperList` is used by scamper to attach common meta-data to
*/
struct __pyx_obj_7scamper_ScamperList {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperList *__pyx_vtab;
  scamper_list_t *_c;
};


/* "scamper.pyx":674
 * #### Scamper Cycle Object
 * ####
 * cdef class ScamperCycle:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperCycle` is used by scamper to attach common meta-data to
*/
struct __pyx_obj_7scamper_ScamperCycle {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperCycle *__pyx_vtab;
  scamper_cycle_t *_c;
  uint16_t _type;
};


/* "scamper.pyx":861
 *         raise StopIteration
 * 
 * cdef class ScamperIcmpExt:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperIcmpExt` is used by scamper to store information for
*/
struct __pyx_obj_7scamper_ScamperIcmpExt {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperIcmpExt *__pyx_vtab;
  scamper_icmpext_t *_c;
};


/* "scamper.pyx":1027
 *         raise StopIteration
 * 
 * cdef class ScamperIcmpExts:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperIcmpExts` is used by scamper to store information from
*/
struct __pyx_obj_7scamper_ScamperIcmpExts {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperIcmpExts *__pyx_vtab;
  scamper_icmpexts_t *_c;
};


/* "scamper.pyx":1108
 * ####
 * 
 * cdef class ScamperTraceHop:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTraceHop` is used by scamper to store information about a
*/
struct __pyx_obj_7scamper_ScamperTraceHop {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTraceHop *__pyx_vtab;
  scamper_trace_probe_t *_p;
  scamper_trace_reply_t *_r;
  uint32_t _t_flags;
};


/* "scamper.pyx":1525
 *         raise StopIteration
 * 
 * cdef class ScamperTracePmtudNote:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracePmtudNote` is used by scamper to store information
*/
struct __pyx_obj_7scamper_ScamperTracePmtudNote {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTracePmtudNote *__pyx_vtab;
  scamper_trace_pmtud_note_t *_c;
  uint32_t _t_flags;
  uint8_t _dist;
};


/* "scamper.pyx":1600
 *         return ScamperTraceHop.from_ptr(probe, reply, self._t_flags)
 * 
 * cdef class ScamperTracePmtud:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracePmtud` is used by scamper to store results from
*/
struct __pyx_obj_7scamper_ScamperTracePmtud {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTracePmtud *__pyx_vtab;
  scamper_trace_pmtud_t *_c;
  struct __pyx_obj_7scamper_ScamperTrace *_trace;
};


/* "scamper.pyx":1681
 *         cscamper_trace.scamper_trace_pmtud_noteiter_free(nit)
 * 
 * cdef class ScamperTrace:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTrace` is used by scamper to store results from a traceroute
*/
struct __pyx_obj_7scamper_ScamperTrace {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTrace *__pyx_vtab;
  scamper_trace_t *_c;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
};


/* "scamper.pyx":2283
 * ####
 * 
 * cdef class ScamperPingReply:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperPingReply` is used by scamper to store and interpret
*/
struct __pyx_obj_7scamper_ScamperPingReply {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperPingReply *__pyx_vtab;
  scamper_ping_probe_t *_p;
  scamper_ping_reply_t *_r;
  int _fdst;
};


/* "scamper.pyx":2636
 *         raise StopIteration
 * 
 * cdef class ScamperPing:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperPing` is used by scamper to store results from a ping
*/
struct __pyx_obj_7scamper_ScamperPing {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperPing *__pyx_vtab;
  scamper_ping_t *_c;
  scamper_ping_stats_t *_c_s;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
};


/* "scamper.pyx":3232
 *         raise StopIteration
 * 
 * cdef class ScamperTracelbReply:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelbReply` is used by scamper to store information
*/
struct __pyx_obj_7scamper_ScamperTracelbReply {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTracelbReply *__pyx_vtab;
  scamper_tracelb_reply_t *_c;
};


/* "scamper.pyx":3382
 *         return ScamperIcmpExts.from_ptr(c)
 * 
 * cdef class ScamperTracelbProbe:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelbProbe` is used by scamper to store information
*/
struct __pyx_obj_7scamper_ScamperTracelbProbe {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTracelbProbe *__pyx_vtab;
  scamper_tracelb_probe_t *_c;
};


/* "scamper.pyx":3480
 *         return ScamperTracelbReply.from_ptr(c)
 * 
 * cdef class ScamperTracelbProbeset:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelbProbeset` is used by scamper to store information
*/
struct __pyx_obj_7scamper_ScamperTracelbProbeset {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTracelbProbeset *__pyx_vtab;
  scamper_tracelb_probeset_t *_c;
  uint16_t _i;
  uint16_t _probec;
};


/* "scamper.pyx":3539
 *         return ScamperTracelbProbe.from_ptr(c)
 * 
 * cdef class ScamperTracelbNode:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelbNode` is used by scamper to store information
*/
struct __pyx_obj_7scamper_ScamperTracelbNode {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTracelbNode *__pyx_vtab;
  scamper_tracelb_node_t *_c;
};


/* "scamper.pyx":3624
 *         return _ScamperTracelbLinkIterator(self)
 * 
 * cdef class ScamperTracelbLink:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelbNode` is used by scamper to store information
*/
struct __pyx_obj_7scamper_ScamperTracelbLink {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTracelbLink *__pyx_vtab;
  scamper_tracelb_link_t *_c;
};


/* "scamper.pyx":3730
 *         return ScamperTracelbProbeset.from_ptr(c)
 * 
 * cdef class ScamperTracelb:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelb` is used by scamper to store results from a
*/
struct __pyx_obj_7scamper_ScamperTracelb {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTracelb *__pyx_vtab;
  scamper_tracelb_t *_c;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
};


/* "scamper.pyx":4107
 * ####
 * 
 * cdef class ScamperDealiasReply:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperDealiasReply` object stores information for
*/
struct __pyx_obj_7scamper_ScamperDealiasReply {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperDealiasReply *__pyx_vtab;
  scamper_dealias_reply_t *_c;
  int _fromdst;
};


/* "scamper.pyx":4305
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp_unreach_port(self._c)
 * 
 * cdef class ScamperDealiasMidardiscRound:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperDealiasMidardiscRound` object stores information about
*/
struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound {
  PyObject_HEAD
  scamper_dealias_midardisc_round_t *_c;
};


/* "scamper.pyx":4384
 *         return cscamper_dealias.scamper_dealias_midardisc_round_end_get(self._c)
 * 
 * cdef class ScamperDealiasProbedef:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperDealiasProbedef` object stores information for a set of
*/
struct __pyx_obj_7scamper_ScamperDealiasProbedef {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperDealiasProbedef *__pyx_vtab;
  scamper_dealias_probedef_t *_c;
};


/* "scamper.pyx":4759
 *         raise StopIteration
 * 
 * cdef class ScamperDealiasProbe:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperDealiasProbe` object stores information about an
*/
struct __pyx_obj_7scamper_ScamperDealiasProbe {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperDealiasProbe *__pyx_vtab;
  scamper_dealias_probe_t *_c;
};


/* "scamper.pyx":4886
 *         raise StopIteration
 * 
 * cdef class ScamperDealias:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperDealias` object stores results from an alias resolution
*/
struct __pyx_obj_7scamper_ScamperDealias {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperDealias *__pyx_vtab;
  scamper_dealias_t *_c;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
};


/* "scamper.pyx":5348
 * #### Scamper Neighbourdisc Object
 * ####
 * cdef class ScamperNeighbourdisc:             # <<<<<<<<<<<<<<
 *     cdef cscamper_neighbourdisc.scamper_neighbourdisc_t *_c
 *     cdef public ScamperInst _inst
*/
struct __pyx_obj_7scamper_ScamperNeighbourdisc {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperNeighbourdisc *__pyx_vtab;
  scamper_neighbourdisc_t *_c;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
};


/* "scamper.pyx":5396
 * ####
 * 
 * cdef class ScamperTbitPkt:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTbitPkt` is used by scamper to store information about
*/
struct __pyx_obj_7scamper_ScamperTbitPkt {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTbitPkt *__pyx_vtab;
  scamper_tbit_pkt_t *_c;
};


/* "scamper.pyx":5470
 *         return ptr[:s]
 * 
 * cdef class ScamperTbit:             # <<<<<<<<<<<<<<
 *     cdef cscamper_tbit.scamper_tbit_t *_c
 *     cdef uint32_t _i, _pktc
*/
struct __pyx_obj_7scamper_ScamperTbit {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTbit *__pyx_vtab;
  scamper_tbit_t *_c;
  uint32_t _i;
  uint32_t _pktc;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
};


/* "scamper.pyx":5653
 * ####
 * 
 * cdef class ScamperSting:             # <<<<<<<<<<<<<<
 *     cdef cscamper_sting.scamper_sting_t *_c
 *     cdef public ScamperInst _inst
*/
struct __pyx_obj_7scamper_ScamperSting {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperSting *__pyx_vtab;
  scamper_sting_t *_c;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
};


/* "scamper.pyx":5685
 * ####
 * 
 * cdef class ScamperSniffPkt:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperSniffPkt` is used by scamper to store information about
*/
struct __pyx_obj_7scamper_ScamperSniffPkt {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperSniffPkt *__pyx_vtab;
  scamper_sniff_pkt_t *_c;
};


/* "scamper.pyx":5735
 *         return data[:length]
 * 
 * cdef class ScamperSniff:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperSniff` is used by scamper to store information about
*/
struct __pyx_obj_7scamper_ScamperSniff {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperSniff *__pyx_vtab;
  scamper_sniff_t *_c;
  uint32_t _i;
  uint32_t _pktc;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
};


/* "scamper.pyx":5928
 * ####
 * 
 * cdef class ScamperHostMX:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostMX` object stores fields from the MX resource record.
*/
struct __pyx_obj_7scamper_ScamperHostMX {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHostMX *__pyx_vtab;
  scamper_host_rr_mx_t *_c;
};


/* "scamper.pyx":5975
 *         return mx_exch.decode('UTF-8', 'strict')
 * 
 * cdef class ScamperHostSOA:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostSOA` object stores fields from the SOA resource
*/
struct __pyx_obj_7scamper_ScamperHostSOA {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHostSOA *__pyx_vtab;
  scamper_host_rr_soa_t *_c;
};


/* "scamper.pyx":6086
 *         return cscamper_host.scamper_host_rr_soa_minimum_get(self._c)
 * 
 * cdef class ScamperHostTXT:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostTXT` object stores fields from the TXT resource
*/
struct __pyx_obj_7scamper_ScamperHostTXT {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHostTXT *__pyx_vtab;
  scamper_host_rr_txt_t *_c;
  uint16_t _i;
};


/* "scamper.pyx":6146
 *         return txt.decode('UTF-8', 'strict')
 * 
 * cdef class ScamperHostOPTElem:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostOPTElem` object stores an element from the OPT
*/
struct __pyx_obj_7scamper_ScamperHostOPTElem {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHostOPTElem *__pyx_vtab;
  scamper_host_rr_opt_elem_t *_c;
};


/* "scamper.pyx":6210
 *         return data[:length]
 * 
 * cdef class ScamperHostOPT:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostOPT` object stores fields from the OPT resource
*/
struct __pyx_obj_7scamper_ScamperHostOPT {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHostOPT *__pyx_vtab;
  scamper_host_rr_opt_t *_c;
  uint16_t _i;
  uint16_t _elemc;
};


/* "scamper.pyx":6273
 *         return ScamperHostOPTElem.from_ptr(elem)
 * 
 * cdef class ScamperHostSVCBParam:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHosSVCBParam` object stores an element from the SVCB
*/
struct __pyx_obj_7scamper_ScamperHostSVCBParam {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHostSVCBParam *__pyx_vtab;
  scamper_host_rr_svcb_param_t *_c;
};


/* "scamper.pyx":6337
 *         return val[:length]
 * 
 * cdef class ScamperHostSVCB:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostSVCB` object stores fields from the SVCB resource
*/
struct __pyx_obj_7scamper_ScamperHostSVCB {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHostSVCB *__pyx_vtab;
  scamper_host_rr_svcb_t *_c;
  uint16_t _i;
  uint16_t _paramc;
};


/* "scamper.pyx":6423
 *         return ScamperHostSVCBParam.from_ptr(p)
 * 
 * cdef class ScamperHostRR:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostRR` object stores fields from a DNS resource record.
*/
struct __pyx_obj_7scamper_ScamperHostRR {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHostRR *__pyx_vtab;
  scamper_host_rr_t *_c;
};


/* "scamper.pyx":6773
 *         raise StopIteration
 * 
 * cdef class ScamperHostQuery:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostQuery` object stores information about a DNS query.
*/
struct __pyx_obj_7scamper_ScamperHostQuery {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHostQuery *__pyx_vtab;
  scamper_host_query_t *_c;
};


/* "scamper.pyx":7029
 *         return False
 * 
 * cdef class ScamperHost:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperHost` is used by scamper to store results from a DNS
*/
struct __pyx_obj_7scamper_ScamperHost {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHost *__pyx_vtab;
  scamper_host_t *_c;
  struct __pyx_obj_7scamper_ScamperHostQuery *_q;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
};


/* "scamper.pyx":7524
 * ####
 * 
 * cdef class ScamperHttpBuf:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperHttpBuf` is used by scamper to store chunks of data
*/
struct __pyx_obj_7scamper_ScamperHttpBuf {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHttpBuf *__pyx_vtab;
  scamper_http_buf_t *_c;
};


/* "scamper.pyx":7663
 *         raise StopIteration
 * 
 * cdef class ScamperHttp:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperHttp` is used by scamper to store results from a HTTP
*/
struct __pyx_obj_7scamper_ScamperHttp {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperHttp *__pyx_vtab;
  scamper_http_t *_c;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
};


/* "scamper.pyx":8056
 *         raise StopIteration
 * 
 * cdef class ScamperUdpprobeReply:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperUdpprobeReply` is used by scamper to store responses
*/
struct __pyx_obj_7scamper_ScamperUdpprobeReply {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperUdpprobeReply *__pyx_vtab;
  scamper_udpprobe_reply_t *_c;
};


/* "scamper.pyx":8121
 *         return c.decode('UTF-8', 'strict')
 * 
 * cdef class ScamperUdpprobeProbe:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperUdpprobeProbe` is used by scamper to store information
*/
struct __pyx_obj_7scamper_ScamperUdpprobeProbe {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperUdpprobeProbe *__pyx_vtab;
  scamper_udpprobe_probe_t *_c;
  uint8_t _i;
  uint8_t _replyc;
};


/* "scamper.pyx":8201
 *         return ScamperUdpprobeReply.from_ptr(c)
 * 
 * cdef class ScamperUdpprobe:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperUdpprobe` is used by scamper to store results from a UDP
*/
struct __pyx_obj_7scamper_ScamperUdpprobe {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperUdpprobe *__pyx_vtab;
  scamper_udpprobe_t *_c;
  struct __pyx_obj_7scamper_ScamperInst *_inst;
  uint8_t _i;
  uint8_t _probe_sent;
};


/* "scamper.pyx":8406
 * ####
 * 
 * cdef class ScamperFile:             # <<<<<<<<<<<<<<
 *     """
 *     A :class:`ScamperFile` can be used to interact with measurement results
*/
struct __pyx_obj_7scamper_ScamperFile {
  PyObject_HEAD
  scamper_file_t *_c_sf;
  scamper_file_filter_t *_c_sff;
  char _mode;
};


/* "scamper.pyx":8863
 *     return
 * 
 * cdef class ScamperCtrl:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperCtrl` is used to interact with a collection (one or more)
*/
struct __pyx_obj_7scamper_ScamperCtrl {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperCtrl *__pyx_vtab;
  scamper_ctrl_t *_c;
  scamper_task_t *_c_synctask;
  PyObject *_morecb;
  PyObject *_eofcb;
  PyObject *_syncdata;
  PyObject *_outfile;
  PyObject *_param;
  int _meta;
  PyObject *_objs;
  PyObject *_exceptions;
  PyObject *_insts;
  PyObject *_tasks;
  PyObject *_muxs;
};


/* "scamper.pyx":10503
 *         return clibscamperctrl.scamper_ctrl_isdone(self._c)
 * 
 * cdef class ScamperMux:             # <<<<<<<<<<<<<<
 *     """
 *     """
*/
struct __pyx_obj_7scamper_ScamperMux {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperMux *__pyx_vtab;
  scamper_mux_t *_c;
};


/* "scamper.pyx":10531
 *         return vps
 * 
 * cdef class ScamperVp:             # <<<<<<<<<<<<<<
 *     """
 *     """
*/
struct __pyx_obj_7scamper_ScamperVp {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperVp *__pyx_vtab;
  scamper_vp_t *_c;
};


/* "scamper.pyx":10692
 *         return c_place.decode('UTF-8', 'strict')
 * 
 * cdef class ScamperInst:             # <<<<<<<<<<<<<<
 *     """
 *     A :class:`ScamperInst` represents a connection to a single scamper
*/
struct __pyx_obj_7scamper_ScamperInst {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperInst *__pyx_vtab;
  scamper_inst_t *_c;
  scamper_file_t *_c_f;
  scamper_file_readbuf_t *_c_rb;
  PyObject *_tasks;
  int _eof;
  int _queued;
};


/* "scamper.pyx":10887
 *         return self._eof
 * 
 * cdef class ScamperTask:             # <<<<<<<<<<<<<<
 *     """
 *     A :class:`ScamperTask` object represents a scheduled measurement.
*/
struct __pyx_obj_7scamper_ScamperTask {
  PyObject_HEAD
  struct __pyx_vtabstruct_7scamper_ScamperTask *__pyx_vtab;
  scamper_task_t *_c;
  scamper_inst_t *_c_i;
};


/* "scamper.pyx":1659
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)
 * 
 *     def notes(self):             # <<<<<<<<<<<<<<
 *         """
 *         a generator that yields ScamperTracePmtudNote structures
*/
struct __pyx_obj_7scamper___pyx_scope_struct__notes {
  PyObject_HEAD
  uint8_t __pyx_v_dist;
  scamper_trace_pmtud_noteiter_t *__pyx_v_nit;
  scamper_trace_pmtud_note_t *__pyx_v_note;
  struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self;
  uint32_t __pyx_v_t_flags;
};


/* "scamper.pyx":9101
 *         return insts
 * 
 *     def exceptions(self):             # <<<<<<<<<<<<<<
 *         """
 *         exceptions()
*/
struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions {
  PyObject_HEAD
  struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self;
};


/* "scamper.pyx":9110
 *             yield self._exceptions.pop(0)
 * 
 *     def responses(self, timeout=None, until=None):             # <<<<<<<<<<<<<<
 *         """
 *         responses(timeout=None, until=None)
*/
struct __pyx_obj_7scamper___pyx_scope_struct_2_responses {
  PyObject_HEAD
  PyObject *__pyx_v_diff;
  PyObject *__pyx_v_e;
  PyObject *__pyx_v_inst;
  PyObject *__pyx_v_now;
  PyObject *__pyx_v_o;
  PyObject *__pyx_v_onion;
  struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self;
  PyObject *__pyx_v_timeout;
  struct timeval __pyx_v_tv;
  struct timeval *__pyx_v_tv_ptr;
  PyObject *__pyx_v_u;
  PyObject *__pyx_v_until;
};


/* "scamper.pyx":9413
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying trace command
 *     def do_trace(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
*/
struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace {
  PyObject_HEAD
  PyObject *__pyx_v_m;
};


/* "scamper.pyx":9484
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr {
  PyObject_HEAD
  struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *__pyx_outer_scope;
  PyObject *__pyx_v_s;
};


/* "scamper.pyx":9541
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
*/
struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb {
  PyObject_HEAD
  PyObject *__pyx_v_m;
};


/* "scamper.pyx":9597
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr {
  PyObject_HEAD
  struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *__pyx_outer_scope;
  PyObject *__pyx_v_s;
};


/* "scamper.pyx":9636
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying ping command
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,             # <<<<<<<<<<<<<<
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
*/
struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping {
  PyObject_HEAD
  PyObject *__pyx_v_m;
};


/* "scamper.pyx":9719
 *                 raise ValueError("cannot specify tcp_ack with " + method)
 *             elif (tcp_seq is not None and
 *                   not any(m.startswith(s) for s in ["tcp-syn", "tcp-rst"])):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify tcp_seq with " + method)
 * 
*/
struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr {
  PyObject_HEAD
  struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *__pyx_outer_scope;
  PyObject *__pyx_v_s;
};


/* "scamper.pyx":9733
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr {
  PyObject_HEAD
  struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *__pyx_outer_scope;
  PyObject *__pyx_v_s;
};


/* "scamper.pyx":9854
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,             # <<<<<<<<<<<<<<
 *                 sport=None, method=None, attempts=None, wait_probe=None,
 *                 wait_timeout=None, userid=None, inst=None, sync=False):
*/
struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally {
  PyObject_HEAD
  PyObject *__pyx_v_m;
};


/* "scamper.pyx":9917
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr {
  PyObject_HEAD
  struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *__pyx_outer_scope;
  PyObject *__pyx_v_s;
};


/* "scamper.pyx":10201
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,             # <<<<<<<<<<<<<<
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,
*/
struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan {
  PyObject_HEAD
  PyObject *__pyx_v_m;
};


/* "scamper.pyx":10266
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr {
  PyObject_HEAD
  struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *__pyx_outer_scope;
  PyObject *__pyx_v_s;
};



/* "scamper.pyx":384
 * ####
 * 
 * cdef class ScamperAddr:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperAddr` is used by scamper to store and interpret different
*/

struct __pyx_vtabstruct_7scamper_ScamperAddr {
  struct __pyx_obj_7scamper_ScamperAddr *(*from_ptr)(scamper_addr_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperAddr *__pyx_vtabptr_7scamper_ScamperAddr;


/* "scamper.pyx":571
 * #### Scamper List Object
 * ####
 * cdef class ScamperList:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperList` is used by scamper to attach common meta-data to
*/

struct __pyx_vtabstruct_7scamper_ScamperList {
  struct __pyx_obj_7scamper_ScamperList *(*from_ptr)(scamper_list_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperList *__pyx_vtabptr_7scamper_ScamperList;


/* "scamper.pyx":674
 * #### Scamper Cycle Object
 * ####
 * cdef class ScamperCycle:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperCycle` is used by scamper to attach common meta-data to
*/

struct __pyx_vtabstruct_7scamper_ScamperCycle {
  struct __pyx_obj_7scamper_ScamperCycle *(*from_ptr)(scamper_cycle_t *, uint16_t);
};
static struct __pyx_vtabstruct_7scamper_ScamperCycle *__pyx_vtabptr_7scamper_ScamperCycle;


/* "scamper.pyx":861
 *         raise StopIteration
 * 
 * cdef class ScamperIcmpExt:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperIcmpExt` is used by scamper to store information for
*/

struct __pyx_vtabstruct_7scamper_ScamperIcmpExt {
  struct __pyx_obj_7scamper_ScamperIcmpExt *(*from_ptr)(scamper_icmpext_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperIcmpExt *__pyx_vtabptr_7scamper_ScamperIcmpExt;


/* "scamper.pyx":1027
 *         raise StopIteration
 * 
 * cdef class ScamperIcmpExts:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperIcmpExts` is used by scamper to store information from
*/

struct __pyx_vtabstruct_7scamper_ScamperIcmpExts {
  struct __pyx_obj_7scamper_ScamperIcmpExts *(*from_ptr)(scamper_icmpexts_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperIcmpExts *__pyx_vtabptr_7scamper_ScamperIcmpExts;


/* "scamper.pyx":1108
 * ####
 * 
 * cdef class ScamperTraceHop:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTraceHop` is used by scamper to store information about a
*/

struct __pyx_vtabstruct_7scamper_ScamperTraceHop {
  struct __pyx_obj_7scamper_ScamperTraceHop *(*from_ptr)(scamper_trace_probe_t *, scamper_trace_reply_t *, uint32_t);
};
static struct __pyx_vtabstruct_7scamper_ScamperTraceHop *__pyx_vtabptr_7scamper_ScamperTraceHop;


/* "scamper.pyx":1525
 *         raise StopIteration
 * 
 * cdef class ScamperTracePmtudNote:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracePmtudNote` is used by scamper to store information
*/

struct __pyx_vtabstruct_7scamper_ScamperTracePmtudNote {
  struct __pyx_obj_7scamper_ScamperTracePmtudNote *(*from_ptr)(scamper_trace_pmtud_note_t *, uint8_t, uint32_t);
};
static struct __pyx_vtabstruct_7scamper_ScamperTracePmtudNote *__pyx_vtabptr_7scamper_ScamperTracePmtudNote;


/* "scamper.pyx":1600
 *         return ScamperTraceHop.from_ptr(probe, reply, self._t_flags)
 * 
 * cdef class ScamperTracePmtud:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracePmtud` is used by scamper to store results from
*/

struct __pyx_vtabstruct_7scamper_ScamperTracePmtud {
  struct __pyx_obj_7scamper_ScamperTracePmtud *(*from_ptr)(struct __pyx_obj_7scamper_ScamperTrace *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTracePmtud *__pyx_vtabptr_7scamper_ScamperTracePmtud;


/* "scamper.pyx":1681
 *         cscamper_trace.scamper_trace_pmtud_noteiter_free(nit)
 * 
 * cdef class ScamperTrace:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTrace` is used by scamper to store results from a traceroute
*/

struct __pyx_vtabstruct_7scamper_ScamperTrace {
  struct __pyx_obj_7scamper_ScamperTrace *(*from_ptr)(scamper_trace_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTrace *__pyx_vtabptr_7scamper_ScamperTrace;


/* "scamper.pyx":2283
 * ####
 * 
 * cdef class ScamperPingReply:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperPingReply` is used by scamper to store and interpret
*/

struct __pyx_vtabstruct_7scamper_ScamperPingReply {
  struct __pyx_obj_7scamper_ScamperPingReply *(*from_ptr)(scamper_ping_reply_t *, scamper_ping_probe_t *, scamper_ping_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperPingReply *__pyx_vtabptr_7scamper_ScamperPingReply;


/* "scamper.pyx":2636
 *         raise StopIteration
 * 
 * cdef class ScamperPing:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperPing` is used by scamper to store results from a ping
*/

struct __pyx_vtabstruct_7scamper_ScamperPing {
  struct __pyx_obj_7scamper_ScamperPing *(*from_ptr)(scamper_ping_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperPing *__pyx_vtabptr_7scamper_ScamperPing;


/* "scamper.pyx":3232
 *         raise StopIteration
 * 
 * cdef class ScamperTracelbReply:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelbReply` is used by scamper to store information
*/

struct __pyx_vtabstruct_7scamper_ScamperTracelbReply {
  struct __pyx_obj_7scamper_ScamperTracelbReply *(*from_ptr)(scamper_tracelb_reply_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTracelbReply *__pyx_vtabptr_7scamper_ScamperTracelbReply;


/* "scamper.pyx":3382
 *         return ScamperIcmpExts.from_ptr(c)
 * 
 * cdef class ScamperTracelbProbe:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelbProbe` is used by scamper to store information
*/

struct __pyx_vtabstruct_7scamper_ScamperTracelbProbe {
  struct __pyx_obj_7scamper_ScamperTracelbProbe *(*from_ptr)(scamper_tracelb_probe_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTracelbProbe *__pyx_vtabptr_7scamper_ScamperTracelbProbe;


/* "scamper.pyx":3480
 *         return ScamperTracelbReply.from_ptr(c)
 * 
 * cdef class ScamperTracelbProbeset:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelbProbeset` is used by scamper to store information
*/

struct __pyx_vtabstruct_7scamper_ScamperTracelbProbeset {
  struct __pyx_obj_7scamper_ScamperTracelbProbeset *(*from_ptr)(scamper_tracelb_probeset_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTracelbProbeset *__pyx_vtabptr_7scamper_ScamperTracelbProbeset;


/* "scamper.pyx":3539
 *         return ScamperTracelbProbe.from_ptr(c)
 * 
 * cdef class ScamperTracelbNode:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelbNode` is used by scamper to store information
*/

struct __pyx_vtabstruct_7scamper_ScamperTracelbNode {
  struct __pyx_obj_7scamper_ScamperTracelbNode *(*from_ptr)(scamper_tracelb_node_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTracelbNode *__pyx_vtabptr_7scamper_ScamperTracelbNode;


/* "scamper.pyx":3624
 *         return _ScamperTracelbLinkIterator(self)
 * 
 * cdef class ScamperTracelbLink:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelbNode` is used by scamper to store information
*/

struct __pyx_vtabstruct_7scamper_ScamperTracelbLink {
  struct __pyx_obj_7scamper_ScamperTracelbLink *(*from_ptr)(scamper_tracelb_link_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTracelbLink *__pyx_vtabptr_7scamper_ScamperTracelbLink;


/* "scamper.pyx":3730
 *         return ScamperTracelbProbeset.from_ptr(c)
 * 
 * cdef class ScamperTracelb:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTracelb` is used by scamper to store results from a
*/

struct __pyx_vtabstruct_7scamper_ScamperTracelb {
  struct __pyx_obj_7scamper_ScamperTracelb *(*from_ptr)(scamper_tracelb_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTracelb *__pyx_vtabptr_7scamper_ScamperTracelb;


/* "scamper.pyx":4107
 * ####
 * 
 * cdef class ScamperDealiasReply:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperDealiasReply` object stores information for
*/

struct __pyx_vtabstruct_7scamper_ScamperDealiasReply {
  struct __pyx_obj_7scamper_ScamperDealiasReply *(*from_ptr)(scamper_dealias_reply_t *, scamper_dealias_probe_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperDealiasReply *__pyx_vtabptr_7scamper_ScamperDealiasReply;


/* "scamper.pyx":4384
 *         return cscamper_dealias.scamper_dealias_midardisc_round_end_get(self._c)
 * 
 * cdef class ScamperDealiasProbedef:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperDealiasProbedef` object stores information for a set of
*/

struct __pyx_vtabstruct_7scamper_ScamperDealiasProbedef {
  struct __pyx_obj_7scamper_ScamperDealiasProbedef *(*from_ptr)(scamper_dealias_probedef_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperDealiasProbedef *__pyx_vtabptr_7scamper_ScamperDealiasProbedef;


/* "scamper.pyx":4759
 *         raise StopIteration
 * 
 * cdef class ScamperDealiasProbe:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperDealiasProbe` object stores information about an
*/

struct __pyx_vtabstruct_7scamper_ScamperDealiasProbe {
  struct __pyx_obj_7scamper_ScamperDealiasProbe *(*from_ptr)(scamper_dealias_probe_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperDealiasProbe *__pyx_vtabptr_7scamper_ScamperDealiasProbe;


/* "scamper.pyx":4886
 *         raise StopIteration
 * 
 * cdef class ScamperDealias:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperDealias` object stores results from an alias resolution
*/

struct __pyx_vtabstruct_7scamper_ScamperDealias {
  struct __pyx_obj_7scamper_ScamperDealias *(*from_ptr)(scamper_dealias_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperDealias *__pyx_vtabptr_7scamper_ScamperDealias;


/* "scamper.pyx":5348
 * #### Scamper Neighbourdisc Object
 * ####
 * cdef class ScamperNeighbourdisc:             # <<<<<<<<<<<<<<
 *     cdef cscamper_neighbourdisc.scamper_neighbourdisc_t *_c
 *     cdef public ScamperInst _inst
*/

struct __pyx_vtabstruct_7scamper_ScamperNeighbourdisc {
  struct __pyx_obj_7scamper_ScamperNeighbourdisc *(*from_ptr)(scamper_neighbourdisc_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperNeighbourdisc *__pyx_vtabptr_7scamper_ScamperNeighbourdisc;


/* "scamper.pyx":5396
 * ####
 * 
 * cdef class ScamperTbitPkt:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperTbitPkt` is used by scamper to store information about
*/

struct __pyx_vtabstruct_7scamper_ScamperTbitPkt {
  struct __pyx_obj_7scamper_ScamperTbitPkt *(*from_ptr)(scamper_tbit_pkt_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTbitPkt *__pyx_vtabptr_7scamper_ScamperTbitPkt;


/* "scamper.pyx":5470
 *         return ptr[:s]
 * 
 * cdef class ScamperTbit:             # <<<<<<<<<<<<<<
 *     cdef cscamper_tbit.scamper_tbit_t *_c
 *     cdef uint32_t _i, _pktc
*/

struct __pyx_vtabstruct_7scamper_ScamperTbit {
  struct __pyx_obj_7scamper_ScamperTbit *(*from_ptr)(scamper_tbit_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTbit *__pyx_vtabptr_7scamper_ScamperTbit;


/* "scamper.pyx":5653
 * ####
 * 
 * cdef class ScamperSting:             # <<<<<<<<<<<<<<
 *     cdef cscamper_sting.scamper_sting_t *_c
 *     cdef public ScamperInst _inst
*/

struct __pyx_vtabstruct_7scamper_ScamperSting {
  struct __pyx_obj_7scamper_ScamperSting *(*from_ptr)(scamper_sting_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperSting *__pyx_vtabptr_7scamper_ScamperSting;


/* "scamper.pyx":5685
 * ####
 * 
 * cdef class ScamperSniffPkt:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperSniffPkt` is used by scamper to store information about
*/

struct __pyx_vtabstruct_7scamper_ScamperSniffPkt {
  struct __pyx_obj_7scamper_ScamperSniffPkt *(*from_ptr)(scamper_sniff_pkt_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperSniffPkt *__pyx_vtabptr_7scamper_ScamperSniffPkt;


/* "scamper.pyx":5735
 *         return data[:length]
 * 
 * cdef class ScamperSniff:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperSniff` is used by scamper to store information about
*/

struct __pyx_vtabstruct_7scamper_ScamperSniff {
  struct __pyx_obj_7scamper_ScamperSniff *(*from_ptr)(scamper_sniff_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperSniff *__pyx_vtabptr_7scamper_ScamperSniff;


/* "scamper.pyx":5928
 * ####
 * 
 * cdef class ScamperHostMX:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostMX` object stores fields from the MX resource record.
*/

struct __pyx_vtabstruct_7scamper_ScamperHostMX {
  struct __pyx_obj_7scamper_ScamperHostMX *(*from_ptr)(scamper_host_rr_mx_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHostMX *__pyx_vtabptr_7scamper_ScamperHostMX;


/* "scamper.pyx":5975
 *         return mx_exch.decode('UTF-8', 'strict')
 * 
 * cdef class ScamperHostSOA:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostSOA` object stores fields from the SOA resource
*/

struct __pyx_vtabstruct_7scamper_ScamperHostSOA {
  struct __pyx_obj_7scamper_ScamperHostSOA *(*from_ptr)(scamper_host_rr_soa_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHostSOA *__pyx_vtabptr_7scamper_ScamperHostSOA;


/* "scamper.pyx":6086
 *         return cscamper_host.scamper_host_rr_soa_minimum_get(self._c)
 * 
 * cdef class ScamperHostTXT:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostTXT` object stores fields from the TXT resource
*/

struct __pyx_vtabstruct_7scamper_ScamperHostTXT {
  struct __pyx_obj_7scamper_ScamperHostTXT *(*from_ptr)(scamper_host_rr_txt_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHostTXT *__pyx_vtabptr_7scamper_ScamperHostTXT;


/* "scamper.pyx":6146
 *         return txt.decode('UTF-8', 'strict')
 * 
 * cdef class ScamperHostOPTElem:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostOPTElem` object stores an element from the OPT
*/

struct __pyx_vtabstruct_7scamper_ScamperHostOPTElem {
  struct __pyx_obj_7scamper_ScamperHostOPTElem *(*from_ptr)(scamper_host_rr_opt_elem_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHostOPTElem *__pyx_vtabptr_7scamper_ScamperHostOPTElem;


/* "scamper.pyx":6210
 *         return data[:length]
 * 
 * cdef class ScamperHostOPT:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostOPT` object stores fields from the OPT resource
*/

struct __pyx_vtabstruct_7scamper_ScamperHostOPT {
  struct __pyx_obj_7scamper_ScamperHostOPT *(*from_ptr)(scamper_host_rr_opt_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHostOPT *__pyx_vtabptr_7scamper_ScamperHostOPT;


/* "scamper.pyx":6273
 *         return ScamperHostOPTElem.from_ptr(elem)
 * 
 * cdef class ScamperHostSVCBParam:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHosSVCBParam` object stores an element from the SVCB
*/

struct __pyx_vtabstruct_7scamper_ScamperHostSVCBParam {
  struct __pyx_obj_7scamper_ScamperHostSVCBParam *(*from_ptr)(scamper_host_rr_svcb_param_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHostSVCBParam *__pyx_vtabptr_7scamper_ScamperHostSVCBParam;


/* "scamper.pyx":6337
 *         return val[:length]
 * 
 * cdef class ScamperHostSVCB:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostSVCB` object stores fields from the SVCB resource
*/

struct __pyx_vtabstruct_7scamper_ScamperHostSVCB {
  struct __pyx_obj_7scamper_ScamperHostSVCB *(*from_ptr)(scamper_host_rr_svcb_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHostSVCB *__pyx_vtabptr_7scamper_ScamperHostSVCB;


/* "scamper.pyx":6423
 *         return ScamperHostSVCBParam.from_ptr(p)
 * 
 * cdef class ScamperHostRR:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostRR` object stores fields from a DNS resource record.
*/

struct __pyx_vtabstruct_7scamper_ScamperHostRR {
  struct __pyx_obj_7scamper_ScamperHostRR *(*from_ptr)(scamper_host_rr_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHostRR *__pyx_vtabptr_7scamper_ScamperHostRR;


/* "scamper.pyx":6773
 *         raise StopIteration
 * 
 * cdef class ScamperHostQuery:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`ScamperHostQuery` object stores information about a DNS query.
*/

struct __pyx_vtabstruct_7scamper_ScamperHostQuery {
  struct __pyx_obj_7scamper_ScamperHostQuery *(*from_ptr)(scamper_host_query_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHostQuery *__pyx_vtabptr_7scamper_ScamperHostQuery;


/* "scamper.pyx":7029
 *         return False
 * 
 * cdef class ScamperHost:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperHost` is used by scamper to store results from a DNS
*/

struct __pyx_vtabstruct_7scamper_ScamperHost {
  struct __pyx_obj_7scamper_ScamperHost *(*from_ptr)(scamper_host_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHost *__pyx_vtabptr_7scamper_ScamperHost;


/* "scamper.pyx":7524
 * ####
 * 
 * cdef class ScamperHttpBuf:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperHttpBuf` is used by scamper to store chunks of data
*/

struct __pyx_vtabstruct_7scamper_ScamperHttpBuf {
  struct __pyx_obj_7scamper_ScamperHttpBuf *(*from_ptr)(scamper_http_buf_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHttpBuf *__pyx_vtabptr_7scamper_ScamperHttpBuf;


/* "scamper.pyx":7663
 *         raise StopIteration
 * 
 * cdef class ScamperHttp:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperHttp` is used by scamper to store results from a HTTP
*/

struct __pyx_vtabstruct_7scamper_ScamperHttp {
  struct __pyx_obj_7scamper_ScamperHttp *(*from_ptr)(scamper_http_t *);
  PyObject *(*_htfs_todict)(struct __pyx_obj_7scamper_ScamperHttp *, scamper_http_hdr_fields_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperHttp *__pyx_vtabptr_7scamper_ScamperHttp;


/* "scamper.pyx":8056
 *         raise StopIteration
 * 
 * cdef class ScamperUdpprobeReply:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperUdpprobeReply` is used by scamper to store responses
*/

struct __pyx_vtabstruct_7scamper_ScamperUdpprobeReply {
  struct __pyx_obj_7scamper_ScamperUdpprobeReply *(*from_ptr)(scamper_udpprobe_reply_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperUdpprobeReply *__pyx_vtabptr_7scamper_ScamperUdpprobeReply;


/* "scamper.pyx":8121
 *         return c.decode('UTF-8', 'strict')
 * 
 * cdef class ScamperUdpprobeProbe:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperUdpprobeProbe` is used by scamper to store information
*/

struct __pyx_vtabstruct_7scamper_ScamperUdpprobeProbe {
  struct __pyx_obj_7scamper_ScamperUdpprobeProbe *(*from_ptr)(scamper_udpprobe_probe_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperUdpprobeProbe *__pyx_vtabptr_7scamper_ScamperUdpprobeProbe;


/* "scamper.pyx":8201
 *         return ScamperUdpprobeReply.from_ptr(c)
 * 
 * cdef class ScamperUdpprobe:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperUdpprobe` is used by scamper to store results from a UDP
*/

struct __pyx_vtabstruct_7scamper_ScamperUdpprobe {
  struct __pyx_obj_7scamper_ScamperUdpprobe *(*from_ptr)(scamper_udpprobe_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperUdpprobe *__pyx_vtabptr_7scamper_ScamperUdpprobe;


/* "scamper.pyx":8863
 *     return
 * 
 * cdef class ScamperCtrl:             # <<<<<<<<<<<<<<
 *     """
 *     :class:`ScamperCtrl` is used to interact with a collection (one or more)
*/

struct __pyx_vtabstruct_7scamper_ScamperCtrl {
  PyObject *(*_task)(struct __pyx_obj_7scamper_ScamperCtrl *, scamper_task_t *, scamper_inst_t *, int);
};
static struct __pyx_vtabstruct_7scamper_ScamperCtrl *__pyx_vtabptr_7scamper_ScamperCtrl;


/* "scamper.pyx":10503
 *         return clibscamperctrl.scamper_ctrl_isdone(self._c)
 * 
 * cdef class ScamperMux:             # <<<<<<<<<<<<<<
 *     """
 *     """
*/

struct __pyx_vtabstruct_7scamper_ScamperMux {
  struct __pyx_obj_7scamper_ScamperMux *(*from_ptr)(scamper_mux_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperMux *__pyx_vtabptr_7scamper_ScamperMux;


/* "scamper.pyx":10531
 *         return vps
 * 
 * cdef class ScamperVp:             # <<<<<<<<<<<<<<
 *     """
 *     """
*/

struct __pyx_vtabstruct_7scamper_ScamperVp {
  struct __pyx_obj_7scamper_ScamperVp *(*from_ptr)(scamper_vp_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperVp *__pyx_vtabptr_7scamper_ScamperVp;


/* "scamper.pyx":10692
 *         return c_place.decode('UTF-8', 'strict')
 * 
 * cdef class ScamperInst:             # <<<<<<<<<<<<<<
 *     """
 *     A :class:`ScamperInst` represents a connection to a single scamper
*/

struct __pyx_vtabstruct_7scamper_ScamperInst {
  struct __pyx_obj_7scamper_ScamperInst *(*from_ptr)(scamper_inst_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperInst *__pyx_vtabptr_7scamper_ScamperInst;


/* "scamper.pyx":10887
 *         return self._eof
 * 
 * cdef class ScamperTask:             # <<<<<<<<<<<<<<
 *     """
 *     A :class:`ScamperTask` object represents a scheduled measurement.
*/

struct __pyx_vtabstruct_7scamper_ScamperTask {
  struct __pyx_obj_7scamper_ScamperTask *(*from_ptr)(scamper_task_t *, scamper_inst_t *);
};
static struct __pyx_vtabstruct_7scamper_ScamperTask *__pyx_vtabptr_7scamper_ScamperTask;
/* #### Code section: utility_code_proto ### */

/* --- Runtime support code (head) --- */
/* Refnanny.proto */
#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, Py_ssize_t);
    void (*DECREF)(void*, PyObject*, Py_ssize_t);
    void (*GOTREF)(void*, PyObject*, Py_ssize_t);
    void (*GIVEREF)(void*, PyObject*, Py_ssize_t);
    void* (*SetupContext)(const char*, Py_ssize_t, 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;
  #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__));\
          }
  #define __Pyx_RefNannyFinishContextNogil() {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __Pyx_RefNannyFinishContext();\
              PyGILState_Release(__pyx_gilstate_save);\
          }
  #define __Pyx_RefNannyFinishContextNogil() {\
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\
              __Pyx_RefNannyFinishContext();\
              PyGILState_Release(__pyx_gilstate_save);\
          }
  #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); else {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) == NULL); else {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) == NULL); else {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) == NULL); else {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContextNogil()
  #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_Py_XDECREF_SET(r, v) do {\
        PyObject *tmp = (PyObject *) r;\
        r = v; Py_XDECREF(tmp);\
    } while (0)
#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)

/* PyErrExceptionMatches.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);
#else
#define __Pyx_PyErr_ExceptionMatches(err)  PyErr_ExceptionMatches(err)
#endif

/* PyThreadStateGet.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyThreadState_declare  PyThreadState *__pyx_tstate;
#define __Pyx_PyThreadState_assign  __pyx_tstate = __Pyx_PyThreadState_Current;
#if PY_VERSION_HEX >= 0x030C00A6
#define __Pyx_PyErr_Occurred()  (__pyx_tstate->current_exception != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->current_exception ? (PyObject*) Py_TYPE(__pyx_tstate->current_exception) : (PyObject*) NULL)
#else
#define __Pyx_PyErr_Occurred()  (__pyx_tstate->curexc_type != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  (__pyx_tstate->curexc_type)
#endif
#else
#define __Pyx_PyThreadState_declare
#define __Pyx_PyThreadState_assign
#define __Pyx_PyErr_Occurred()  (PyErr_Occurred() != NULL)
#define __Pyx_PyErr_CurrentExceptionType()  PyErr_Occurred()
#endif

/* PyErrFetchRestore.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyErr_Clear() __Pyx_ErrRestore(NULL, NULL, NULL)
#define __Pyx_ErrRestoreWithState(type, value, tb)  __Pyx_ErrRestoreInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)    __Pyx_ErrFetchInState(PyThreadState_GET(), type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  __Pyx_ErrRestoreInState(__pyx_tstate, type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)    __Pyx_ErrFetchInState(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A6
#define __Pyx_PyErr_SetNone(exc) (Py_INCREF(exc), __Pyx_ErrRestore((exc), NULL, NULL))
#else
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#endif
#else
#define __Pyx_PyErr_Clear() PyErr_Clear()
#define __Pyx_PyErr_SetNone(exc) PyErr_SetNone(exc)
#define __Pyx_ErrRestoreWithState(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchWithState(type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestoreInState(tstate, type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetchInState(tstate, type, value, tb)  PyErr_Fetch(type, value, tb)
#define __Pyx_ErrRestore(type, value, tb)  PyErr_Restore(type, value, tb)
#define __Pyx_ErrFetch(type, value, tb)  PyErr_Fetch(type, value, tb)
#endif

/* PyObjectGetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name);
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

/* PyObjectGetAttrStrNoError.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name);

/* GetBuiltinName.proto */
static PyObject *__Pyx_GetBuiltinName(PyObject *name);

/* TupleAndListFromArray.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n);
#endif
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject* __Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n);
#endif

/* IncludeStringH.proto */
#include <string.h>

/* BytesEquals.proto */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);

/* UnicodeEquals.proto */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);

/* fastcall.proto */
#if CYTHON_AVOID_BORROWED_REFS
    #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_PySequence_ITEM(args, i)
#elif CYTHON_ASSUME_SAFE_MACROS
    #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_NewRef(__Pyx_PyTuple_GET_ITEM(args, i))
#else
    #define __Pyx_ArgRef_VARARGS(args, i) __Pyx_XNewRef(PyTuple_GetItem(args, i))
#endif
#define __Pyx_NumKwargs_VARARGS(kwds) PyDict_Size(kwds)
#define __Pyx_KwValues_VARARGS(args, nargs) NULL
#define __Pyx_GetKwValue_VARARGS(kw, kwvalues, s) __Pyx_PyDict_GetItemStrWithError(kw, s)
#define __Pyx_KwargsAsDict_VARARGS(kw, kwvalues) PyDict_Copy(kw)
#if CYTHON_METH_FASTCALL
    #define __Pyx_ArgRef_FASTCALL(args, i) __Pyx_NewRef(args[i])
    #define __Pyx_NumKwargs_FASTCALL(kwds) __Pyx_PyTuple_GET_SIZE(kwds)
    #define __Pyx_KwValues_FASTCALL(args, nargs) ((args) + (nargs))
    static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s);
  #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API
    CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues);
  #else
    #define __Pyx_KwargsAsDict_FASTCALL(kw, kwvalues) _PyStack_AsDict(kwvalues, kw)
  #endif
#else
    #define __Pyx_ArgRef_FASTCALL __Pyx_ArgRef_VARARGS
    #define __Pyx_NumKwargs_FASTCALL __Pyx_NumKwargs_VARARGS
    #define __Pyx_KwValues_FASTCALL __Pyx_KwValues_VARARGS
    #define __Pyx_GetKwValue_FASTCALL __Pyx_GetKwValue_VARARGS
    #define __Pyx_KwargsAsDict_FASTCALL __Pyx_KwargsAsDict_VARARGS
#endif
#define __Pyx_ArgsSlice_VARARGS(args, start, stop) PyTuple_GetSlice(args, start, stop)
#if CYTHON_METH_FASTCALL || (CYTHON_COMPILING_IN_CPYTHON && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) __Pyx_PyTuple_FromArray(args + start, stop - start)
#else
#define __Pyx_ArgsSlice_FASTCALL(args, start, stop) PyTuple_GetSlice(args, start, stop)
#endif

/* RaiseDoubleKeywords.proto */
static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);

/* ParseKeywords.proto */
static CYTHON_INLINE int __Pyx_ParseKeywords(
    PyObject *kwds, PyObject *const *kwvalues, PyObject ** const argnames[],
    PyObject *kwds2, PyObject *values[],
    Py_ssize_t num_pos_args, Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs
);

/* CallCFunction.proto */
#define __Pyx_CallCFunction(cfunc, self, args)\
    ((PyCFunction)(void(*)(void))(cfunc)->func)(self, args)
#define __Pyx_CallCFunctionWithKeywords(cfunc, self, args, kwargs)\
    ((PyCFunctionWithKeywords)(void(*)(void))(cfunc)->func)(self, args, kwargs)
#define __Pyx_CallCFunctionFast(cfunc, self, args, nargs)\
    ((__Pyx_PyCFunctionFast)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs)
#define __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, nargs, kwnames)\
    ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))(PyCFunction)(cfunc)->func)(self, args, nargs, kwnames)

/* PyFunctionFastCall.proto */
#if CYTHON_FAST_PYCALL
#if !CYTHON_VECTORCALL
#define __Pyx_PyFunction_FastCall(func, args, nargs)\
    __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs, PyObject *kwargs);
#endif
#define __Pyx_BUILD_ASSERT_EXPR(cond)\
    (sizeof(char [1 - 2*!(cond)]) - 1)
#ifndef Py_MEMBER_SIZE
#define Py_MEMBER_SIZE(type, member) sizeof(((type *)0)->member)
#endif
#if !CYTHON_VECTORCALL
#if PY_VERSION_HEX >= 0x03080000
  #include "frameobject.h"
  #define __Pxy_PyFrame_Initialize_Offsets()
  #define __Pyx_PyFrame_GetLocalsplus(frame)  ((frame)->f_localsplus)
#else
  static size_t __pyx_pyframe_localsplus_offset = 0;
  #include "frameobject.h"
  #define __Pxy_PyFrame_Initialize_Offsets()\
    ((void)__Pyx_BUILD_ASSERT_EXPR(sizeof(PyFrameObject) == offsetof(PyFrameObject, f_localsplus) + Py_MEMBER_SIZE(PyFrameObject, f_localsplus)),\
     (void)(__pyx_pyframe_localsplus_offset = ((size_t)PyFrame_Type.tp_basicsize) - Py_MEMBER_SIZE(PyFrameObject, f_localsplus)))
  #define __Pyx_PyFrame_GetLocalsplus(frame)\
    (assert(__pyx_pyframe_localsplus_offset), (PyObject **)(((char *)(frame)) + __pyx_pyframe_localsplus_offset))
#endif
#endif
#endif

/* PyObjectCall.proto */
#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

/* PyObjectCallMethO.proto */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);
#endif

/* PyObjectFastCall.proto */
#define __Pyx_PyObject_FastCall(func, args, nargs)  __Pyx_PyObject_FastCallDict(func, args, (size_t)(nargs), NULL)
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs);

/* UnpackUnboundCMethod.proto */
typedef struct {
    PyObject *type;
    PyObject **method_name;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && CYTHON_ATOMICS
    __pyx_atomic_int_type initialized;
#endif
    PyCFunction func;
    PyObject *method;
    int flag;
} __Pyx_CachedCFunction;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
static CYTHON_INLINE int __Pyx_CachedCFunction_GetAndSetInitializing(__Pyx_CachedCFunction *cfunc) {
#if !CYTHON_ATOMICS
    return 1;
#else
    __pyx_nonatomic_int_type expected = 0;
    if (__pyx_atomic_int_cmp_exchange(&cfunc->initialized, &expected, 1)) {
        return 0;
    }
    return expected;
#endif
}
static CYTHON_INLINE void __Pyx_CachedCFunction_SetFinishedInitializing(__Pyx_CachedCFunction *cfunc) {
#if CYTHON_ATOMICS
    __pyx_atomic_store(&cfunc->initialized, 2);
#endif
}
#else
#define __Pyx_CachedCFunction_GetAndSetInitializing(cfunc) 2
#define __Pyx_CachedCFunction_SetFinishedInitializing(cfunc)
#endif

/* CallUnboundCMethod2.proto */
CYTHON_UNUSED
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2);
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2);
#else
#define __Pyx_CallUnboundCMethod2(cfunc, self, arg1, arg2)  __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2)
#endif

/* RaiseArgTupleInvalid.proto */
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);

/* PyObjectFastCallMethod.proto */
#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000
#define __Pyx_PyObject_FastCallMethod(name, args, nargsf) PyObject_VectorcallMethod(name, args, nargsf, NULL)
#else
static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf);
#endif

/* RaiseException.proto */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause);

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_AddObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceAdd(op1, op2) : PyNumber_Add(op1, op2))
#endif

/* decode_c_string_utf16.proto */
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 0;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16LE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = -1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_DecodeUTF16BE(const char *s, Py_ssize_t size, const char *errors) {
    int byteorder = 1;
    return PyUnicode_DecodeUTF16(s, size, errors, &byteorder);
}

/* decode_c_string.proto */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));

/* UnicodeConcatInPlace.proto */
# if CYTHON_COMPILING_IN_CPYTHON
    #if CYTHON_REFNANNY
        #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right, __pyx_refnanny)
    #else
        #define __Pyx_PyUnicode_ConcatInPlace(left, right) __Pyx_PyUnicode_ConcatInPlaceImpl(&left, right)
    #endif
    static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right
        #if CYTHON_REFNANNY
        , void* __pyx_refnanny
        #endif
    );
#else
#define __Pyx_PyUnicode_ConcatInPlace __Pyx_PyUnicode_Concat
#endif
#define __Pyx_PyUnicode_ConcatInPlaceSafe(left, right) ((unlikely((left) == Py_None) || unlikely((right) == Py_None)) ?\
    PyNumber_InPlaceAdd(left, right) : __Pyx_PyUnicode_ConcatInPlace(left, right))

/* PyObject_Unicode.proto */
#define __Pyx_PyObject_Unicode(obj)\
    (likely(PyUnicode_CheckExact(obj)) ? __Pyx_NewRef(obj) : PyObject_Str(obj))

/* RejectKeywords.proto */
static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds);

/* PyDictVersioning.proto */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
#define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
#define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
    (version_var) = __PYX_GET_DICT_VERSION(dict);\
    (cache_var) = (value);
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP) {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    if (likely(__PYX_GET_DICT_VERSION(DICT) == __pyx_dict_version)) {\
        (VAR) = __pyx_dict_cached_value;\
    } else {\
        (VAR) = __pyx_dict_cached_value = (LOOKUP);\
        __pyx_dict_version = __PYX_GET_DICT_VERSION(DICT);\
    }\
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj);
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj);
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version);
#else
#define __PYX_GET_DICT_VERSION(dict)  (0)
#define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)
#define __PYX_PY_DICT_LOOKUP_IF_MODIFIED(VAR, DICT, LOOKUP)  (VAR) = (LOOKUP);
#endif

/* GetModuleGlobalName.proto */
#if CYTHON_USE_DICT_VERSIONS
#define __Pyx_GetModuleGlobalName(var, name)  do {\
    static PY_UINT64_T __pyx_dict_version = 0;\
    static PyObject *__pyx_dict_cached_value = NULL;\
    (var) = (likely(__pyx_dict_version == __PYX_GET_DICT_VERSION(__pyx_mstate_global->__pyx_d))) ?\
        (likely(__pyx_dict_cached_value) ? __Pyx_NewRef(__pyx_dict_cached_value) : __Pyx_GetBuiltinName(name)) :\
        __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
} while(0)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  do {\
    PY_UINT64_T __pyx_dict_version;\
    PyObject *__pyx_dict_cached_value;\
    (var) = __Pyx__GetModuleGlobalName(name, &__pyx_dict_version, &__pyx_dict_cached_value);\
} while(0)
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value);
#else
#define __Pyx_GetModuleGlobalName(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
#define __Pyx_GetModuleGlobalNameUncached(var, name)  (var) = __Pyx__GetModuleGlobalName(name)
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name);
#endif

/* GetItemInt.proto */
#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) :\
               __Pyx_GetItemInt_Generic(o, to_py_func(i))))
#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) :\
    (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck);

/* PyObjectVectorCallKwBuilder.proto */
CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n);
#if CYTHON_VECTORCALL
#if PY_VERSION_HEX >= 0x03090000
#define __Pyx_Object_Vectorcall_CallFromBuilder PyObject_Vectorcall
#else
#define __Pyx_Object_Vectorcall_CallFromBuilder _PyObject_Vectorcall
#endif
#define __Pyx_MakeVectorcallBuilderKwds(n) PyTuple_New(n)
static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n);
static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n);
#else
#define __Pyx_Object_Vectorcall_CallFromBuilder __Pyx_PyObject_FastCallDict
#define __Pyx_MakeVectorcallBuilderKwds(n) __Pyx_PyDict_NewPresized(n)
#define __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n) PyDict_SetItem(builder, key, value)
#define __Pyx_VectorcallBuilder_AddArgStr(key, value, builder, args, n) PyDict_SetItemString(builder, key, value)
#endif

/* PyObjectDelAttr.proto */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
#define __Pyx_PyObject_DelAttr(o, n) PyObject_SetAttr(o, n, NULL)
#else
#define __Pyx_PyObject_DelAttr(o, n) PyObject_DelAttr(o, n)
#endif

/* PyObjectSetAttrStr.proto */
#if CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_DelAttrStr(o,n) __Pyx_PyObject_SetAttrStr(o, n, NULL)
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value);
#else
#define __Pyx_PyObject_DelAttrStr(o,n)   __Pyx_PyObject_DelAttr(o,n)
#define __Pyx_PyObject_SetAttrStr(o,n,v) PyObject_SetAttr(o,n,v)
#endif

/* PyObjectFormatAndDecref.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f);
static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f);

/* JoinPyUnicode.proto */
static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      Py_UCS4 max_char);

/* PyUnicode_Unicode.proto */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj);

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_TrueDivideObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_TrueDivideObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceTrueDivide(op1, op2) : PyNumber_TrueDivide(op1, op2))
#endif

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_RemainderObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_RemainderObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceRemainder(op1, op2) : PyNumber_Remainder(op1, op2))
#endif

/* PyLongCompare.proto */
static CYTHON_INLINE int __Pyx_PyLong_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace);

/* PyLongCompare.proto */
static CYTHON_INLINE int __Pyx_PyLong_BoolNeObjC(PyObject *op1, PyObject *op2, long intval, long inplace);

/* GetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_GetException(type, value, tb)  __Pyx__GetException(__pyx_tstate, type, value, tb)
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* pep479.proto */
static void __Pyx_Generator_Replace_StopIteration(int in_async_gen);

/* py_dict_keys.proto */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d);

/* PyObjectCallOneArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);

/* CallUnboundCMethod0.proto */
CYTHON_UNUSED
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self);
#else
#define __Pyx_CallUnboundCMethod0(cfunc, self)  __Pyx__CallUnboundCMethod0(cfunc, self)
#endif

/* ExtTypeTest.proto */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type);

/* BuildPyUnicode.proto */
static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength,
                                                int prepend_sign, char padding_char);

/* COrdinalToPyUnicode.proto */
static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value);
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t width, char padding_char);

/* GCCDiagnostics.proto */
#if !defined(__INTEL_COMPILER) && defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
#define __Pyx_HAS_GCC_DIAGNOSTIC
#endif

/* IncludeStdlibH.proto */
#include <stdlib.h>

/* CIntToPyUnicode.proto */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_long(long value, Py_ssize_t width, char padding_char, char format_char);

/* ListAppend.proto */
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS
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);
        #if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000
        L->ob_item[len] = x;
        #else
        PyList_SET_ITEM(list, len, x);
        #endif
        __Pyx_SET_SIZE(list, len + 1);
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_PyList_Append(L,x) PyList_Append(L,x)
#endif

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_SubtractObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceSubtract(op1, op2) : PyNumber_Subtract(op1, op2))
#endif

/* PyObjectFormatSimple.proto */
#if CYTHON_COMPILING_IN_PYPY
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        PyObject_Format(s, f))
#elif CYTHON_USE_TYPE_SLOTS
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        likely(PyLong_CheckExact(s)) ? PyLong_Type.tp_repr(s) :\
        likely(PyFloat_CheckExact(s)) ? PyFloat_Type.tp_repr(s) :\
        PyObject_Format(s, f))
#else
    #define __Pyx_PyObject_FormatSimple(s, f) (\
        likely(PyUnicode_CheckExact(s)) ? (Py_INCREF(s), s) :\
        PyObject_Format(s, f))
#endif

/* PyObjectFormat.proto */
#if CYTHON_USE_UNICODE_WRITER
static PyObject* __Pyx_PyObject_Format(PyObject* s, PyObject* f);
#else
#define __Pyx_PyObject_Format(s, f) PyObject_Format(s, f)
#endif

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_AndObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceAnd(op1, op2) : PyNumber_And(op1, op2))
#endif

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_RshiftObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_RshiftObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceRshift(op1, op2) : PyNumber_Rshift(op1, op2))
#endif

/* SetItemInt.proto */
#define __Pyx_SetItemInt(o, i, v, type, is_signed, to_py_func, is_list, wraparound, boundscheck, has_gil)\
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ?\
    __Pyx_SetItemInt_Fast(o, (Py_ssize_t)i, v, is_list, wraparound, boundscheck) :\
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list assignment index out of range"), -1) :\
               __Pyx_SetItemInt_Generic(o, to_py_func(i), v)))
static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v);
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v,
                                               int is_list, int wraparound, int boundscheck);

/* PySequenceContains.proto */
static CYTHON_INLINE int __Pyx_PySequence_ContainsTF(PyObject* item, PyObject* seq, int eq) {
    int result = PySequence_Contains(seq, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

/* UnicodeAsUCS4.proto */
static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject*);

/* object_ord.proto */
#define __Pyx_PyObject_Ord(c)\
    (likely(PyUnicode_Check(c)) ? (long)__Pyx_PyUnicode_AsPy_UCS4(c) : __Pyx__PyObject_Ord(c))
static long __Pyx__PyObject_Ord(PyObject* c);

/* PyObjectCall2Args.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2);

/* PyObjectGetMethod.proto */
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method);

/* PyObjectCallMethod1.proto */
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg);

/* append.proto */
static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x);

/* GetTopmostException.proto */
#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem * __Pyx_PyErr_GetTopmostException(PyThreadState *tstate);
#endif

/* SaveResetException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSave(type, value, tb)  __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#define __Pyx_ExceptionReset(type, value, tb)  __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);
#else
#define __Pyx_ExceptionSave(type, value, tb)   PyErr_GetExcInfo(type, value, tb)
#define __Pyx_ExceptionReset(type, value, tb)  PyErr_SetExcInfo(type, value, tb)
#endif

/* SwapException.proto */
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_ExceptionSwap(type, value, tb)  __Pyx__ExceptionSwap(__pyx_tstate, type, value, tb)
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb);
#endif

/* pop_index.proto */
static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix);
static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix);
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix);
#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
    (likely(PyList_CheckExact(L) && __Pyx_fits_Py_ssize_t(ix, type, is_signed))) ?\
        __Pyx__PyList_PopIndex(L, py_ix, ix) : (\
        (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
            __Pyx__PyObject_PopIndex(L, py_ix)))
#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
    __Pyx_fits_Py_ssize_t(ix, type, is_signed) ?\
        __Pyx__PyList_PopIndex(L, py_ix, ix) : (\
        (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
            __Pyx__PyObject_PopIndex(L, py_ix)))
#else
#define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)\
    __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)
#define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
    (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
        __Pyx__PyObject_PopIndex(L, py_ix))
#endif

/* WriteUnraisableException.proto */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil);

/* RaiseUnboundLocalError.proto */
static void __Pyx_RaiseUnboundLocalError(const char *varname);

/* ListExtend.proto */
static CYTHON_INLINE int __Pyx_PyList_Extend(PyObject* L, PyObject* v) {
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00a2
    return PyList_Extend(L, v);
#elif CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
    PyObject* none = _PyList_Extend((PyListObject*)L, v);
    if (unlikely(!none))
        return -1;
    Py_DECREF(none);
    return 0;
#else
    return PyList_SetSlice(L, PY_SSIZE_T_MAX, PY_SSIZE_T_MAX, v);
#endif
}

/* RaiseClosureNameError.proto */
static void __Pyx_RaiseClosureNameError(const char *varname);

/* PyObjectCallNoArg.proto */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);

/* PyObjectVectorCallMethodKwBuilder.proto */
#if CYTHON_VECTORCALL && PY_VERSION_HEX >= 0x03090000
#define __Pyx_Object_VectorcallMethod_CallFromBuilder PyObject_VectorcallMethod
#else
static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames);
#endif

/* PyLongBinop.proto */
#if !CYTHON_COMPILING_IN_PYPY
static CYTHON_INLINE PyObject* __Pyx_PyLong_MultiplyObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check);
#else
#define __Pyx_PyLong_MultiplyObjC(op1, op2, intval, inplace, zerodivision_check)\
    (inplace ? PyNumber_InPlaceMultiply(op1, op2) : PyNumber_Multiply(op1, op2))
#endif

/* ObjectGetItem.proto */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key);
#else
#define __Pyx_PyObject_GetItem(obj, key)  PyObject_GetItem(obj, key)
#endif

/* pybytes_as_double.proto */
static double __Pyx_SlowPyString_AsDouble(PyObject *obj);
static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length);
static CYTHON_INLINE double __Pyx_PyBytes_AsDouble(PyObject *obj) {
    char* as_c_string;
    Py_ssize_t size;
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
    as_c_string = PyBytes_AS_STRING(obj);
    size = PyBytes_GET_SIZE(obj);
#else
    if (PyBytes_AsStringAndSize(obj, &as_c_string, &size) < 0) {
        return (double)-1;
    }
#endif
    return __Pyx__PyBytes_AsDouble(obj, as_c_string, size);
}
static CYTHON_INLINE double __Pyx_PyByteArray_AsDouble(PyObject *obj) {
    char* as_c_string;
    Py_ssize_t size;
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
    as_c_string = PyByteArray_AS_STRING(obj);
    size = PyByteArray_GET_SIZE(obj);
#else
    as_c_string = PyByteArray_AsString(obj);
    if (as_c_string == NULL) {
        return (double)-1;
    }
    size = PyByteArray_Size(obj);
#endif
    return __Pyx__PyBytes_AsDouble(obj, as_c_string, size);
}

/* pyunicode_as_double.proto */
#if !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS
static const char* __Pyx__PyUnicode_AsDouble_Copy(const void* data, const int kind, char* buffer, Py_ssize_t start, Py_ssize_t end) {
    int last_was_punctuation;
    Py_ssize_t i;
    last_was_punctuation = 1;
    for (i=start; i <= end; i++) {
        Py_UCS4 chr = PyUnicode_READ(kind, data, i);
        int is_punctuation = (chr == '_') | (chr == '.');
        *buffer = (char)chr;
        buffer += (chr != '_');
        if (unlikely(chr > 127)) goto parse_failure;
        if (unlikely(last_was_punctuation & is_punctuation)) goto parse_failure;
        last_was_punctuation = is_punctuation;
    }
    if (unlikely(last_was_punctuation)) goto parse_failure;
    *buffer = '\0';
    return buffer;
parse_failure:
    return NULL;
}
static double __Pyx__PyUnicode_AsDouble_inf_nan(const void* data, int kind, Py_ssize_t start, Py_ssize_t length) {
    int matches = 1;
    Py_UCS4 chr;
    Py_UCS4 sign = PyUnicode_READ(kind, data, start);
    int is_signed = (sign == '-') | (sign == '+');
    start += is_signed;
    length -= is_signed;
    switch (PyUnicode_READ(kind, data, start)) {
        #ifdef Py_NAN
        case 'n':
        case 'N':
            if (unlikely(length != 3)) goto parse_failure;
            chr = PyUnicode_READ(kind, data, start+1);
            matches &= (chr == 'a') | (chr == 'A');
            chr = PyUnicode_READ(kind, data, start+2);
            matches &= (chr == 'n') | (chr == 'N');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_NAN : Py_NAN;
        #endif
        case 'i':
        case 'I':
            if (unlikely(length < 3)) goto parse_failure;
            chr = PyUnicode_READ(kind, data, start+1);
            matches &= (chr == 'n') | (chr == 'N');
            chr = PyUnicode_READ(kind, data, start+2);
            matches &= (chr == 'f') | (chr == 'F');
            if (likely(length == 3 && matches))
                return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
            if (unlikely(length != 8)) goto parse_failure;
            chr = PyUnicode_READ(kind, data, start+3);
            matches &= (chr == 'i') | (chr == 'I');
            chr = PyUnicode_READ(kind, data, start+4);
            matches &= (chr == 'n') | (chr == 'N');
            chr = PyUnicode_READ(kind, data, start+5);
            matches &= (chr == 'i') | (chr == 'I');
            chr = PyUnicode_READ(kind, data, start+6);
            matches &= (chr == 't') | (chr == 'T');
            chr = PyUnicode_READ(kind, data, start+7);
            matches &= (chr == 'y') | (chr == 'Y');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
        case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
            break;
        default:
            goto parse_failure;
    }
    return 0.0;
parse_failure:
    return -1.0;
}
static double __Pyx_PyUnicode_AsDouble_WithSpaces(PyObject *obj) {
    double value;
    const char *last;
    char *end;
    Py_ssize_t start, length = PyUnicode_GET_LENGTH(obj);
    const int kind = PyUnicode_KIND(obj);
    const void* data = PyUnicode_DATA(obj);
    start = 0;
    while (Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, start)))
        start++;
    while (start < length - 1 && Py_UNICODE_ISSPACE(PyUnicode_READ(kind, data, length - 1)))
        length--;
    length -= start;
    if (unlikely(length <= 0)) goto fallback;
    value = __Pyx__PyUnicode_AsDouble_inf_nan(data, kind, start, length);
    if (unlikely(value == -1.0)) goto fallback;
    if (value != 0.0) return value;
    if (length < 40) {
        char number[40];
        last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length);
        if (unlikely(!last)) goto fallback;
        value = PyOS_string_to_double(number, &end, NULL);
    } else {
        char *number = (char*) PyMem_Malloc((length + 1) * sizeof(char));
        if (unlikely(!number)) goto fallback;
        last = __Pyx__PyUnicode_AsDouble_Copy(data, kind, number, start, start + length);
        if (unlikely(!last)) {
            PyMem_Free(number);
            goto fallback;
        }
        value = PyOS_string_to_double(number, &end, NULL);
        PyMem_Free(number);
    }
    if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) {
        return value;
    }
fallback:
    return __Pyx_SlowPyString_AsDouble(obj);
}
#endif
static CYTHON_INLINE double __Pyx_PyUnicode_AsDouble(PyObject *obj) {
#if !CYTHON_COMPILING_IN_PYPY && CYTHON_ASSUME_SAFE_MACROS
    if (unlikely(__Pyx_PyUnicode_READY(obj) == -1))
        return (double)-1;
    if (likely(PyUnicode_IS_ASCII(obj))) {
        const char *s;
        Py_ssize_t length;
        s = PyUnicode_AsUTF8AndSize(obj, &length);
        return __Pyx__PyBytes_AsDouble(obj, s, length);
    }
    return __Pyx_PyUnicode_AsDouble_WithSpaces(obj);
#else
    return __Pyx_SlowPyString_AsDouble(obj);
#endif
}

/* pynumber_float.proto */
static CYTHON_INLINE PyObject* __Pyx__PyNumber_Float(PyObject* obj);
#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : __Pyx__PyNumber_Float(x))

/* CallTypeTraverse.proto */
#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000)
#define __Pyx_call_type_traverse(o, always_call, visit, arg) 0
#else
static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg);
#endif

/* LimitedApiGetTypeDict.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp);
#endif

/* SetItemOnTypeDict.proto */
static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v);
#define __Pyx_SetItemOnTypeDict(tp, k, v) __Pyx__SetItemOnTypeDict((PyTypeObject*)tp, k, v)

/* FixUpExtensionType.proto */
static CYTHON_INLINE int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type);

/* PyObjectCallMethod0.proto */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name);

/* ValidateBasesTuple.proto */
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases);
#endif

/* PyType_Ready.proto */
CYTHON_UNUSED static int __Pyx_PyType_Ready(PyTypeObject *t);

/* SetVTable.proto */
static int __Pyx_SetVtable(PyTypeObject* typeptr , void* vtable);

/* GetVTable.proto */
static void* __Pyx_GetVtable(PyTypeObject *type);

/* MergeVTables.proto */
static int __Pyx_MergeVtables(PyTypeObject *type);

/* DelItemOnTypeDict.proto */
static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k);
#define __Pyx_DelItemOnTypeDict(tp, k) __Pyx__DelItemOnTypeDict((PyTypeObject*)tp, k)

/* SetupReduce.proto */
static int __Pyx_setup_reduce(PyObject* type_obj);

/* TypeImport.proto */
#ifndef __PYX_HAVE_RT_ImportType_proto_3_1_2
#define __PYX_HAVE_RT_ImportType_proto_3_1_2
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
#include <stdalign.h>
#endif
#if (defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || __cplusplus >= 201103L
#define __PYX_GET_STRUCT_ALIGNMENT_3_1_2(s) alignof(s)
#else
#define __PYX_GET_STRUCT_ALIGNMENT_3_1_2(s) sizeof(void*)
#endif
enum __Pyx_ImportType_CheckSize_3_1_2 {
   __Pyx_ImportType_CheckSize_Error_3_1_2 = 0,
   __Pyx_ImportType_CheckSize_Warn_3_1_2 = 1,
   __Pyx_ImportType_CheckSize_Ignore_3_1_2 = 2
};
static PyTypeObject *__Pyx_ImportType_3_1_2(PyObject* module, const char *module_name, const char *class_name, size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_1_2 check_size);
#endif

/* Import.proto */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);

/* ImportDottedModule.proto */
static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple);
static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple);

/* Py3UpdateBases.proto */
static PyObject* __Pyx_PEP560_update_bases(PyObject *bases);

/* CalculateMetaclass.proto */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases);

/* SetNameInClass.proto */
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030d0000
#define __Pyx_SetNameInClass(ns, name, value)\
    (likely(PyDict_CheckExact(ns)) ? _PyDict_SetItem_KnownHash(ns, name, value, ((PyASCIIObject *) name)->hash) : PyObject_SetItem(ns, name, value))
#elif CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_SetNameInClass(ns, name, value)\
    (likely(PyDict_CheckExact(ns)) ? PyDict_SetItem(ns, name, value) : PyObject_SetItem(ns, name, value))
#else
#define __Pyx_SetNameInClass(ns, name, value)  PyObject_SetItem(ns, name, value)
#endif

/* PyObjectLookupSpecial.proto */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
#define __Pyx_PyObject_LookupSpecialNoError(obj, attr_name)  __Pyx__PyObject_LookupSpecial(obj, attr_name, 0)
#define __Pyx_PyObject_LookupSpecial(obj, attr_name)  __Pyx__PyObject_LookupSpecial(obj, attr_name, 1)
static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error);
#else
#define __Pyx_PyObject_LookupSpecialNoError(o,n) __Pyx_PyObject_GetAttrStrNoError(o,n)
#define __Pyx_PyObject_LookupSpecial(o,n) __Pyx_PyObject_GetAttrStr(o,n)
#endif

/* Py3ClassCreate.proto */
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);

/* FetchSharedCythonModule.proto */
static PyObject *__Pyx_FetchSharedCythonABIModule(void);

/* dict_setdefault.proto */
static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value, int is_safe_type);

/* FetchCommonType.proto */
static PyTypeObject* __Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases);

/* CommonTypesMetaclass.proto */
static int __pyx_CommonTypesMetaclass_init(PyObject *module);
#define __Pyx_CommonTypesMetaclass_USED

/* PyMethodNew.proto */
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ);

/* PyVectorcallFastCallDict.proto */
#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL)
static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw);
#endif

/* CythonFunctionShared.proto */
#define __Pyx_CyFunction_USED
#define __Pyx_CYFUNCTION_STATICMETHOD  0x01
#define __Pyx_CYFUNCTION_CLASSMETHOD   0x02
#define __Pyx_CYFUNCTION_CCLASS        0x04
#define __Pyx_CYFUNCTION_COROUTINE     0x08
#define __Pyx_CyFunction_GetClosure(f)\
    (((__pyx_CyFunctionObject *) (f))->func_closure)
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
  #define __Pyx_CyFunction_GetClassObj(f)\
      (((__pyx_CyFunctionObject *) (f))->func_classobj)
#else
  #define __Pyx_CyFunction_GetClassObj(f)\
      ((PyObject*) ((PyCMethodObject *) (f))->mm_class)
#endif
#define __Pyx_CyFunction_SetClassObj(f, classobj)\
    __Pyx__CyFunction_SetClassObj((__pyx_CyFunctionObject *) (f), (classobj))
#define __Pyx_CyFunction_Defaults(type, f)\
    ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))
#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\
    ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)
typedef struct {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject_HEAD
    PyObject *func;
#elif PY_VERSION_HEX < 0x030900B1
    PyCFunctionObject func;
#else
    PyCMethodObject func;
#endif
#if CYTHON_BACKPORT_VECTORCALL ||\
        (CYTHON_COMPILING_IN_LIMITED_API && CYTHON_METH_FASTCALL)
    __pyx_vectorcallfunc func_vectorcall;
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_weakreflist;
#endif
    PyObject *func_dict;
    PyObject *func_name;
    PyObject *func_qualname;
    PyObject *func_doc;
    PyObject *func_globals;
    PyObject *func_code;
    PyObject *func_closure;
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    PyObject *func_classobj;
#endif
    PyObject *defaults;
    int flags;
    PyObject *defaults_tuple;
    PyObject *defaults_kwdict;
    PyObject *(*defaults_getter)(PyObject *);
    PyObject *func_annotations;
    PyObject *func_is_coroutine;
} __pyx_CyFunctionObject;
#undef __Pyx_CyOrPyCFunction_Check
#define __Pyx_CyFunction_Check(obj)  __Pyx_TypeCheck(obj, __pyx_mstate_global->__pyx_CyFunctionType)
#define __Pyx_CyOrPyCFunction_Check(obj)  __Pyx_TypeCheck2(obj, __pyx_mstate_global->__pyx_CyFunctionType, &PyCFunction_Type)
#define __Pyx_CyFunction_CheckExact(obj)  __Pyx_IS_TYPE(obj, __pyx_mstate_global->__pyx_CyFunctionType)
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void));
#undef __Pyx_IsSameCFunction
#define __Pyx_IsSameCFunction(func, cfunc)   __Pyx__IsSameCyOrCFunction(func, cfunc)
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject* op, PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj);
static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func,
                                                         PyTypeObject *defaults_type);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m,
                                                            PyObject *tuple);
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m,
                                                             PyObject *dict);
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m,
                                                              PyObject *dict);
static int __pyx_CyFunction_init(PyObject *module);
#if CYTHON_METH_FASTCALL
static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames);
#if CYTHON_BACKPORT_VECTORCALL || CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyFunction_func_vectorcall(f) (((__pyx_CyFunctionObject*)f)->func_vectorcall)
#else
#define __Pyx_CyFunction_func_vectorcall(f) (((PyCFunctionObject*)f)->vectorcall)
#endif
#endif

/* CythonFunction.proto */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml,
                                      int flags, PyObject* qualname,
                                      PyObject *closure,
                                      PyObject *module, PyObject *globals,
                                      PyObject* code);

/* CyFunctionClassCell.proto */
static int __Pyx_CyFunction_InitClassCell(PyObject *cyfunctions, PyObject *classobj);

/* CLineInTraceback.proto */
#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line);
#else
#define __Pyx_CLineForTraceback(tstate, c_line)  (((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0)
#endif

/* CodeObjectCache.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
typedef PyObject __Pyx_CachedCodeObjectType;
#else
typedef PyCodeObject __Pyx_CachedCodeObjectType;
#endif
typedef struct {
    __Pyx_CachedCodeObjectType* code_object;
    int code_line;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_atomic_int_type accessor_count;
  #endif
};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object);

/* AddTraceback.proto */
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename);

/* CIntFromPy.proto */
static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE uint8_t __Pyx_PyLong_As_uint8_t(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint32_t(uint32_t value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint16_t(uint16_t value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_time_t(time_t value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value);

/* CIntFromPy.proto */
static CYTHON_INLINE uint16_t __Pyx_PyLong_As_uint16_t(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint8_t(uint8_t value);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_suseconds_t(suseconds_t value);

/* CIntFromPy.proto */
static CYTHON_INLINE time_t __Pyx_PyLong_As_time_t(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE suseconds_t __Pyx_PyLong_As_suseconds_t(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE uint32_t __Pyx_PyLong_As_uint32_t(PyObject *);

/* CIntFromPy.proto */
static CYTHON_INLINE size_t __Pyx_PyLong_As_size_t(PyObject *);

/* CIntToPy.proto */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value);

/* FormatTypeName.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
typedef PyObject *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%U"
#define __Pyx_DECREF_TypeName(obj) Py_XDECREF(obj)
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
#define __Pyx_PyType_GetFullyQualifiedName PyType_GetFullyQualifiedName
#else
static __Pyx_TypeName __Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp);
#endif
#else  // !LIMITED_API
typedef const char *__Pyx_TypeName;
#define __Pyx_FMT_TYPENAME "%.200s"
#define __Pyx_PyType_GetFullyQualifiedName(tp) ((tp)->tp_name)
#define __Pyx_DECREF_TypeName(obj)
#endif

/* CIntFromPy.proto */
static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *);

/* FastTypeChecks.proto */
#if CYTHON_COMPILING_IN_CPYTHON
#define __Pyx_TypeCheck(obj, type) __Pyx_IsSubtype(Py_TYPE(obj), (PyTypeObject *)type)
#define __Pyx_TypeCheck2(obj, type1, type2) __Pyx_IsAnySubtype2(Py_TYPE(obj), (PyTypeObject *)type1, (PyTypeObject *)type2)
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject *type);
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2);
#else
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#define __Pyx_TypeCheck2(obj, type1, type2) (PyObject_TypeCheck(obj, (PyTypeObject *)type1) || PyObject_TypeCheck(obj, (PyTypeObject *)type2))
#define __Pyx_PyErr_GivenExceptionMatches(err, type) PyErr_GivenExceptionMatches(err, type)
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *type1, PyObject *type2) {
    return PyErr_GivenExceptionMatches(err, type1) || PyErr_GivenExceptionMatches(err, type2);
}
#endif
#define __Pyx_PyErr_ExceptionMatches2(err1, err2)  __Pyx_PyErr_GivenExceptionMatches2(__Pyx_PyErr_CurrentExceptionType(), err1, err2)
#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)
#ifdef PyExceptionInstance_Check
  #define __Pyx_PyBaseException_Check(obj) PyExceptionInstance_Check(obj)
#else
  #define __Pyx_PyBaseException_Check(obj) __Pyx_TypeCheck(obj, PyExc_BaseException)
#endif

/* IterNextPlain.proto */
static CYTHON_INLINE PyObject *__Pyx_PyIter_Next_Plain(PyObject *iterator);
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
static PyObject *__Pyx_GetBuiltinNext_LimitedAPI(void);
#endif

/* ReturnWithStopIteration.proto */
static CYTHON_INLINE void __Pyx_ReturnWithStopIteration(PyObject* value, int async, int iternext);

/* CoroutineBase.proto */
struct __pyx_CoroutineObject;
typedef PyObject *(*__pyx_coroutine_body_t)(struct __pyx_CoroutineObject *, PyThreadState *, PyObject *);
#if CYTHON_USE_EXC_INFO_STACK
#define __Pyx_ExcInfoStruct  _PyErr_StackItem
#else
typedef struct {
    PyObject *exc_type;
    PyObject *exc_value;
    PyObject *exc_traceback;
} __Pyx_ExcInfoStruct;
#endif
typedef struct __pyx_CoroutineObject {
    PyObject_HEAD
    __pyx_coroutine_body_t body;
    PyObject *closure;
    __Pyx_ExcInfoStruct gi_exc_state;
    PyObject *gi_weakreflist;
    PyObject *classobj;
    PyObject *yieldfrom;
    __Pyx_pyiter_sendfunc yieldfrom_am_send;
    PyObject *gi_name;
    PyObject *gi_qualname;
    PyObject *gi_modulename;
    PyObject *gi_code;
    PyObject *gi_frame;
#if CYTHON_USE_SYS_MONITORING && (CYTHON_PROFILE || CYTHON_TRACE)
    PyMonitoringState __pyx_pymonitoring_state[__Pyx_MonitoringEventTypes_CyGen_count];
    uint64_t __pyx_pymonitoring_version;
#endif
    int resume_label;
    char is_running;
} __pyx_CoroutineObject;
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
    PyTypeObject *type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
    PyObject *name, PyObject *qualname, PyObject *module_name);
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name);
static CYTHON_INLINE void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *self);
static int __Pyx_Coroutine_clear(PyObject *self);
static __Pyx_PySendResult __Pyx_Coroutine_AmSend(PyObject *self, PyObject *value, PyObject **retval);
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value);
static __Pyx_PySendResult __Pyx_Coroutine_Close(PyObject *self, PyObject **retval);
static PyObject *__Pyx_Coroutine_Throw(PyObject *gen, PyObject *args);
#if CYTHON_USE_EXC_INFO_STACK
#define __Pyx_Coroutine_SwapException(self)
#define __Pyx_Coroutine_ResetAndClearException(self)  __Pyx_Coroutine_ExceptionClear(&(self)->gi_exc_state)
#else
#define __Pyx_Coroutine_SwapException(self) {\
    __Pyx_ExceptionSwap(&(self)->gi_exc_state.exc_type, &(self)->gi_exc_state.exc_value, &(self)->gi_exc_state.exc_traceback);\
    __Pyx_Coroutine_ResetFrameBackpointer(&(self)->gi_exc_state);\
    }
#define __Pyx_Coroutine_ResetAndClearException(self) {\
    __Pyx_ExceptionReset((self)->gi_exc_state.exc_type, (self)->gi_exc_state.exc_value, (self)->gi_exc_state.exc_traceback);\
    (self)->gi_exc_state.exc_type = (self)->gi_exc_state.exc_value = (self)->gi_exc_state.exc_traceback = NULL;\
    }
#endif
#if CYTHON_FAST_THREAD_STATE
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__pyx_tstate, pvalue)
#else
#define __Pyx_PyGen_FetchStopIterationValue(pvalue)\
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, pvalue)
#endif
static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *tstate, PyObject **pvalue);
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state);
static char __Pyx_Coroutine_test_and_set_is_running(__pyx_CoroutineObject *gen);
static void __Pyx_Coroutine_unset_is_running(__pyx_CoroutineObject *gen);
static char __Pyx_Coroutine_get_is_running(__pyx_CoroutineObject *gen);
static PyObject *__Pyx_Coroutine_get_is_running_getter(PyObject *gen, void *closure);
#if __PYX_HAS_PY_AM_SEND == 2
static void __Pyx_SetBackportTypeAmSend(PyTypeObject *type, __Pyx_PyAsyncMethodsStruct *static_amsend_methods, __Pyx_pyiter_sendfunc am_send);
#endif
static PyObject *__Pyx_Coroutine_fail_reduce_ex(PyObject *self, PyObject *arg);

/* Generator.proto */
#define __Pyx_Generator_USED
#define __Pyx_Generator_CheckExact(obj) __Pyx_IS_TYPE(obj, __pyx_mstate_global->__pyx_GeneratorType)
#define __Pyx_Generator_New(body, code, closure, name, qualname, module_name)\
    __Pyx__Coroutine_New(__pyx_mstate_global->__pyx_GeneratorType, body, code, closure, name, qualname, module_name)
static PyObject *__Pyx_Generator_Next(PyObject *self);
static int __pyx_Generator_init(PyObject *module);
static CYTHON_INLINE PyObject *__Pyx_Generator_GetInlinedResult(PyObject *self);

/* GetRuntimeVersion.proto */
static unsigned long __Pyx_get_runtime_version(void);

/* CheckBinaryVersion.proto */
static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer);

/* MultiPhaseInitModuleState.proto */
#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE
static PyObject *__Pyx_State_FindModule(void*);
static int __Pyx_State_AddModule(PyObject* module, void*);
static int __Pyx_State_RemoveModule(void*);
#elif CYTHON_USE_MODULE_STATE
#define __Pyx_State_FindModule PyState_FindModule
#define __Pyx_State_AddModule PyState_AddModule
#define __Pyx_State_RemoveModule PyState_RemoveModule
#endif

/* #### Code section: module_declarations ### */
/* CythonABIVersion.proto */
#if CYTHON_COMPILING_IN_LIMITED_API
    #if CYTHON_METH_FASTCALL
        #define __PYX_FASTCALL_ABI_SUFFIX  "_fastcall"
    #else
        #define __PYX_FASTCALL_ABI_SUFFIX
    #endif
    #define __PYX_LIMITED_ABI_SUFFIX "limited" __PYX_FASTCALL_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX
#else
    #define __PYX_LIMITED_ABI_SUFFIX
#endif
#if __PYX_HAS_PY_AM_SEND == 1
    #define __PYX_AM_SEND_ABI_SUFFIX
#elif __PYX_HAS_PY_AM_SEND == 2
    #define __PYX_AM_SEND_ABI_SUFFIX "amsendbackport"
#else
    #define __PYX_AM_SEND_ABI_SUFFIX "noamsend"
#endif
#ifndef __PYX_MONITORING_ABI_SUFFIX
    #define __PYX_MONITORING_ABI_SUFFIX
#endif
#if CYTHON_USE_TP_FINALIZE
    #define __PYX_TP_FINALIZE_ABI_SUFFIX
#else
    #define __PYX_TP_FINALIZE_ABI_SUFFIX "nofinalize"
#endif
#if CYTHON_USE_FREELISTS || !defined(__Pyx_AsyncGen_USED)
    #define __PYX_FREELISTS_ABI_SUFFIX
#else
    #define __PYX_FREELISTS_ABI_SUFFIX "nofreelists"
#endif
#define CYTHON_ABI  __PYX_ABI_VERSION __PYX_LIMITED_ABI_SUFFIX __PYX_MONITORING_ABI_SUFFIX __PYX_TP_FINALIZE_ABI_SUFFIX __PYX_FREELISTS_ABI_SUFFIX __PYX_AM_SEND_ABI_SUFFIX
#define __PYX_ABI_MODULE_NAME "_cython_" CYTHON_ABI
#define __PYX_TYPE_MODULE_PREFIX __PYX_ABI_MODULE_NAME "."

static struct __pyx_obj_7scamper_ScamperAddr *__pyx_f_7scamper_11ScamperAddr_from_ptr(scamper_addr_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperList *__pyx_f_7scamper_11ScamperList_from_ptr(scamper_list_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperCycle *__pyx_f_7scamper_12ScamperCycle_from_ptr(scamper_cycle_t *__pyx_v_ptr, uint16_t __pyx_v_t); /* proto*/
static struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_f_7scamper_14ScamperIcmpExt_from_ptr(scamper_icmpext_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_f_7scamper_15ScamperIcmpExts_from_ptr(scamper_icmpexts_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_f_7scamper_15ScamperTraceHop_from_ptr(scamper_trace_probe_t *__pyx_v_p, scamper_trace_reply_t *__pyx_v_r, uint32_t __pyx_v_t_flags); /* proto*/
static struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_f_7scamper_21ScamperTracePmtudNote_from_ptr(scamper_trace_pmtud_note_t *__pyx_v_ptr, uint8_t __pyx_v_dist, uint32_t __pyx_v_t_flags); /* proto*/
static struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_f_7scamper_17ScamperTracePmtud_from_ptr(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_trace); /* proto*/
static struct __pyx_obj_7scamper_ScamperTrace *__pyx_f_7scamper_12ScamperTrace_from_ptr(scamper_trace_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperPingReply *__pyx_f_7scamper_16ScamperPingReply_from_ptr(scamper_ping_reply_t *__pyx_v_r, scamper_ping_probe_t *__pyx_v_p, scamper_ping_t *__pyx_v_ping); /* proto*/
static struct __pyx_obj_7scamper_ScamperPing *__pyx_f_7scamper_11ScamperPing_from_ptr(scamper_ping_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_f_7scamper_19ScamperTracelbReply_from_ptr(scamper_tracelb_reply_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_f_7scamper_19ScamperTracelbProbe_from_ptr(scamper_tracelb_probe_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_f_7scamper_22ScamperTracelbProbeset_from_ptr(scamper_tracelb_probeset_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_f_7scamper_18ScamperTracelbNode_from_ptr(scamper_tracelb_node_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_f_7scamper_18ScamperTracelbLink_from_ptr(scamper_tracelb_link_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperTracelb *__pyx_f_7scamper_14ScamperTracelb_from_ptr(scamper_tracelb_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_f_7scamper_19ScamperDealiasReply_from_ptr(scamper_dealias_reply_t *__pyx_v_ptr, scamper_dealias_probe_t *__pyx_v_probe); /* proto*/
static struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_f_7scamper_22ScamperDealiasProbedef_from_ptr(scamper_dealias_probedef_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_f_7scamper_19ScamperDealiasProbe_from_ptr(scamper_dealias_probe_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperDealias *__pyx_f_7scamper_14ScamperDealias_from_ptr(scamper_dealias_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_f_7scamper_20ScamperNeighbourdisc_from_ptr(scamper_neighbourdisc_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_f_7scamper_14ScamperTbitPkt_from_ptr(scamper_tbit_pkt_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperTbit *__pyx_f_7scamper_11ScamperTbit_from_ptr(scamper_tbit_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperSting *__pyx_f_7scamper_12ScamperSting_from_ptr(scamper_sting_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_f_7scamper_15ScamperSniffPkt_from_ptr(scamper_sniff_pkt_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperSniff *__pyx_f_7scamper_12ScamperSniff_from_ptr(scamper_sniff_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHostMX *__pyx_f_7scamper_13ScamperHostMX_from_ptr(scamper_host_rr_mx_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_f_7scamper_14ScamperHostSOA_from_ptr(scamper_host_rr_soa_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_f_7scamper_14ScamperHostTXT_from_ptr(scamper_host_rr_txt_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_f_7scamper_18ScamperHostOPTElem_from_ptr(scamper_host_rr_opt_elem_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_f_7scamper_14ScamperHostOPT_from_ptr(scamper_host_rr_opt_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_f_7scamper_20ScamperHostSVCBParam_from_ptr(scamper_host_rr_svcb_param_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_f_7scamper_15ScamperHostSVCB_from_ptr(scamper_host_rr_svcb_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHostRR *__pyx_f_7scamper_13ScamperHostRR_from_ptr(scamper_host_rr_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_f_7scamper_16ScamperHostQuery_from_ptr(scamper_host_query_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHost *__pyx_f_7scamper_11ScamperHost_from_ptr(scamper_host_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_f_7scamper_14ScamperHttpBuf_from_ptr(scamper_http_buf_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperHttp *__pyx_f_7scamper_11ScamperHttp_from_ptr(scamper_http_t *__pyx_v_ptr); /* proto*/
static PyObject *__pyx_f_7scamper_11ScamperHttp__htfs_todict(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, scamper_http_hdr_fields_t *__pyx_v_htfs); /* proto*/
static struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_f_7scamper_20ScamperUdpprobeReply_from_ptr(scamper_udpprobe_reply_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_f_7scamper_20ScamperUdpprobeProbe_from_ptr(scamper_udpprobe_probe_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_f_7scamper_15ScamperUdpprobe_from_ptr(scamper_udpprobe_t *__pyx_v_ptr); /* proto*/
static PyObject *__pyx_f_7scamper_11ScamperCtrl__task(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, scamper_task_t *__pyx_v_task, scamper_inst_t *__pyx_v_inst, int __pyx_v_sync); /* proto*/
static struct __pyx_obj_7scamper_ScamperMux *__pyx_f_7scamper_10ScamperMux_from_ptr(scamper_mux_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperVp *__pyx_f_7scamper_9ScamperVp_from_ptr(scamper_vp_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperInst *__pyx_f_7scamper_11ScamperInst_from_ptr(scamper_inst_t *__pyx_v_ptr); /* proto*/
static struct __pyx_obj_7scamper_ScamperTask *__pyx_f_7scamper_11ScamperTask_from_ptr(scamper_task_t *__pyx_v_ptr, scamper_inst_t *__pyx_v_inst); /* proto*/

/* Module declarations from "libc.stdint" */

/* Module declarations from "libc.string" */

/* Module declarations from "libc.stdlib" */

/* Module declarations from "libc.stdio" */

/* Module declarations from "__builtin__" */

/* Module declarations from "cpython.type" */

/* Module declarations from "cpython" */

/* Module declarations from "cpython.object" */

/* Module declarations from "cpython.ref" */

/* Module declarations from "cpython.exc" */

/* Module declarations from "cpython.mem" */

/* Module declarations from "posix.types" */

/* Module declarations from "posix.signal" */

/* Module declarations from "posix.time" */

/* Module declarations from "cscamper_addr" */

/* Module declarations from "cscamper_list" */

/* Module declarations from "cscamper_file" */

/* Module declarations from "cscamper_icmpext" */

/* Module declarations from "cscamper_trace" */

/* Module declarations from "cscamper_ping" */

/* Module declarations from "cscamper_tracelb" */

/* Module declarations from "cscamper_dealias" */

/* Module declarations from "cscamper_neighbourdisc" */

/* Module declarations from "cscamper_tbit" */

/* Module declarations from "cscamper_sting" */

/* Module declarations from "cscamper_sniff" */

/* Module declarations from "cscamper_host" */

/* Module declarations from "cscamper_http" */

/* Module declarations from "cscamper_udpprobe" */

/* Module declarations from "clibscamperctrl" */

/* Module declarations from "scamper" */
static void __pyx_f_7scamper__ctrl_cb(scamper_inst_t *, uint8_t, scamper_task_t *, void const *, size_t); /*proto*/
/* #### Code section: typeinfo ### */
/* #### Code section: before_global_var ### */
#define __Pyx_MODULE_NAME "scamper"
extern int __pyx_module_is_main_scamper;
int __pyx_module_is_main_scamper = 0;

/* Implementation of "scamper" */
/* #### Code section: global_var ### */
static PyObject *__pyx_builtin_property;
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_format;
static PyObject *__pyx_builtin_NotImplemented;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_StopIteration;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_MemoryError;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_super;
static PyObject *__pyx_builtin_object;
/* #### Code section: string_decls ### */
static const char __pyx_k_[] = "')";
static const char __pyx_k_A[] = "-A ";
static const char __pyx_k_B[] = "-B ";
static const char __pyx_k_C[] = "-C ";
static const char __pyx_k_F[] = "-F ";
static const char __pyx_k_G[] = "-G ";
static const char __pyx_k_H[] = "-H '";
static const char __pyx_k_M[] = "-M";
static const char __pyx_k_N[] = "-N ";
static const char __pyx_k_P[] = "-P ";
static const char __pyx_k_Q[] = "-Q";
static const char __pyx_k_R[] = "-R";
static const char __pyx_k_S[] = " S=";
static const char __pyx_k_T[] = "-T";
static const char __pyx_k_U[] = "-U ";
static const char __pyx_k_W[] = "-W ";
static const char __pyx_k_a[] = "a";
static const char __pyx_k_b[] = "b";
static const char __pyx_k_c[] = "_c";
static const char __pyx_k_d[] = "d";
static const char __pyx_k_e[] = "e";
static const char __pyx_k_f[] = "-f ";
static const char __pyx_k_g[] = "-g ";
static const char __pyx_k_i[] = "i";
static const char __pyx_k_j[] = "j";
static const char __pyx_k_l[] = "-l ";
static const char __pyx_k_m[] = "-m ";
static const char __pyx_k_o[] = "-o ";
static const char __pyx_k_p[] = "-p ";
static const char __pyx_k_q[] = "-q ";
static const char __pyx_k_r[] = "r";
static const char __pyx_k_s[] = "-s ";
static const char __pyx_k_t[] = "-t ";
static const char __pyx_k_u[] = "-u '";
static const char __pyx_k_w[] = "w";
static const char __pyx_k_x[] = "x";
static const char __pyx_k_z[] = "-z ";
static const char __pyx_k_06[] = "06";
static const char __pyx_k_DS[] = "DS";
static const char __pyx_k_MX[] = "MX";
static const char __pyx_k_NS[] = "NS";
static const char __pyx_k__2[] = "*";
static const char __pyx_k__3[] = " ";
static const char __pyx_k__4[] = "";
static const char __pyx_k__5[] = ".";
static const char __pyx_k__6[] = " -> *";
static const char __pyx_k__7[] = "(";
static const char __pyx_k__8[] = ", ";
static const char __pyx_k__9[] = ", *)";
static const char __pyx_k_an[] = "an";
static const char __pyx_k_ar[] = "ar";
static const char __pyx_k_cc[] = "cc";
static const char __pyx_k_gc[] = "gc";
static const char __pyx_k_gz[] = ".gz";
static const char __pyx_k_hi[] = "hi";
static const char __pyx_k_mc[] = "mc";
static const char __pyx_k_md[] = "md";
static const char __pyx_k_me[] = "me";
static const char __pyx_k_ms[] = " ms";
static const char __pyx_k_mx[] = "mx";
static const char __pyx_k_ns[] = "ns";
static const char __pyx_k_os[] = "os";
static const char __pyx_k_pc[] = "_pc";
static const char __pyx_k_pd[] = "pd";
static const char __pyx_k_pf[] = "pf";
static const char __pyx_k_pi[] = "_pi";
static const char __pyx_k_rc[] = "rc";
static const char __pyx_k_rd[] = "rd";
static const char __pyx_k_re[] = "re";
static const char __pyx_k_rg[] = "rg";
static const char __pyx_k_ri[] = "_ri";
static const char __pyx_k_rr[] = "rr";
static const char __pyx_k_rx[] = "rx";
static const char __pyx_k_sa[] = "sa";
static const char __pyx_k_sb[] = "sb";
static const char __pyx_k_st[] = "st";
static const char __pyx_k_tv[] = "tv";
static const char __pyx_k_tx[] = ", tx: ";
static const char __pyx_k_up[] = "up";
static const char __pyx_k_vp[] = "vp";
static const char __pyx_k_xz[] = ".xz";
static const char __pyx_k_03d[] = "03d";
static const char __pyx_k_06d[] = "06d";
static const char __pyx_k_A_1[] = "\200A\330\010\017\320\017*\250!\2501";
static const char __pyx_k_A_2[] = "A";
static const char __pyx_k_A_3[] = "\200A";
static const char __pyx_k_A_4[] = "\320\004 \240\014\250A";
static const char __pyx_k_A_Q[] = "\200A\360\016\000\t \320\037@\300\001\300\024\300Q";
static const char __pyx_k_A_a[] = "\200A\360\n\000\030*\250\021\250$\250a";
static const char __pyx_k_A_q[] = "\200A\330\010\017\210q";
static const char __pyx_k_Exp[] = " Exp=";
static const char __pyx_k_F_2[] = " -F ";
static const char __pyx_k_GSS[] = "GSS";
static const char __pyx_k_M_2[] = "-M ";
static const char __pyx_k_PTR[] = "PTR";
static const char __pyx_k_Q_2[] = "\240Q";
static const char __pyx_k_Q_3[] = "\200\001\330\004\n\210+\220Q";
static const char __pyx_k_R_2[] = "-R ";
static const char __pyx_k_SOA[] = "SOA";
static const char __pyx_k_S_2[] = "-S ";
static const char __pyx_k_TTL[] = " TTL=";
static const char __pyx_k_TXT[] = "TXT";
static const char __pyx_k__10[] = ")";
static const char __pyx_k__11[] = " -> ";
static const char __pyx_k__12[] = ":";
static const char __pyx_k__13[] = "'";
static const char __pyx_k__14[] = "{} {}";
static const char __pyx_k__15[] = "{} {} {} {} {} {} {}";
static const char __pyx_k__16[] = "\"";
static const char __pyx_k__17[] = "{} {} {} {} {}";
static const char __pyx_k__18[] = ": ";
static const char __pyx_k__19[] = "/";
static const char __pyx_k__20[] = "-@ ";
static const char __pyx_k__21[] = "\\'";
static const char __pyx_k__22[] = "' ";
static const char __pyx_k__23[] = ",";
static const char __pyx_k__24[] = "(?:.+\\/)?(.+)-";
static const char __pyx_k__25[] = "?";
static const char __pyx_k_a_2[] = "\240a";
static const char __pyx_k_ans[] = "ans";
static const char __pyx_k_ars[] = "ars";
static const char __pyx_k_buf[] = "buf";
static const char __pyx_k_bz2[] = ".bz2";
static const char __pyx_k_c_2[] = "-c ";
static const char __pyx_k_c_3[] = " -c ";
static const char __pyx_k_c_4[] = "c";
static const char __pyx_k_cmd[] = "cmd";
static const char __pyx_k_d_2[] = "-d ";
static const char __pyx_k_d_3[] = " -d ";
static const char __pyx_k_doc[] = "__doc__";
static const char __pyx_k_dst[] = "dst";
static const char __pyx_k_ecs[] = "ecs";
static const char __pyx_k_end[] = "end";
static const char __pyx_k_eof[] = "_eof";
static const char __pyx_k_err[] = "err";
static const char __pyx_k_esc[] = "esc";
static const char __pyx_k_exp[] = "exp";
static const char __pyx_k_ext[] = "ext";
static const char __pyx_k_far[] = "far";
static const char __pyx_k_hop[] = "hop";
static const char __pyx_k_htb[] = "htb";
static const char __pyx_k_i_2[] = "_i";
static const char __pyx_k_i_3[] = "-i ";
static const char __pyx_k_loc[] = "loc";
static const char __pyx_k_m_2[] = "m";
static const char __pyx_k_msg[] = "msg";
static const char __pyx_k_mtu[] = "mtu";
static const char __pyx_k_mux[] = "mux";
static const char __pyx_k_nit[] = "nit";
static const char __pyx_k_now[] = "now";
static const char __pyx_k_nss[] = "nss";
static const char __pyx_k_o_2[] = "o";
static const char __pyx_k_obj[] = "obj";
static const char __pyx_k_opt[] = "opt";
static const char __pyx_k_out[] = "out";
static const char __pyx_k_p_2[] = "-p '";
static const char __pyx_k_p_3[] = "p";
static const char __pyx_k_p_P[] = "-p '-P ";
static const char __pyx_k_pkt[] = "pkt";
static const char __pyx_k_pop[] = "pop";
static const char __pyx_k_ptr[] = "ptr";
static const char __pyx_k_r_2[] = "-r ";
static const char __pyx_k_r_3[] = "-r";
static const char __pyx_k_rec[] = "rec";
static const char __pyx_k_rtr[] = "rtr";
static const char __pyx_k_rtt[] = "rtt";
static const char __pyx_k_s_2[] = "s";
static const char __pyx_k_seq[] = ", seq=";
static const char __pyx_k_soa[] = "soa";
static const char __pyx_k_src[] = "src";
static const char __pyx_k_str[] = "__str__";
static const char __pyx_k_t_2[] = "' -t ";
static const char __pyx_k_t_3[] = "t";
static const char __pyx_k_tcp[] = "tcp";
static const char __pyx_k_tos[] = "tos";
static const char __pyx_k_ttl[] = " ttl=";
static const char __pyx_k_txt[] = "txt";
static const char __pyx_k_u_2[] = "u";
static const char __pyx_k_udp[] = "udp";
static const char __pyx_k_url[] = "url";
static const char __pyx_k_utc[] = "utc";
static const char __pyx_k_vps[] = "vps";
static const char __pyx_k_w_2[] = "-w ";
static const char __pyx_k_x_2[] = "_x";
static const char __pyx_k_AAAA[] = "AAAA";
static const char __pyx_k_A_1A[] = "\200A\360\n\000\t\020\320\017#\2401\240A";
static const char __pyx_k_A_1D[] = "\200A\360\020\000\t\035\320\034;\2701\270D\300\001";
static const char __pyx_k_A_4q[] = "\200A\330\010\037\320\037:\270!\2704\270q";
static const char __pyx_k_A_AQ[] = "\200A\360\n\000\t\020\320\017,\250A\250Q";
static const char __pyx_k_A_AT[] = "\200A\360\016\000\t \320\037<\270A\270T\300\021";
static const char __pyx_k_A_Qd[] = "\200A\360\020\000\t\035\320\034=\270Q\270d\300!";
static const char __pyx_k_A_aq[] = "\200A\360\016\000\t\020\320\017.\250a\250q";
static const char __pyx_k_A_t1[] = "\200A\360\016\000\t\020\210t\2201";
static const char __pyx_k_A_t7[] = "\200A\330\010\017\210t\2207\230'\240\021";
static const char __pyx_k_ICMP[] = "ICMP";
static const char __pyx_k_Icmp[] = "Icmp";
static const char __pyx_k_Loop[] = "Loop";
static const char __pyx_k_NSEC[] = "NSEC";
static const char __pyx_k_None[] = "None";
static const char __pyx_k_Qd_s[] = "\320\004\032\230!\360\020\000\t\020\320\017%\240Q\240d\250%\250s\260!";
static const char __pyx_k_aaaa[] = "aaaa";
static const char __pyx_k_addr[] = "addr";
static const char __pyx_k_ally[] = "ally";
static const char __pyx_k_args[] = "args";
static const char __pyx_k_asn4[] = "asn4";
static const char __pyx_k_base[] = "base";
static const char __pyx_k_bufs[] = "bufs";
static const char __pyx_k_cstr[] = "cstr";
static const char __pyx_k_data[] = "data";
static const char __pyx_k_diff[] = "diff";
static const char __pyx_k_dist[] = "dist";
static const char __pyx_k_dltx[] = "dltx";
static const char __pyx_k_done[] = "done";
static const char __pyx_k_dst1[] = "dst1";
static const char __pyx_k_dst2[] = "dst2";
static const char __pyx_k_elem[] = "elem";
static const char __pyx_k_enum[] = "enum";
static const char __pyx_k_exit[] = "__exit__";
static const char __pyx_k_exts[] = "exts";
static const char __pyx_k_func[] = "__func__";
static const char __pyx_k_halt[] = "halt";
static const char __pyx_k_hopc[] = "_hopc";
static const char __pyx_k_hops[] = "hops";
static const char __pyx_k_host[] = "host";
static const char __pyx_k_http[] = "http";
static const char __pyx_k_icmp[] = "icmp";
static const char __pyx_k_init[] = "__init__";
static const char __pyx_k_inst[] = "inst";
static const char __pyx_k_ipv4[] = "ipv4";
static const char __pyx_k_iter[] = "__iter__";
static const char __pyx_k_json[] = ".json";
static const char __pyx_k_keys[] = "keys";
static const char __pyx_k_kind[] = "kind";
static const char __pyx_k_link[] = "link";
static const char __pyx_k_main[] = "__main__";
static const char __pyx_k_meta[] = "meta";
static const char __pyx_k_mode[] = "mode";
static const char __pyx_k_mpls[] = "mpls";
static const char __pyx_k_ms_2[] = "ms";
static const char __pyx_k_mxes[] = "mxes";
static const char __pyx_k_name[] = "name";
static const char __pyx_k_near[] = "near";
static const char __pyx_k_next[] = "__next__";
static const char __pyx_k_node[] = "node";
static const char __pyx_k_note[] = "note";
static const char __pyx_k_nses[] = "nses";
static const char __pyx_k_nsid[] = "nsid";
static const char __pyx_k_path[] = "path";
static const char __pyx_k_ping[] = "ping";
static const char __pyx_k_poll[] = "poll";
static const char __pyx_k_port[] = "port";
static const char __pyx_k_ptrs[] = "ptrs";
static const char __pyx_k_read[] = "read";
static const char __pyx_k_rrtl[] = "rrtl";
static const char __pyx_k_seen[] = "seen";
static const char __pyx_k_self[] = "self";
static const char __pyx_k_send[] = "send";
static const char __pyx_k_size[] = "size";
static const char __pyx_k_spec[] = "__spec__";
static const char __pyx_k_stat[] = "stat";
static const char __pyx_k_stop[] = "stop";
static const char __pyx_k_svcb[] = "svcb";
static const char __pyx_k_sync[] = "sync";
static const char __pyx_k_task[] = "task";
static const char __pyx_k_tbit[] = "tbit";
static const char __pyx_k_test[] = "__test__";
static const char __pyx_k_text[] = "text";
static const char __pyx_k_time[] = "time";
static const char __pyx_k_tx_2[] = "tx";
static const char __pyx_k_txts[] = "txts";
static const char __pyx_k_unix[] = "unix";
static const char __pyx_k_up_2[] = "_up";
static const char __pyx_k_vp_c[] = "vp_c";
static const char __pyx_k_A_0_Q[] = "\200A\360\016\000\t\035\320\0340\260\001\260\024\260Q";
static const char __pyx_k_A_1_2[] = "\200A\360\016\000\t\020\320\017*\250!\2501";
static const char __pyx_k_A_31D[] = "\200A\360\020\000\t\035\320\0343\2601\260D\270\001";
static const char __pyx_k_A_4AT[] = "\200A\360\032\000\t\035\320\0344\260A\260T\270\021";
static const char __pyx_k_A_5Qd[] = "\200A\360\020\000\t\035\320\0345\260Q\260d\270!";
static const char __pyx_k_A_8_Q[] = "\200A\360\016\000\t\036\320\0358\270\001\270\024\270Q";
static const char __pyx_k_A_A_a[] = "\200A\360\020\000\t\035\320\034A\300\021\300$\300a";
static const char __pyx_k_A_C1D[] = "\200A\360\016\000\t \320\037C\3001\300D\310\001";
static const char __pyx_k_A_DAT[] = "\200A\360\020\000\t\035\320\034D\300A\300T\310\021";
static const char __pyx_k_A_EQd[] = "\200A\360\020\000\t \320\037E\300Q\300d\310!";
static const char __pyx_k_A_a_2[] = "\200A\360\010\000\030*\250\021\250$\250a";
static const char __pyx_k_A_at1[] = "\200A\360\020\000\t\035\320\034>\270a\270t\3001";
static const char __pyx_k_A_q_2[] = "\200A\360\010\000\t\020\320\017'\240q\250\001";
static const char __pyx_k_A_q_3[] = "\200A\360\016\000\t\020\320\017'\240q\250\001";
static const char __pyx_k_A_q_A[] = "\200A\360\016\000\t\035\320\034?\270q\300\004\300A";
static const char __pyx_k_A_vQc[] = "\200A\330\010\017\210v\220Q\220c\230\021\230'\240\021";
static const char __pyx_k_CNAME[] = "CNAME";
static const char __pyx_k_Error[] = "Error";
static const char __pyx_k_O_ptr[] = "-O ptr";
static const char __pyx_k_RRSIG[] = "RRSIG";
static const char __pyx_k_SSHFP[] = "SSHFP";
static const char __pyx_k_UTF_8[] = "UTF-8";
static const char __pyx_k_addrs[] = "addrs";
static const char __pyx_k_ascii[] = "ascii";
static const char __pyx_k_begin[] = "begin";
static const char __pyx_k_c_sff[] = "c_sff";
static const char __pyx_k_close[] = "close";
static const char __pyx_k_count[] = "_count";
static const char __pyx_k_dport[] = "dport";
static const char __pyx_k_dst_2[] = ", dst='";
static const char __pyx_k_enter[] = "__enter__";
static const char __pyx_k_eofcb[] = "eofcb";
static const char __pyx_k_ext_2[] = "_ext";
static const char __pyx_k_fbody[] = "fbody";
static const char __pyx_k_fname[] = "fname";
static const char __pyx_k_fudge[] = "fudge";
static const char __pyx_k_group[] = "group";
static const char __pyx_k_index[] = "_index";
static const char __pyx_k_insts[] = "insts";
static const char __pyx_k_is_rx[] = "is_rx";
static const char __pyx_k_is_tx[] = "is_tx";
static const char __pyx_k_label[] = "label";
static const char __pyx_k_linkc[] = "_linkc";
static const char __pyx_k_links[] = "links";
static const char __pyx_k_loops[] = "loops";
static const char __pyx_k_lower[] = "lower";
static const char __pyx_k_nodec[] = "_nodec";
static const char __pyx_k_nodes[] = "nodes";
static const char __pyx_k_notes[] = "notes";
static const char __pyx_k_onion[] = "onion";
static const char __pyx_k_param[] = "param";
static const char __pyx_k_place[] = "place";
static const char __pyx_k_pmtud[] = "pmtud";
static const char __pyx_k_probe[] = "probe";
static const char __pyx_k_qname[] = "qname";
static const char __pyx_k_qtype[] = "qtype";
static const char __pyx_k_query[] = "query";
static const char __pyx_k_range[] = "range";
static const char __pyx_k_rcode[] = "rcode";
static const char __pyx_k_reply[] = "reply";
static const char __pyx_k_rtype[] = "rtype";
static const char __pyx_k_sniff[] = "sniff";
static const char __pyx_k_sport[] = "sport";
static const char __pyx_k_src_2[] = ", src='";
static const char __pyx_k_start[] = "start";
static const char __pyx_k_stats[] = "_stats";
static const char __pyx_k_str_2[] = "str";
static const char __pyx_k_super[] = "super";
static const char __pyx_k_tasks[] = "tasks";
static const char __pyx_k_throw[] = "throw";
static const char __pyx_k_trace[] = "trace";
static const char __pyx_k_ttl_2[] = ", ttl: ";
static const char __pyx_k_ttl_3[] = "ttl";
static const char __pyx_k_ttl_4[] = ", ttl=";
static const char __pyx_k_txt_2[] = ".txt";
static const char __pyx_k_typea[] = "typea";
static const char __pyx_k_typec[] = "typec";
static const char __pyx_k_types[] = "types";
static const char __pyx_k_until[] = "until";
static const char __pyx_k_upper[] = "upper";
static const char __pyx_k_value[] = "value";
static const char __pyx_k_vpset[] = "vpset";
static const char __pyx_k_warts[] = "warts";
static const char __pyx_k_write[] = "write";
static const char __pyx_k_A_1A_2[] = "\200A\330\010\017\320\017+\2501\250A";
static const char __pyx_k_A_1A_3[] = "\200A\360\016\000\t\020\320\017+\2501\250A";
static const char __pyx_k_A_1D_2[] = "\200A\360\016\000\t \320\037;\2701\270D\300\001";
static const char __pyx_k_A_4q_1[] = "\200A\360\016\000\t\035\320\034:\270!\2704\270q\330\010!\240\031\250!\2501";
static const char __pyx_k_A_6at1[] = "\200A\360\016\000\t\035\320\0346\260a\260t\2701";
static const char __pyx_k_A_7q_A[] = "\200A\360\020\000\t \320\0377\260q\270\004\270A";
static const char __pyx_k_A_B_4q[] = "\200A\360\016\000\t\035\320\034B\300!\3004\300q";
static const char __pyx_k_A_HA_F[] = "\200A\360\n\000\t\r\210H\220A\330\010\014\210F\220!";
static const char __pyx_k_A_IQ_F[] = "\200A\330\010\014\210I\220Q\330\010\014\210F\220!";
static const char __pyx_k_A_J_4q[] = "\200A\360\020\000\t \320\037J\310!\3104\310q";
static const char __pyx_k_A_Q_IQ[] = "\200A\360\010\000\026)\250\001\250\024\250Q\330\010\014\210I\220Q";
static const char __pyx_k_A_Qd_2[] = "\200A\360\016\000\t \320\037=\270Q\270d\300!";
static const char __pyx_k_A_t1_2[] = "\200A\360\n\000\t\020\210t\2201";
static const char __pyx_k_A_t1_3[] = "\200A\360\010\000\t\020\210t\2201";
static const char __pyx_k_A_t5_a[] = "\200A\360\020\000\t\020\210t\2205\230\t\240\021\240$\240a";
static const char __pyx_k_DNSKEY[] = "DNSKEY";
static const char __pyx_k_Halted[] = "Halted";
static const char __pyx_k_O_dltx[] = "-O dltx";
static const char __pyx_k_O_nsid[] = "-O nsid";
static const char __pyx_k_Qd_s_2[] = "\320\004\032\230!\360\020\000\t\020\320\017%\240Q\240d\250%\250s\260(\270!";
static const char __pyx_k_add_vp[] = "_add_vp";
static const char __pyx_k_append[] = "append";
static const char __pyx_k_c_list[] = "c_list";
static const char __pyx_k_data_2[] = "_data";
static const char __pyx_k_decode[] = "decode";
static const char __pyx_k_do_dns[] = "do_dns";
static const char __pyx_k_enable[] = "enable";
static const char __pyx_k_encode[] = "encode";
static const char __pyx_k_exc_tb[] = "exc_tb";
static const char __pyx_k_exts_2[] = "_exts";
static const char __pyx_k_format[] = "format";
static const char __pyx_k_gmtime[] = "gmtime";
static const char __pyx_k_http_2[] = "_http";
static const char __pyx_k_inst_2[] = "_inst";
static const char __pyx_k_is_eof[] = "is_eof";
static const char __pyx_k_is_hdr[] = "is_hdr";
static const char __pyx_k_is_tcp[] = "is_tcp";
static const char __pyx_k_is_tls[] = "is_tls";
static const char __pyx_k_is_udp[] = "is_udp";
static const char __pyx_k_json_2[] = "json";
static const char __pyx_k_length[] = "length";
static const char __pyx_k_method[] = "method";
static const char __pyx_k_module[] = "__module__";
static const char __pyx_k_morecb[] = "morecb";
static const char __pyx_k_mpls_s[] = "mpls_s";
static const char __pyx_k_name_2[] = "__name__";
static const char __pyx_k_next_2[] = "next";
static const char __pyx_k_o_data[] = "o_data";
static const char __pyx_k_o_type[] = "o_type";
static const char __pyx_k_object[] = "object";
static const char __pyx_k_ping_2[] = "_ping";
static const char __pyx_k_probec[] = "probec";
static const char __pyx_k_probes[] = "probes";
static const char __pyx_k_qclass[] = "qclass";
static const char __pyx_k_queued[] = "_queued";
static const char __pyx_k_rclass[] = "rclass";
static const char __pyx_k_reduce[] = "__reduce__";
static const char __pyx_k_remote[] = "remote";
static const char __pyx_k_remove[] = "remove";
static const char __pyx_k_replyc[] = "replyc";
static const char __pyx_k_rounds[] = "rounds";
static const char __pyx_k_rrtype[] = "rrtype";
static const char __pyx_k_search[] = "search";
static const char __pyx_k_server[] = "server";
static const char __pyx_k_size_2[] = ", size=";
static const char __pyx_k_time_2[] = " time=";
static const char __pyx_k_tv_ptr[] = "tv_ptr";
static const char __pyx_k_tzinfo[] = "tzinfo";
static const char __pyx_k_userid[] = "userid";
static const char __pyx_k_A_31D_2[] = "\200A\360\016\000\t\035\320\0343\2601\260D\270\001";
static const char __pyx_k_A_4AT_2[] = "\200A\360\016\000\t\035\320\0344\260A\260T\270\021";
static const char __pyx_k_A_4uA_1[] = "\200A\360\020\000\t\035\320\034:\270!\2704\270u\300A\330\010!\240\031\250!\2501";
static const char __pyx_k_A_5Qd_2[] = "\200A\360\016\000\t\035\320\0345\260Q\260d\270!";
static const char __pyx_k_A_8_Q_1[] = "\200A\360\016\000\t\035\320\0348\270\001\270\024\270Q\330\010!\240\031\250!\2501";
static const char __pyx_k_A_8_Q_2[] = "\200A\360\016\000\t\035\320\0348\270\001\270\024\270Q";
static const char __pyx_k_A_A_a_2[] = "\200A\360\020\000\t \320\037A\300\021\300$\300a";
static const char __pyx_k_A_DAT_2[] = "\200A\360\016\000\t \320\037D\300A\300T\310\021";
static const char __pyx_k_A_EQd_2[] = "\200A\360\016\000\t \320\037E\300Q\300d\310!";
static const char __pyx_k_A_E_Q_U[] = "\200A\360\010\000\t\r\210E\220\024\220Q\330\014\r\210U\220!";
static const char __pyx_k_A_IQ_IQ[] = "\200A\330\010\014\210I\220Q\330\010\014\210I\220Q";
static const char __pyx_k_A_L_F_F[] = "\200A\330\010\014\210L\230\001\330\010\014\210F\220!\330\010\014\210F\220'\230\021";
static const char __pyx_k_A_Ry_HA[] = "\200A\330\010\r\210R\210y\230\001\230\021\330\010\014\210H\220A";
static const char __pyx_k_A_at1_2[] = "\200A\360\016\000\t \320\037>\270a\270t\3001";
static const char __pyx_k_A_q_A_2[] = "\200A\360\016\000\t \320\037?\270q\300\004\300A";
static const char __pyx_k_A_t5_1D[] = "\200A\360\020\000\t\020\210t\2205\230\013\2401\240D\250\001";
static const char __pyx_k_IntEnum[] = "IntEnum";
static const char __pyx_k_O_inseq[] = "-O inseq";
static const char __pyx_k_Unreach[] = "Unreach";
static const char __pyx_k_add_mux[] = "add_mux";
static const char __pyx_k_add_vps[] = "add_vps";
static const char __pyx_k_aliases[] = "aliases";
static const char __pyx_k_ancount[] = "ancount";
static const char __pyx_k_arcount[] = "arcount";
static const char __pyx_k_attempt[] = ", attempt: ";
static const char __pyx_k_c_cycle[] = "c_cycle";
static const char __pyx_k_count_2[] = "count";
static const char __pyx_k_dealias[] = "dealias";
static const char __pyx_k_disable[] = "disable";
static const char __pyx_k_do_ally[] = "do_ally";
static const char __pyx_k_do_http[] = "do_http";
static const char __pyx_k_do_ping[] = "do_ping";
static const char __pyx_k_do_tbit[] = "do_tbit";
static const char __pyx_k_dotasks[] = "_dotasks";
static const char __pyx_k_dport_2[] = ", dport=";
static const char __pyx_k_edns_do[] = "edns_do";
static const char __pyx_k_exc_val[] = "exc_val";
static const char __pyx_k_genexpr[] = "genexpr";
static const char __pyx_k_getinst[] = "_getinst";
static const char __pyx_k_headers[] = "headers";
static const char __pyx_k_hexlify[] = "hexlify";
static const char __pyx_k_icmp_id[] = "icmp_id";
static const char __pyx_k_is_6to4[] = "is_6to4";
static const char __pyx_k_is_ally[] = "is_ally";
static const char __pyx_k_is_bump[] = "is_bump";
static const char __pyx_k_is_data[] = "is_data";
static const char __pyx_k_is_done[] = "is_done";
static const char __pyx_k_is_icmp[] = "is_icmp";
static const char __pyx_k_is_ipv4[] = "is_ipv4";
static const char __pyx_k_is_ipv6[] = "is_ipv6";
static const char __pyx_k_is_mpls[] = "is_mpls";
static const char __pyx_k_is_read[] = "is_read";
static const char __pyx_k_isascii[] = "isascii";
static const char __pyx_k_listdir[] = "listdir";
static const char __pyx_k_message[] = "message";
static const char __pyx_k_nscount[] = "nscount";
static const char __pyx_k_outfile[] = "outfile";
static const char __pyx_k_payload[] = "payload";
static const char __pyx_k_prepare[] = "__prepare__";
static const char __pyx_k_probe_2[] = "_probe";
static const char __pyx_k_query_2[] = "_query";
static const char __pyx_k_replies[] = "replies";
static const char __pyx_k_rrtypes[] = "rrtypes";
static const char __pyx_k_scamper[] = "scamper";
static const char __pyx_k_seconds[] = "seconds";
static const char __pyx_k_section[] = "section";
static const char __pyx_k_sniff_S[] = "sniff -S ";
static const char __pyx_k_sport_2[] = ", sport=";
static const char __pyx_k_st_mode[] = "st_mode";
static const char __pyx_k_startat[] = "startat";
static const char __pyx_k_t_flags[] = "t_flags";
static const char __pyx_k_tcp_ack[] = "tcp_ack";
static const char __pyx_k_tcp_rst[] = "tcp-rst";
static const char __pyx_k_tcp_seq[] = "tcp_seq";
static const char __pyx_k_tcp_syn[] = "tcp-syn";
static const char __pyx_k_timeout[] = "timeout";
static const char __pyx_k_to_json[] = "to_json";
static const char __pyx_k_trace_2[] = "_trace";
static const char __pyx_k_tracelb[] = "tracelb";
static const char __pyx_k_udpsize[] = "udpsize";
static const char __pyx_k_A_0_U_iq[] = "\320\004\024\220A\360\020\000\t\033\320\0320\260\001\260\024\260U\270!\330\010\036\230i\240q\250\001";
static const char __pyx_k_A_7q_A_2[] = "\200A\360\016\000\t\036\320\0357\260q\270\004\270A";
static const char __pyx_k_A_7q_A_3[] = "\200A\360\016\000\t\035\320\0347\260q\270\004\270A";
static const char __pyx_k_A_B_4q_2[] = "\200A\360\016\000\t \320\037B\300!\3004\300q";
static const char __pyx_k_A_q_E_1A[] = "\200A\360\016\000\t\035\320\034?\270q\300\004\300E\310\021\330\010\"\240)\2501\250A";
static const char __pyx_k_A_t5_q_A[] = "\200A\360\020\000\t\020\210t\2205\230\007\230q\240\004\240A";
static const char __pyx_k_GapLimit[] = "GapLimit";
static const char __pyx_k_Gaplimit[] = "Gaplimit";
static const char __pyx_k_HopLimit[] = "HopLimit";
static const char __pyx_k_IcmpEcho[] = "IcmpEcho";
static const char __pyx_k_NoReason[] = "NoReason";
static const char __pyx_k_O_subnet[] = "-O subnet=";
static const char __pyx_k_S_ISSOCK[] = "S_ISSOCK";
static const char __pyx_k_TcpSport[] = "TcpSport";
static const char __pyx_k_UdpDport[] = "UdpDport";
static const char __pyx_k_UdpSport[] = "UdpSport";
static const char __pyx_k_add_inet[] = "add_inet";
static const char __pyx_k_add_unix[] = "add_unix";
static const char __pyx_k_ans_mxes[] = "ans_mxes";
static const char __pyx_k_ans_nses[] = "ans_nses";
static const char __pyx_k_ans_ptrs[] = "ans_ptrs";
static const char __pyx_k_ans_txts[] = "ans_txts";
static const char __pyx_k_attempts[] = "attempts";
static const char __pyx_k_binascii[] = "binascii";
static const char __pyx_k_datetime[] = "datetime";
static const char __pyx_k_do_sniff[] = "do_sniff";
static const char __pyx_k_do_trace[] = "do_trace";
static const char __pyx_k_endswith[] = "endswith";
static const char __pyx_k_exc_type[] = "exc_type";
static const char __pyx_k_filename[] = "filename";
static const char __pyx_k_firsthop[] = "firsthop";
static const char __pyx_k_format_2[] = "__format__";
static const char __pyx_k_gaplimit[] = "gaplimit";
static const char __pyx_k_getstate[] = "__getstate__";
static const char __pyx_k_hoplimit[] = "hoplimit";
static const char __pyx_k_icmp_seq[] = "icmp_seq";
static const char __pyx_k_icmp_sum[] = "icmp_sum";
static const char __pyx_k_insecure[] = "insecure";
static const char __pyx_k_is_write[] = "is_write";
static const char __pyx_k_mercator[] = "mercator";
static const char __pyx_k_midarest[] = "midarest";
static const char __pyx_k_mpls_exp[] = "mpls_exp";
static const char __pyx_k_mpls_lse[] = "mpls_lse";
static const char __pyx_k_mpls_ttl[] = "mpls_ttl";
static const char __pyx_k_probedef[] = "probedef";
static const char __pyx_k_probeset[] = "probeset";
static const char __pyx_k_property[] = "property";
static const char __pyx_k_qualname[] = "__qualname__";
static const char __pyx_k_radargun[] = "radargun";
static const char __pyx_k_reserved[] = "reserved";
static const char __pyx_k_schedule[] = "schedule";
static const char __pyx_k_set_name[] = "__set_name__";
static const char __pyx_k_setstate[] = "__setstate__";
static const char __pyx_k_squeries[] = "squeries";
static const char __pyx_k_stop_hop[] = "stop_hop";
static const char __pyx_k_timezone[] = "timezone";
static const char __pyx_k_udpprobe[] = "udpprobe";
static const char __pyx_k_warts_gz[] = "warts.gz";
static const char __pyx_k_warts_xz[] = "warts.xz";
static const char __pyx_k_A_4vS_at1[] = "\200A\330\010\013\2104\210v\220S\230\001\330\014\020\320\020%\320%>\270a\270t\3001\330\010\t";
static const char __pyx_k_A_5Qd_q_1[] = "\200A\360\020\000\t\035\320\0345\260Q\260d\270%\270q\330\010!\240\031\250!\2501";
static const char __pyx_k_A_8_U_9AQ[] = "\200A\360\016\000\t\036\320\0358\270\001\270\024\270U\300!\330\010#\2409\250A\250Q";
static const char __pyx_k_A_9_e1_1A[] = "\200A\360\016\000\t\035\320\0349\270\021\270$\270e\3001\330\010\"\240)\2501\250A";
static const char __pyx_k_A_at5_9AQ[] = "\200A\360\020\000\t\036\320\035>\270a\270t\3005\310\001\330\010#\2409\250A\250Q";
static const char __pyx_k_A_at5_Yaq[] = "\200A\360\016\000\t\035\320\034>\270a\270t\3005\310\001\330\010%\240Y\250a\250q";
static const char __pyx_k_Completed[] = "Completed";
static const char __pyx_k_LimitPktC[] = "LimitPktC";
static const char __pyx_k_LimitTime[] = "LimitTime";
static const char __pyx_k_ScamperVp[] = "ScamperVp";
static const char __pyx_k_TypeError[] = "TypeError";
static const char __pyx_k_ans_addrs[] = "ans_addrs";
static const char __pyx_k_dealias_2[] = "_dealias";
static const char __pyx_k_enumerate[] = "enumerate";
static const char __pyx_k_ext_count[] = "ext_count";
static const char __pyx_k_icmp_echo[] = "icmp-echo";
static const char __pyx_k_icmp_id_2[] = ", icmp_id=";
static const char __pyx_k_instances[] = "instances";
static const char __pyx_k_is_icmp_q[] = "is_icmp_q";
static const char __pyx_k_isdecimal[] = "isdecimal";
static const char __pyx_k_isenabled[] = "isenabled";
static const char __pyx_k_metaclass[] = "__metaclass__";
static const char __pyx_k_midardisc[] = "midardisc";
static const char __pyx_k_mpls_lses[] = "mpls_lses";
static const char __pyx_k_prefixlen[] = "prefixlen";
static const char __pyx_k_primitive[] = "primitive";
static const char __pyx_k_probedefs[] = "probedefs";
static const char __pyx_k_pyx_state[] = "__pyx_state";
static const char __pyx_k_rcode_num[] = "rcode_num";
static const char __pyx_k_reduce_ex[] = "__reduce_ex__";
static const char __pyx_k_responses[] = "responses";
static const char __pyx_k_rrtypes_2[] = "_rrtypes";
static const char __pyx_k_section_2[] = "_section";
static const char __pyx_k_shortname[] = "shortname";
static const char __pyx_k_tcp_ack_2[] = "tcp-ack";
static const char __pyx_k_timedelta[] = "timedelta";
static const char __pyx_k_timestamp[] = "timestamp";
static const char __pyx_k_warts_bz2[] = "warts.bz2";
static const char __pyx_k_A_2_4q_r_A[] = "\200A\360\020\000\t\032\320\0312\260!\2604\260q\330\010\017\210r\220\023\220A";
static const char __pyx_k_A_7q_A_1_1[] = "\200A\360\020\000\t\014\320\013\037\320\0377\260q\270\004\270A\330\014\023\2201\330\010\017\320\0171\260\021\260!";
static const char __pyx_k_A_F_Ja_Jaq[] = "\200A\330\010\014\210F\220!\330\010\014\210J\220a\330\010\014\210J\220a\220q";
static const char __pyx_k_A_HA_F_F_Q[] = "\200A\330\010\014\210H\220A\330\010\014\210F\220!\330\010\014\210F\220#\220Q";
static const char __pyx_k_A_IQ_F_F_a[] = "\200A\330\010\014\210I\220Q\330\010\014\210F\220!\330\010\014\210F\220$\220a";
static const char __pyx_k_A_Ja_F_F_q[] = "\200A\330\010\014\210J\220a\330\010\014\210F\220!\330\010\014\210F\220%\220q";
static const char __pyx_k_A_Ja_Ja_IU[] = "\200A\330\010\014\210J\220a\330\010\014\210J\220a\330\010\014\210I\220U\230!";
static const char __pyx_k_MPLS_Label[] = "MPLS Label=";
static const char __pyx_k_O_insecure[] = "-O insecure";
static const char __pyx_k_ScamperMux[] = "ScamperMux";
static const char __pyx_k_ValueError[] = "ValueError";
static const char __pyx_k_add_remote[] = "add_remote";
static const char __pyx_k_attempts_1[] = "attempts < 1";
static const char __pyx_k_bytes_from[] = " bytes from ";
static const char __pyx_k_confidence[] = "confidence";
static const char __pyx_k_do_tracelb[] = "do_tracelb";
static const char __pyx_k_exceptions[] = "exceptions";
static const char __pyx_k_icmp_paris[] = "icmp-paris";
static const char __pyx_k_icmp_sum_2[] = ", icmp_sum=";
static const char __pyx_k_is_rfc1918[] = "is_rfc1918";
static const char __pyx_k_is_unicast[] = "is_unicast";
static const char __pyx_k_limit_time[] = "limit_time";
static const char __pyx_k_link_count[] = "link_count";
static const char __pyx_k_mpls_count[] = "mpls_count";
static const char __pyx_k_mpls_label[] = "mpls_label";
static const char __pyx_k_node_count[] = "node_count";
static const char __pyx_k_prefixscan[] = "prefixscan";
static const char __pyx_k_probe_sent[] = "probe_sent";
static const char __pyx_k_pyx_vtable[] = "__pyx_vtable__";
static const char __pyx_k_remote_dir[] = "remote_dir";
static const char __pyx_k_startswith[] = "startswith";
static const char __pyx_k_stop_count[] = "stop_count";
static const char __pyx_k_wait_probe[] = "wait_probe";
static const char __pyx_k_wait_round[] = "wait_round";
static const char __pyx_k_A_31D_Q_IQa[] = "\200A\360\020\000\t\032\320\0313\2601\260D\270\005\270Q\330\010\034\230I\240Q\240a";
static const char __pyx_k_A_4t3a_1_1D[] = "\200A\360\016\000\t\014\2104\210t\2203\220a\330\014\023\2201\330\010\035\320\035;\2701\270D\300\001";
static const char __pyx_k_A_4t3a_1_Qd[] = "\200A\360\020\000\t\014\2104\210t\2203\220a\330\014\023\2201\330\010\035\320\035=\270Q\270d\300!";
static const char __pyx_k_A_5Qd_q_Yaq[] = "\200A\360\020\000\t\035\320\0345\260Q\260d\270%\270q\330\010\035\230Y\240a\240q";
static const char __pyx_k_A_Ja_Ja_Je1[] = "\200A\330\010\014\210J\220a\330\010\014\210J\220a\330\010\014\210J\220e\2301";
static const char __pyx_k_A_at5_Yaq_2[] = "\200A\360\022\000\t\032\320\031.\250a\250t\2605\270\001\330\010\035\230Y\240a\240q";
static const char __pyx_k_MemoryError[] = "MemoryError";
static const char __pyx_k_ScamperAddr[] = "ScamperAddr('";
static const char __pyx_k_ScamperCtrl[] = "ScamperCtrl";
static const char __pyx_k_ScamperFile[] = "ScamperFile";
static const char __pyx_k_ScamperHost[] = "ScamperHost";
static const char __pyx_k_ScamperHttp[] = "ScamperHttp";
static const char __pyx_k_ScamperInst[] = "ScamperInst ";
static const char __pyx_k_ScamperList[] = "ScamperList";
static const char __pyx_k_ScamperPing[] = "ScamperPing";
static const char __pyx_k_ScamperTask[] = "ScamperTask";
static const char __pyx_k_ScamperTbit[] = "ScamperTbit";
static const char __pyx_k_TcpAckSport[] = "TcpAckSport";
static const char __pyx_k_a_AT_a_1Ct1[] = "\320\004\026\220a\360\022\000\t\035\320\034<\270A\270T\300\025\300a\330\010\"\240)\2501\250C\250t\2601";
static const char __pyx_k_do_mercator[] = "do_mercator";
static const char __pyx_k_do_midarest[] = "do_midarest";
static const char __pyx_k_do_radargun[] = "do_radargun";
static const char __pyx_k_do_udpprobe[] = "do_udpprobe";
static const char __pyx_k_format_spec[] = "format_spec";
static const char __pyx_k_has_aliases[] = "has_aliases";
static const char __pyx_k_icmp_icmpid[] = "icmp[icmpid] == ";
static const char __pyx_k_invalid_TTL[] = "invalid TTL";
static const char __pyx_k_invalid_dst[] = "invalid dst";
static const char __pyx_k_invalid_src[] = "invalid src";
static const char __pyx_k_invalid_url[] = "invalid url";
static const char __pyx_k_is_icmp_ptb[] = "is_icmp_ptb";
static const char __pyx_k_is_mercator[] = "is_mercator";
static const char __pyx_k_is_midarest[] = "is_midarest";
static const char __pyx_k_is_radargun[] = "is_radargun";
static const char __pyx_k_is_reserved[] = "is_reserved";
static const char __pyx_k_is_stop_gss[] = "is_stop_gss";
static const char __pyx_k_listallowed[] = "listallowed";
static const char __pyx_k_mro_entries[] = "__mro_entries__";
static const char __pyx_k_probe_count[] = "probe_count";
static const char __pyx_k_recordroute[] = "recordroute";
static const char __pyx_k_reply_count[] = "reply_count";
static const char __pyx_k_A_1D_5_1_1_q[] = "\200A\360\016\000\t\036\320\035;\2701\270D\300\001\330\010\013\2105\220\003\320\023#\2401\330\014\023\2201\330\010\017\210q";
static const char __pyx_k_A_4t3a_1_8_Q[] = "\200A\360\016\000\t\014\2104\210t\2203\220a\330\014\023\2201\330\010\035\320\0358\270\001\270\024\270Q";
static const char __pyx_k_A_4t3a_1_9_a[] = "\200A\360\016\000\t\014\2104\210t\2203\220a\330\014\023\2201\330\010\035\320\0359\270\021\270$\270a";
static const char __pyx_k_A_4t3a_1_A_a[] = "\200A\360\020\000\t\014\2104\210t\2203\220a\330\014\023\2201\330\010\035\320\035A\300\021\300$\300a";
static const char __pyx_k_A_4t3a_1_DAT[] = "\200A\360\016\000\t\014\2104\210t\2203\220a\330\014\023\2201\330\010\035\320\035D\300A\300T\310\021";
static const char __pyx_k_A_4t3a_1_t3c[] = "\200A\360\022\000\t\014\2104\210t\2203\220a\330\014\023\2201\330\010\017\210t\2203\220c\230\021\230!";
static const char __pyx_k_RuntimeError[] = "RuntimeError";
static const char __pyx_k_ScamperCycle[] = "ScamperCycle";
static const char __pyx_k_ScamperSniff[] = "ScamperSniff";
static const char __pyx_k_ScamperSting[] = "ScamperSting";
static const char __pyx_k_ScamperTrace[] = "ScamperTrace";
static const char __pyx_k_all_attempts[] = "all_attempts";
static const char __pyx_k_do_midardisc[] = "do_midardisc";
static const char __pyx_k_edns_version[] = "edns_version";
static const char __pyx_k_filter_types[] = "filter_types";
static const char __pyx_k_got_err_from[] = "got err from ";
static const char __pyx_k_initializing[] = "_initializing";
static const char __pyx_k_invalid_mode[] = "invalid mode: ";
static const char __pyx_k_invalid_size[] = "invalid size";
static const char __pyx_k_invalid_type[] = "invalid type";
static const char __pyx_k_is_coroutine[] = "_is_coroutine";
static const char __pyx_k_is_icmp_time[] = "is_icmp_time";
static const char __pyx_k_is_linklocal[] = "is_linklocal";
static const char __pyx_k_is_midardisc[] = "is_midardisc";
static const char __pyx_k_is_stop_icmp[] = "is_stop_icmp";
static const char __pyx_k_is_stop_loop[] = "is_stop_loop";
static const char __pyx_k_microseconds[] = "microseconds";
static const char __pyx_k_not_readable[] = "not readable";
static const char __pyx_k_probe_flowid[] = "probe flowid: ";
static const char __pyx_k_stringsource[] = "<stringsource>";
static const char __pyx_k_wait_timeout[] = "wait_timeout";
static const char __pyx_k_A_4t3a_1_Fat1[] = "\200A\360\020\000\t\014\2104\210t\2203\220a\330\014\023\2201\330\010\035\320\035F\300a\300t\3101";
static const char __pyx_k_ScamperAddr_2[] = "ScamperAddr";
static const char __pyx_k_ScamperHostMX[] = "ScamperHostMX";
static const char __pyx_k_ScamperHostRR[] = "ScamperHostRR";
static const char __pyx_k_ScamperInst_2[] = "ScamperInst";
static const char __pyx_k_StopIteration[] = "StopIteration";
static const char __pyx_k_cannot_filter[] = "cannot filter ";
static const char __pyx_k_class_getitem[] = "__class_getitem__";
static const char __pyx_k_do_prefixscan[] = "do_prefixscan";
static const char __pyx_k_invalid_dport[] = "invalid dport";
static const char __pyx_k_invalid_sport[] = "invalid sport";
static const char __pyx_k_is_prefixscan[] = "is_prefixscan";
static const char __pyx_k_is_stop_error[] = "is_stop_error";
static const char __pyx_k_is_vary_dport[] = "is_vary_dport";
static const char __pyx_k_is_vary_sport[] = "is_vary_sport";
static const char __pyx_k_missing_addrs[] = "missing addrs";
static const char __pyx_k_reduce_cython[] = "__reduce_cython__";
static const char __pyx_k_total_seconds[] = "total_seconds";
static const char __pyx_k_A_1D_5_1_1_q_2[] = "\200A\360\020\000\t\036\320\035;\2701\270D\300\001\330\010\013\2105\220\003\320\023#\2401\330\014\023\2201\330\010\017\210q";
static const char __pyx_k_A_1D_5_1_1_q_3[] = "\200A\360\022\000\t\036\320\035;\2701\270D\300\001\330\010\013\2105\220\003\320\023#\2401\330\014\023\2201\330\010\017\210q";
static const char __pyx_k_A_1D_5_1_1_q_4[] = "\200A\360\024\000\t\036\320\035;\2701\270D\300\001\330\010\013\2105\220\003\320\023#\2401\330\014\023\2201\330\010\017\210q";
static const char __pyx_k_A_G1_G1_G2Q_G1[] = "\200A\330\010\014\210G\2201\330\010\014\210G\2201\330\010\014\210G\2202\220Q\330\010\014\210G\2201";
static const char __pyx_k_NotImplemented[] = "NotImplemented";
static const char __pyx_k_ScamperDealias[] = "ScamperDealias";
static const char __pyx_k_ScamperHostOPT[] = "ScamperHostOPT";
static const char __pyx_k_ScamperHostSOA[] = "ScamperHostSOA";
static const char __pyx_k_ScamperHostTXT[] = "ScamperHostTXT";
static const char __pyx_k_ScamperHost_an[] = "ScamperHost.an";
static const char __pyx_k_ScamperHost_ar[] = "ScamperHost.ar";
static const char __pyx_k_ScamperHost_ns[] = "ScamperHost.ns";
static const char __pyx_k_ScamperHttpBuf[] = "ScamperHttpBuf";
static const char __pyx_k_ScamperIcmpExt[] = "ScamperIcmpExt";
static const char __pyx_k_ScamperMux_vps[] = "ScamperMux.vps";
static const char __pyx_k_ScamperTbitPkt[] = "ScamperTbitPkt";
static const char __pyx_k_ScamperTracelb[] = "ScamperTracelb";
static const char __pyx_k_add_remote_dir[] = "add_remote_dir";
static const char __pyx_k_dealias_m_ally[] = "dealias -m ally";
static const char __pyx_k_extended_rcode[] = "extended_rcode";
static const char __pyx_k_got_fatal_from[] = "got fatal from ";
static const char __pyx_k_is_from_target[] = "is_from_target";
static const char __pyx_k_is_stop_halted[] = "is_stop_halted";
static const char __pyx_k_probedef_count[] = "probedef_count";
static const char __pyx_k_unknown_method[] = "unknown method ";
static const char __pyx_k_A_3at82Q_1_2_4q[] = "\200A\360\020\000\t\014\2103\210a\210t\2208\2302\230Q\330\014\023\2201\330\010\036\320\0362\260!\2604\260q";
static const char __pyx_k_A_7q_E_4s_1_s_1[] = "\200A\360\020\000\t\034\320\0337\260q\270\004\270E\300\021\330\010\013\2104\210s\220!\330\014\023\2201\330\010\017\210s\220'\230\021\230)\2401";
static const char __pyx_k_A_a_E_Q_waq_A_q[] = "\200A\360\n\000\t\017\210a\330\010\014\210E\220\024\220Q\330\014\017\210w\220a\220q\230\004\230A\330\010\017\210q";
static const char __pyx_k_A_d_AT_G1_1_1_a[] = "\200A\330\010\016\210d\220&\230\004\230A\230T\240\021\330\010\014\210G\2201\330\010\013\2101\330\014\023\2201\330\010\016\210a";
static const char __pyx_k_ScamperCtrl_vps[] = "ScamperCtrl.vps";
static const char __pyx_k_ScamperHostSVCB[] = "ScamperHostSVCB";
static const char __pyx_k_ScamperHostType[] = "ScamperHostType";
static const char __pyx_k_ScamperHost_ans[] = "ScamperHost.ans";
static const char __pyx_k_ScamperHost_ars[] = "ScamperHost.ars";
static const char __pyx_k_ScamperHost_nss[] = "ScamperHost.nss";
static const char __pyx_k_ScamperHttp_buf[] = "ScamperHttp.buf";
static const char __pyx_k_ScamperIcmpExts[] = "ScamperIcmpExts";
static const char __pyx_k_ScamperInstData[] = "_ScamperInstData";
static const char __pyx_k_ScamperSniffPkt[] = "ScamperSniffPkt";
static const char __pyx_k_ScamperTraceHop[] = "ScamperTraceHop";
static const char __pyx_k_ScamperUdpprobe[] = "ScamperUdpprobe";
static const char __pyx_k_a_2Rq_1_6at5_1A[] = "\320\004\026\220a\360\020\000\t\014\2102\210R\210q\330\014\023\2201\330\010\034\320\0346\260a\260t\2705\300\001\330\010\"\240)\2501\250A";
static const char __pyx_k_could_not_write[] = "could not write ";
static const char __pyx_k_invalid_ICMP_ID[] = "invalid ICMP ID";
static const char __pyx_k_invalid_address[] = "invalid address";
static const char __pyx_k_invalid_icmp_id[] = "invalid icmp_id";
static const char __pyx_k_is_icmp_tsreply[] = "is_icmp_tsreply";
static const char __pyx_k_is_icmp_ttl_exp[] = "is_icmp_ttl_exp";
static const char __pyx_k_is_icmp_unreach[] = "is_icmp_unreach";
static const char __pyx_k_is_stop_unreach[] = "is_stop_unreach";
static const char __pyx_k_limit_pkt_count[] = "limit_pkt_count";
static const char __pyx_k_not_implemented[] = "not implemented";
static const char __pyx_k_setstate_cython[] = "__setstate_cython__";
static const char __pyx_k_ScamperCtrl_done[] = "ScamperCtrl.done";
static const char __pyx_k_ScamperCtrl_poll[] = "ScamperCtrl.poll";
static const char __pyx_k_ScamperFile_read[] = "ScamperFile.read";
static const char __pyx_k_ScamperHostQuery[] = "ScamperHostQuery";
static const char __pyx_k_ScamperHttp_bufs[] = "ScamperHttp.bufs";
static const char __pyx_k_ScamperInstError[] = "ScamperInstError";
static const char __pyx_k_ScamperInst_done[] = "ScamperInst.done";
static const char __pyx_k_ScamperPingReply[] = "ScamperPingReply";
static const char __pyx_k_ScamperSniffStop[] = "ScamperSniffStop";
static const char __pyx_k_ScamperSniff_pkt[] = "ScamperSniff.pkt";
static const char __pyx_k_ScamperTask_halt[] = "ScamperTask.halt";
static const char __pyx_k_ScamperTraceStop[] = "ScamperTraceStop";
static const char __pyx_k_ScamperTrace_hop[] = "ScamperTrace.hop";
static const char __pyx_k_invalid_icmp_sum[] = "invalid icmp_sum";
static const char __pyx_k_is_stop_gaplimit[] = "is_stop_gaplimit";
static const char __pyx_k_is_stop_hoplimit[] = "is_stop_hoplimit";
static const char __pyx_k_is_stop_noreason[] = "is_stop_noreason";
static const char __pyx_k_is_tcp_ack_sport[] = "is_tcp_ack_sport";
static const char __pyx_k_missing_schedule[] = "missing schedule";
static const char __pyx_k_ScamperFile_close[] = "ScamperFile.close";
static const char __pyx_k_ScamperFile_write[] = "ScamperFile.write";
static const char __pyx_k_ScamperPing_reply[] = "ScamperPing.reply";
static const char __pyx_k_ScamperTracePmtud[] = "ScamperTracePmtud";
static const char __pyx_k_ScamperTrace_hops[] = "ScamperTrace.hops";
static const char __pyx_k_could_not_extract[] = "could not extract ";
static const char __pyx_k_has_signalled_EOF[] = " has signalled EOF";
static const char __pyx_k_invalid_address_2[] = "invalid address ";
static const char __pyx_k_invalid_hop_index[] = "invalid hop index: ";
static const char __pyx_k_is_stop_completed[] = "is_stop_completed";
static const char __pyx_k_missing_probedefs[] = "missing probedefs";
static const char __pyx_k_nothing_to_filter[] = "nothing to filter";
static const char __pyx_k_A_4t2T_4uIQd_q_1_a[] = "\200A\330\010\013\2104\210t\2202\220T\230\021\330\014\023\2204\220u\230I\240Q\240d\250!\330\014\020\220\007\220q\330\014\023\2201\330\010\016\210a";
static const char __pyx_k_A_4t2T_D_q_A_q_1_a[] = "\200A\330\010\013\2104\210t\2202\220T\230\021\330\014\024\220D\230\t\240\026\240q\250\004\250A\330\014\020\220\007\220q\330\014\023\2201\330\010\016\210a";
static const char __pyx_k_A_4t2T_D_vQd_q_1_a[] = "\200A\330\010\013\2104\210t\2202\220T\230\021\330\014\024\220D\230\007\230v\240Q\240d\250!\330\014\020\220\007\220q\330\014\023\2201\330\010\016\210a";
static const char __pyx_k_A_4t2T_Yiq_A_q_1_a[] = "\200A\330\010\013\2104\210t\2202\220T\230\021\330\014\021\220\024\220Y\230i\240q\250\004\250A\330\014\020\220\007\220q\330\014\023\2201\330\010\016\210a";
static const char __pyx_k_A_4t2T_fD_t1_q_1_a[] = "\200A\330\010\013\2104\210t\2202\220T\230\021\330\014\022\220$\220f\230D\240\001\240\026\240t\2501\330\014\020\220\007\220q\330\014\023\2201\330\010\016\210a";
static const char __pyx_k_A_4xr_Q_gT_a_1_1_a[] = "\200A\330\010\013\2104\210x\220r\230\024\230Q\330\014\022\220$\220g\230T\240\021\240$\240a\330\014\020\220\013\2301\330\014\023\2201\330\010\016\210a";
static const char __pyx_k_ScamperCtrl___exit[] = "ScamperCtrl.__exit__";
static const char __pyx_k_ScamperCtrl_do_dns[] = "ScamperCtrl.do_dns";
static const char __pyx_k_ScamperFile___exit[] = "ScamperFile.__exit__";
static const char __pyx_k_ScamperHostOPTElem[] = "ScamperHostOPTElem";
static const char __pyx_k_ScamperHostTXT_str[] = "ScamperHostTXT.str";
static const char __pyx_k_ScamperInst_is_eof[] = "ScamperInst.is_eof";
static const char __pyx_k_ScamperPing__stats[] = "ScamperPing._stats";
static const char __pyx_k_ScamperPing_is_tcp[] = "ScamperPing.is_tcp";
static const char __pyx_k_ScamperPing_is_udp[] = "ScamperPing.is_udp";
static const char __pyx_k_ScamperTrace_addrs[] = "ScamperTrace.addrs";
static const char __pyx_k_ScamperTracelbLink[] = "ScamperTracelbLink";
static const char __pyx_k_ScamperTracelbNode[] = "ScamperTracelbNode";
static const char __pyx_k_asyncio_coroutines[] = "asyncio.coroutines";
static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";
static const char __pyx_k_dealias_m_mercator[] = "dealias -m mercator";
static const char __pyx_k_dealias_m_midarest[] = "dealias -m midarest";
static const char __pyx_k_dealias_m_radargun[] = "dealias -m radargun";
static const char __pyx_k_dst_cannot_be_none[] = "dst cannot be none";
static const char __pyx_k_extended_rcode_num[] = "extended_rcode_num";
static const char __pyx_k_invalid_limit_time[] = "invalid limit_time";
static const char __pyx_k_is_icmp_echo_reply[] = "is_icmp_echo_reply";
static const char __pyx_k_A_4xr_Q_4we1D_1_1_a[] = "\200A\330\010\013\2104\210x\220r\230\024\230Q\330\014\023\2204\220w\230e\2401\240D\250\001\330\014\020\220\013\2301\330\014\023\2201\330\010\016\210a";
static const char __pyx_k_A_G4t1_s_q_Qc_t1E_a[] = "\200A\360\016\000\t\021\220\001\330\010\014\210G\2204\220t\2301\330\014\017\210s\220&\230\007\230q\330\020\025\220Q\220c\230\031\240!\330\010\017\210t\2201\220E\230\025\230a";
static const char __pyx_k_ScamperAddr_is_6to4[] = "ScamperAddr.is_6to4";
static const char __pyx_k_ScamperAddr_is_ipv4[] = "ScamperAddr.is_ipv4";
static const char __pyx_k_ScamperAddr_is_ipv6[] = "ScamperAddr.is_ipv6";
static const char __pyx_k_ScamperCtrl___enter[] = "ScamperCtrl.__enter__";
static const char __pyx_k_ScamperCtrl__add_vp[] = "ScamperCtrl._add_vp";
static const char __pyx_k_ScamperCtrl_add_mux[] = "ScamperCtrl.add_mux";
static const char __pyx_k_ScamperCtrl_add_vps[] = "ScamperCtrl.add_vps";
static const char __pyx_k_ScamperCtrl_do_ally[] = "ScamperCtrl.do_ally";
static const char __pyx_k_ScamperCtrl_do_http[] = "ScamperCtrl.do_http";
static const char __pyx_k_ScamperCtrl_do_ping[] = "ScamperCtrl.do_ping";
static const char __pyx_k_ScamperCtrl_do_tbit[] = "ScamperCtrl.do_tbit";
static const char __pyx_k_ScamperCtrl_is_done[] = "ScamperCtrl.is_done";
static const char __pyx_k_ScamperDealiasProbe[] = "ScamperDealiasProbe";
static const char __pyx_k_ScamperDealiasReply[] = "ScamperDealiasReply";
static const char __pyx_k_ScamperFile___enter[] = "ScamperFile.__enter__";
static const char __pyx_k_ScamperFile_is_read[] = "ScamperFile.is_read";
static const char __pyx_k_ScamperHostOPT_elem[] = "ScamperHostOPT.elem";
static const char __pyx_k_ScamperHostQuery_an[] = "ScamperHostQuery.an";
static const char __pyx_k_ScamperHostQuery_ar[] = "ScamperHostQuery.ar";
static const char __pyx_k_ScamperHostQuery_ns[] = "ScamperHostQuery.ns";
static const char __pyx_k_ScamperHost_to_json[] = "ScamperHost.to_json";
static const char __pyx_k_ScamperHttpIterator[] = "_ScamperHttpIterator";
static const char __pyx_k_ScamperIcmpExts_ext[] = "ScamperIcmpExts.ext";
static const char __pyx_k_ScamperPingIterator[] = "_ScamperPingIterator";
static const char __pyx_k_ScamperPing_is_icmp[] = "ScamperPing.is_icmp";
static const char __pyx_k_ScamperPing_replies[] = "ScamperPing.replies";
static const char __pyx_k_ScamperPing_to_json[] = "ScamperPing.to_json";
static const char __pyx_k_ScamperTbit_to_json[] = "ScamperTbit.to_json";
static const char __pyx_k_ScamperTrace_is_tcp[] = "ScamperTrace.is_tcp";
static const char __pyx_k_ScamperTrace_is_udp[] = "ScamperTrace.is_udp";
static const char __pyx_k_ScamperTracelbProbe[] = "ScamperTracelbProbe";
static const char __pyx_k_ScamperTracelbReply[] = "ScamperTracelbReply";
static const char __pyx_k_ScamperTracelb_link[] = "ScamperTracelb.link";
static const char __pyx_k_ScamperTracelb_node[] = "ScamperTracelb.node";
static const char __pyx_k_could_not_open_file[] = "could not open file";
static const char __pyx_k_dealias_m_midardisc[] = "dealias -m midardisc";
static const char __pyx_k_response_hdr_byname[] = "response_hdr_byname";
static const char __pyx_k_transmit_hdr_byname[] = "transmit_hdr_byname";
static const char __pyx_k_A_0_U_2S_1_6as_y_Ct1[] = "\200A\360\020\000\t\032\320\0310\260\001\260\024\260U\270!\330\010\013\2102\210S\220\001\330\014\023\2201\330\010\031\320\0316\260a\260s\270!\330\010\037\230y\250\001\250\023\250C\250t\2601";
static const char __pyx_k_A_4xr_Q_4s_q_A_1_1_a[] = "\200A\330\010\013\2104\210x\220r\230\024\230Q\330\014\023\2204\220s\230%\230q\240\004\240A\330\014\020\220\013\2301\330\014\023\2201\330\010\016\210a";
static const char __pyx_k_A_7q_A_1_2_q_A_1_4uA[] = "\200A\360\022\000\t\014\320\013\037\320\0377\260q\270\004\270A\330\014\023\2201\330\010\013\2102\320\r \320 ?\270q\300\004\300A\330\014\023\2201\330\010\037\320\037:\270!\2704\270u\300A";
static const char __pyx_k_A_7q_A_1_2_q_A_1_QfA[] = "\200A\360\024\000\t\014\320\013\037\320\0377\260q\270\004\270A\330\014\023\2201\330\010\013\2102\320\r \320 ?\270q\300\004\300A\330\014\023\2201\330\010\017\320\017-\250Q\250f\260A";
static const char __pyx_k_A_7q_A_1_2_q_A_1_at5[] = "\200A\360\022\000\t\014\320\013\037\320\0377\260q\270\004\270A\330\014\023\2201\330\010\013\2102\320\r \320 ?\270q\300\004\300A\330\014\023\2201\330\010\037\320\037>\270a\270t\3005\310\001";
static const char __pyx_k_A_q_E_2S_1_away_AQ_q[] = "\200A\360\016\000\t\033\320\032/\250q\260\004\260E\270\021\330\010\013\2102\210S\220\001\330\014\023\2201\330\010\016\210a\210w\220a\220y\240\001\330\010\014\210A\210Q\330\010\017\210q";
static const char __pyx_k_A_q_G4t1_s_gQ_G1Cq_q[] = "\200A\360\016\000\t\020\210q\330\010\014\210G\2204\220t\2301\330\014\017\210s\220$\220g\230Q\330\020\024\220G\2301\230C\230q\330\010\017\210q";
static const char __pyx_k_A_q_G4t1_s_wa_G1Cq_q[] = "\200A\360\016\000\t\020\210q\330\010\014\210G\2204\220t\2301\330\014\017\210s\220%\220w\230a\330\020\024\220G\2301\230C\230q\330\010\017\210q";
static const char __pyx_k_ScamperAddr___format[] = "ScamperAddr.__format__";
static const char __pyx_k_ScamperCtrl__dotasks[] = "ScamperCtrl._dotasks";
static const char __pyx_k_ScamperCtrl__getinst[] = "ScamperCtrl._getinst";
static const char __pyx_k_ScamperCtrl_add_inet[] = "ScamperCtrl.add_inet";
static const char __pyx_k_ScamperCtrl_add_unix[] = "ScamperCtrl.add_unix";
static const char __pyx_k_ScamperCtrl_do_sniff[] = "ScamperCtrl.do_sniff";
static const char __pyx_k_ScamperCtrl_do_trace[] = "ScamperCtrl.do_trace";
static const char __pyx_k_ScamperDealias_probe[] = "ScamperDealias.probe";
static const char __pyx_k_ScamperFile_is_write[] = "ScamperFile.is_write";
static const char __pyx_k_ScamperHostSVCBParam[] = "ScamperHostSVCBParam";
static const char __pyx_k_ScamperHost_ans_mxes[] = "ScamperHost.ans_mxes";
static const char __pyx_k_ScamperHost_ans_nses[] = "ScamperHost.ans_nses";
static const char __pyx_k_ScamperHost_ans_ptrs[] = "ScamperHost.ans_ptrs";
static const char __pyx_k_ScamperHost_ans_txts[] = "ScamperHost.ans_txts";
static const char __pyx_k_ScamperHttpBuf_is_rx[] = "ScamperHttpBuf.is_rx";
static const char __pyx_k_ScamperHttpBuf_is_tx[] = "ScamperHttpBuf.is_tx";
static const char __pyx_k_ScamperIcmpExts_exts[] = "ScamperIcmpExts.exts";
static const char __pyx_k_ScamperNeighbourdisc[] = "ScamperNeighbourdisc";
static const char __pyx_k_ScamperTbitPkt_is_rx[] = "ScamperTbitPkt.is_rx";
static const char __pyx_k_ScamperTbitPkt_is_tx[] = "ScamperTbitPkt.is_tx";
static const char __pyx_k_ScamperTrace_is_icmp[] = "ScamperTrace.is_icmp";
static const char __pyx_k_ScamperTrace_to_json[] = "ScamperTrace.to_json";
static const char __pyx_k_ScamperTracelbMethod[] = "ScamperTracelbMethod";
static const char __pyx_k_ScamperTracelb_links[] = "ScamperTracelb.links";
static const char __pyx_k_ScamperTracelb_nodes[] = "ScamperTracelb.nodes";
static const char __pyx_k_ScamperUdpprobeProbe[] = "ScamperUdpprobeProbe";
static const char __pyx_k_ScamperUdpprobeReply[] = "ScamperUdpprobeReply";
static const char __pyx_k_could_not_connect_to[] = "could not connect to ";
static const char __pyx_k_dealias_m_prefixscan[] = "dealias -m prefixscan";
static const char __pyx_k_expected_int_for_end[] = "expected int for end";
static const char __pyx_k_is_icmp_unreach_port[] = "is_icmp_unreach_port";
static const char __pyx_k_A_1D_k_A_2S_1A_G7_1_q[] = "\200A\330\010\033\320\033+\2501\250D\260\006\260k\300\023\300A\330\010\013\2102\210S\220\001\330\014\r\330\010\032\230)\2401\240A\330\010\014\210G\2207\230!\2301\330\010\017\210q";
static const char __pyx_k_A_4t3a_1_8_U_2S_1_9AQ[] = "\200A\360\020\000\t\014\2104\210t\2203\220a\330\014\023\2201\330\010\031\320\0318\270\001\270\024\270U\300!\330\010\013\2102\210S\220\001\330\014\023\2201\330\010#\2409\250A\250Q";
static const char __pyx_k_A_4t3a_1_9_e1_5_1_1_1[] = "\200A\360\020\000\t\014\2104\210t\2203\220a\330\014\023\2201\330\010\034\320\0349\270\021\270$\270e\3001\330\010\013\2105\220\003\2201\330\014\023\2201\330\010!\240\031\250!\2501";
static const char __pyx_k_A_7q_A_1_2_q_A_1_AT_a[] = "\200A\360\022\000\t\014\320\013\037\320\0377\260q\270\004\270A\330\014\023\2201\330\010\013\2102\320\r \320 ?\270q\300\004\300A\330\014\023\2201\330\010\037\320\037<\270A\270T\300\025\300a";
static const char __pyx_k_A_Qd_q_2S_1_away_AQ_q[] = "\200A\360\016\000\t\032\320\031-\250Q\250d\260%\260q\330\010\013\2102\210S\220\001\330\014\023\2201\330\010\016\210a\210w\220a\220y\240\001\330\010\014\210A\210Q\330\010\017\210q";
static const char __pyx_k_A_d_b_A_D_fAT_q_q_q_a[] = "\200A\330\010\016\210d\220$\220b\230\004\230A\330\014\024\220D\230\006\230f\240A\240T\250\021\330\014\020\220\007\220q\330\014\017\210q\330\020\027\220q\330\010\016\210a";
static const char __pyx_k_SCAMPER_CTRL_TYPE_EOF[] = "SCAMPER_CTRL_TYPE_EOF";
static const char __pyx_k_SCAMPER_CTRL_TYPE_ERR[] = "SCAMPER_CTRL_TYPE_ERR";
static const char __pyx_k_SCAMPER_FILE_OBJ_ADDR[] = "SCAMPER_FILE_OBJ_ADDR";
static const char __pyx_k_SCAMPER_FILE_OBJ_HOST[] = "SCAMPER_FILE_OBJ_HOST";
static const char __pyx_k_SCAMPER_FILE_OBJ_HTTP[] = "SCAMPER_FILE_OBJ_HTTP";
static const char __pyx_k_SCAMPER_FILE_OBJ_LIST[] = "SCAMPER_FILE_OBJ_LIST";
static const char __pyx_k_SCAMPER_FILE_OBJ_PING[] = "SCAMPER_FILE_OBJ_PING";
static const char __pyx_k_SCAMPER_FILE_OBJ_TBIT[] = "SCAMPER_FILE_OBJ_TBIT";
static const char __pyx_k_SCAMPER_HOST_CLASS_IN[] = "SCAMPER_HOST_CLASS_IN";
static const char __pyx_k_ScamperCtrl_instances[] = "ScamperCtrl.instances";
static const char __pyx_k_ScamperCtrl_responses[] = "ScamperCtrl.responses";
static const char __pyx_k_ScamperDealias_probes[] = "ScamperDealias.probes";
static const char __pyx_k_ScamperHostRRIterator[] = "_ScamperHostRRIterator";
static const char __pyx_k_ScamperHostSVCB_param[] = "ScamperHostSVCB.param";
static const char __pyx_k_ScamperHost_ans_addrs[] = "ScamperHost.ans_addrs";
static const char __pyx_k_ScamperHttpBuf_is_hdr[] = "ScamperHttpBuf.is_hdr";
static const char __pyx_k_ScamperHttpBuf_is_tls[] = "ScamperHttpBuf.is_tls";
static const char __pyx_k_ScamperIcmpExt_mpls_s[] = "ScamperIcmpExt.mpls_s";
static const char __pyx_k_ScamperTracePmtudNote[] = "ScamperTracePmtudNote";
static const char __pyx_k_ScamperTracelb_is_tcp[] = "ScamperTracelb.is_tcp";
static const char __pyx_k_ScamperTracelb_is_udp[] = "ScamperTracelb.is_udp";
static const char __pyx_k_ScamperUdpprobe_probe[] = "ScamperUdpprobe.probe";
static const char __pyx_k_expected_str_in_addrs[] = "expected str in addrs";
static const char __pyx_k_name_must_be_a_string[] = "name must be a string";
static const char __pyx_k_no_usable_ScamperInst[] = "no usable ScamperInst";
static const char __pyx_k_rounds_not_an_integer[] = "rounds not an integer";
static const char __pyx_k_specify_a_ScamperInst[] = "specify a ScamperInst";
static const char __pyx_k_unhandled_object_type[] = "unhandled object type";
static const char __pyx_k_userid_not_an_integer[] = "userid not an integer";
static const char __pyx_k_A_31D_Q_2S_1_away_AQ_q[] = "\200A\360\020\000\t\035\320\0343\2601\260D\270\005\270Q\330\010\013\2102\210S\220\001\330\014\023\2201\330\010\016\210a\210w\220a\220y\240\001\330\010\014\210A\210Q\330\010\017\210q";
static const char __pyx_k_A_5Qd_q_2S_1_away_AQ_q[] = "\200A\360\016\000\t\036\320\0355\260Q\260d\270%\270q\330\010\013\2102\210S\220\001\330\014\023\2201\330\010\016\210a\210w\220a\220y\240\001\330\010\014\210A\210Q\330\010\017\210q";
static const char __pyx_k_A_q_E_2S_1_away_AQ_q_2[] = "\200A\360\020\000\t#\320\"?\270q\300\004\300E\310\021\330\010\013\2102\210S\220\001\330\014\023\2201\330\010\016\210a\210w\220a\220y\240\001\330\010\014\210A\210Q\330\010\017\210q";
static const char __pyx_k_A_q_G4t1_s_wa_AS_t1D_Q[] = "\200A\360\016\000\t\020\210q\330\010\014\210G\2204\220t\2301\330\014\017\210s\220%\220w\230a\330\020\024\220A\220S\230\010\240\001\330\010\017\210t\2201\220D\230\005\230Q";
static const char __pyx_k_SCAMPER_CTRL_TYPE_DATA[] = "SCAMPER_CTRL_TYPE_DATA";
static const char __pyx_k_SCAMPER_CTRL_TYPE_MORE[] = "SCAMPER_CTRL_TYPE_MORE";
static const char __pyx_k_SCAMPER_FILE_OBJ_SNIFF[] = "SCAMPER_FILE_OBJ_SNIFF";
static const char __pyx_k_SCAMPER_FILE_OBJ_STING[] = "SCAMPER_FILE_OBJ_STING";
static const char __pyx_k_SCAMPER_FILE_OBJ_TRACE[] = "SCAMPER_FILE_OBJ_TRACE";
static const char __pyx_k_ScamperAddr_is_rfc1918[] = "ScamperAddr.is_rfc1918";
static const char __pyx_k_ScamperAddr_is_unicast[] = "ScamperAddr.is_unicast";
static const char __pyx_k_ScamperCtrl_add_remote[] = "ScamperCtrl.add_remote";
static const char __pyx_k_ScamperCtrl_do_tracelb[] = "ScamperCtrl.do_tracelb";
static const char __pyx_k_ScamperCtrl_exceptions[] = "ScamperCtrl.exceptions";
static const char __pyx_k_ScamperDealiasProbedef[] = "ScamperDealiasProbedef('";
static const char __pyx_k_ScamperDealias_aliases[] = "ScamperDealias.aliases";
static const char __pyx_k_ScamperDealias_is_ally[] = "ScamperDealias.is_ally";
static const char __pyx_k_ScamperDealias_is_bump[] = "ScamperDealias.is_bump";
static const char __pyx_k_ScamperDealias_to_json[] = "ScamperDealias.to_json";
static const char __pyx_k_ScamperHttpBuf_is_data[] = "ScamperHttpBuf.is_data";
static const char __pyx_k_ScamperIcmpExt_is_mpls[] = "ScamperIcmpExt.is_mpls";
static const char __pyx_k_ScamperInstData___init[] = "_ScamperInstData.__init__";
static const char __pyx_k_ScamperTraceHop_is_tcp[] = "ScamperTraceHop.is_tcp";
static const char __pyx_k_ScamperTracelbLink_far[] = "ScamperTracelbLink.far";
static const char __pyx_k_ScamperTracelbProbeset[] = "ScamperTracelbProbeset";
static const char __pyx_k_ScamperTracelb_is_icmp[] = "ScamperTracelb.is_icmp";
static const char __pyx_k_ScamperTracelb_to_json[] = "ScamperTracelb.to_json";
static const char __pyx_k_could_not_build_filter[] = "could not build filter";
static const char __pyx_k_do_ally_locals_genexpr[] = "do_ally.<locals>.genexpr";
static const char __pyx_k_do_ping_locals_genexpr[] = "do_ping.<locals>.genexpr";
static const char __pyx_k_expected_int_for_begin[] = "expected int for begin";
static const char __pyx_k_headers_not_dictionary[] = "headers not dictionary";
static const char __pyx_k_lib_python_scamper_pyx[] = "lib/python/scamper.pyx";
static const char __pyx_k_startat_not_a_datetime[] = "startat not a datetime";
static const char __pyx_k_unexpected_object_type[] = "unexpected object type ";
static const char __pyx_k_SCAMPER_CTRL_TYPE_FATAL[] = "SCAMPER_CTRL_TYPE_FATAL";
static const char __pyx_k_ScamperAddr_is_reserved[] = "ScamperAddr.is_reserved";
static const char __pyx_k_ScamperCtrl_do_mercator[] = "ScamperCtrl.do_mercator";
static const char __pyx_k_ScamperCtrl_do_midarest[] = "ScamperCtrl.do_midarest";
static const char __pyx_k_ScamperCtrl_do_radargun[] = "ScamperCtrl.do_radargun";
static const char __pyx_k_ScamperCtrl_do_udpprobe[] = "ScamperCtrl.do_udpprobe";
static const char __pyx_k_ScamperDealias_probedef[] = "ScamperDealias.probedef";
static const char __pyx_k_ScamperIcmpExt_mpls_exp[] = "ScamperIcmpExt.mpls_exp";
static const char __pyx_k_ScamperIcmpExt_mpls_lse[] = "ScamperIcmpExt.mpls_lse";
static const char __pyx_k_ScamperIcmpExt_mpls_ttl[] = "ScamperIcmpExt.mpls_ttl";
static const char __pyx_k_ScamperIcmpExtsIterator[] = "_ScamperIcmpExtsIterator";
static const char __pyx_k_ScamperInstError___init[] = "ScamperInstError.__init__";
static const char __pyx_k_ScamperPingReply_is_tcp[] = "ScamperPingReply.is_tcp";
static const char __pyx_k_ScamperPingReply_is_udp[] = "ScamperPingReply.is_udp";
static const char __pyx_k_ScamperTraceHopIterator[] = "_ScamperTraceHopIterator";
static const char __pyx_k_ScamperTraceHop_is_icmp[] = "ScamperTraceHop.is_icmp";
static const char __pyx_k_ScamperTracePmtud_notes[] = "ScamperTracePmtud.notes";
static const char __pyx_k_ScamperTracelbLink_near[] = "ScamperTracelbLink.near";
static const char __pyx_k_ScamperTracelbNode_link[] = "ScamperTracelbNode.link";
static const char __pyx_k_ScamperUdpprobe_replies[] = "ScamperUdpprobe.replies";
static const char __pyx_k_ScamperUdpprobe_to_json[] = "ScamperUdpprobe.to_json";
static const char __pyx_k_do_trace_locals_genexpr[] = "do_trace.<locals>.genexpr";
static const char __pyx_k_expected_str_in_rrtypes[] = "expected str in rrtypes";
static const char __pyx_k_invalid_limit_pkt_count[] = "invalid limit_pkt_count";
static const char __pyx_k_outfile_not_ScamperFile[] = "outfile not ScamperFile";
static const char __pyx_k_until_is_not_a_datetime[] = "until is not a datetime";
static const char __pyx_k_A_q_G4t1_s_gQ_AS_q_t1D_Q[] = "\200A\360\016\000\t\020\210q\330\010\014\210G\2204\220t\2301\330\014\017\210s\220$\220g\230Q\330\020\024\220A\220S\230\007\230q\330\010\017\210t\2201\220D\230\005\230Q";
static const char __pyx_k_SCAMPER_FILE_OBJ_DEALIAS[] = "SCAMPER_FILE_OBJ_DEALIAS";
static const char __pyx_k_SCAMPER_FILE_OBJ_TRACELB[] = "SCAMPER_FILE_OBJ_TRACELB";
static const char __pyx_k_SCAMPER_TRACE_FLAG_RXERR[] = "SCAMPER_TRACE_FLAG_RXERR";
static const char __pyx_k_ScamperAddr_is_linklocal[] = "ScamperAddr.is_linklocal";
static const char __pyx_k_ScamperCtrl_do_midardisc[] = "ScamperCtrl.do_midardisc";
static const char __pyx_k_ScamperDealiasProbedef_2[] = "ScamperDealiasProbedef";
static const char __pyx_k_ScamperDealias_probedefs[] = "ScamperDealias.probedefs";
static const char __pyx_k_ScamperFile_filter_types[] = "ScamperFile.filter_types";
static const char __pyx_k_ScamperIcmpExt_mpls_lses[] = "ScamperIcmpExt.mpls_lses";
static const char __pyx_k_ScamperPingReply_is_icmp[] = "ScamperPingReply.is_icmp";
static const char __pyx_k_ScamperPing_is_icmp_time[] = "ScamperPing.is_icmp_time";
static const char __pyx_k_ScamperTrace_is_stop_gss[] = "ScamperTrace.is_stop_gss";
static const char __pyx_k_ScamperTracelbNode_links[] = "ScamperTracelbNode.links";
static const char __pyx_k_dport_invalid_for_method[] = "dport invalid for method ";
static const char __pyx_k_invalid_destination_port[] = "invalid destination port ";
static const char __pyx_k_no_connected_ScamperInst[] = "no connected ScamperInst";
static const char __pyx_k_sport_invalid_for_method[] = "sport invalid for method ";
static const char __pyx_k_A_A_a_A_a_6_E_F_Q_1_iq_wd[] = "\200A\360\020\000\t\037\320\036A\300\021\300$\300a\330\010\036\320\036A\300\021\300$\300a\330\010\013\2106\220\023\220E\230\023\230F\240#\240Q\330\014\023\2201\330\010\036\230i\240q\250\007\250w\260d\270!";
static const char __pyx_k_SCAMPER_FILE_OBJ_UDPPROBE[] = "SCAMPER_FILE_OBJ_UDPPROBE";
static const char __pyx_k_ScamperCtrl_do_prefixscan[] = "ScamperCtrl.do_prefixscan";
static const char __pyx_k_ScamperDealiasProbe_reply[] = "ScamperDealiasProbe.reply";
static const char __pyx_k_ScamperIcmpExt_mpls_label[] = "ScamperIcmpExt.mpls_label";
static const char __pyx_k_ScamperIcmpExts_ext_count[] = "ScamperIcmpExts.ext_count";
static const char __pyx_k_ScamperPing_is_vary_dport[] = "ScamperPing.is_vary_dport";
static const char __pyx_k_ScamperPing_is_vary_sport[] = "ScamperPing.is_vary_sport";
static const char __pyx_k_ScamperTraceHop_is_icmp_q[] = "ScamperTraceHop.is_icmp_q";
static const char __pyx_k_ScamperTracePmtudNote_hop[] = "ScamperTracePmtudNote.hop";
static const char __pyx_k_ScamperTrace_is_stop_icmp[] = "ScamperTrace.is_stop_icmp";
static const char __pyx_k_ScamperTrace_is_stop_loop[] = "ScamperTrace.is_stop_loop";
static const char __pyx_k_ScamperTracelbLink_length[] = "ScamperTracelbLink.length";
static const char __pyx_k_ScamperTracelbProbe_reply[] = "ScamperTracelbProbe.reply";
static const char __pyx_k_ScamperVp___reduce_cython[] = "ScamperVp.__reduce_cython__";
static const char __pyx_k_do_tracelb_locals_genexpr[] = "do_tracelb.<locals>.genexpr";
static const char __pyx_k_inst_not_ScamperInst_type[] = "inst not ScamperInst type";
static const char __pyx_k_SCAMPER_FILE_OBJ_CYCLE_DEF[] = "SCAMPER_FILE_OBJ_CYCLE_DEF";
static const char __pyx_k_ScamperCtrl_add_remote_dir[] = "ScamperCtrl.add_remote_dir";
static const char __pyx_k_ScamperDealiasReply_is_tcp[] = "ScamperDealiasReply.is_tcp";
static const char __pyx_k_ScamperDealias_has_aliases[] = "ScamperDealias.has_aliases";
static const char __pyx_k_ScamperDealias_is_mercator[] = "ScamperDealias.is_mercator";
static const char __pyx_k_ScamperDealias_is_midarest[] = "ScamperDealias.is_midarest";
static const char __pyx_k_ScamperDealias_is_radargun[] = "ScamperDealias.is_radargun";
static const char __pyx_k_ScamperHttpIterator___init[] = "_ScamperHttpIterator.__init__";
static const char __pyx_k_ScamperHttpIterator___iter[] = "_ScamperHttpIterator.__iter__";
static const char __pyx_k_ScamperHttpIterator___next[] = "_ScamperHttpIterator.__next__";
static const char __pyx_k_ScamperMux___reduce_cython[] = "ScamperMux.__reduce_cython__";
static const char __pyx_k_ScamperPingIterator___init[] = "_ScamperPingIterator.__init__";
static const char __pyx_k_ScamperPingIterator___iter[] = "_ScamperPingIterator.__iter__";
static const char __pyx_k_ScamperPingIterator___next[] = "_ScamperPingIterator.__next__";
static const char __pyx_k_ScamperTrace_is_stop_error[] = "ScamperTrace.is_stop_error";
static const char __pyx_k_ScamperTracelbLinkIterator[] = "_ScamperTracelbLinkIterator";
static const char __pyx_k_ScamperTracelbNodeIterator[] = "_ScamperTracelbNodeIterator";
static const char __pyx_k_ScamperUdpprobeProbe_reply[] = "ScamperUdpprobeProbe.reply";
static const char __pyx_k_could_not_allocate_hopiter[] = "could not allocate hopiter";
static const char __pyx_k_could_not_schedule_command[] = "could not schedule command";
static const char __pyx_k_expected_round_in_schedule[] = "expected round in schedule";
static const char __pyx_k_expected_string_for_method[] = "expected string for method";
static const char __pyx_k_icmp_id_invalid_for_method[] = "icmp_id invalid for method ";
static const char __pyx_k_Q_G4uA_t3e4t9D_4_1_XQ_t1E_a[] = "\320\004\035\230Q\360\016\000\t\021\220\001\330\010\014\210G\2204\220u\230A\330\014\017\210t\2203\220e\2304\230t\2409\250D\260\003\2604\260|\3001\330\020\021\330\014\021\220\021\220#\220X\230Q\330\010\017\210t\2201\220E\230\025\230a";
static const char __pyx_k_SCAMPER_FILE_OBJ_CYCLE_STOP[] = "SCAMPER_FILE_OBJ_CYCLE_STOP";
static const char __pyx_k_ScamperAddr___reduce_cython[] = "ScamperAddr.__reduce_cython__";
static const char __pyx_k_ScamperCtrl___reduce_cython[] = "ScamperCtrl.__reduce_cython__";
static const char __pyx_k_ScamperDealiasProbeIterator[] = "_ScamperDealiasProbeIterator";
static const char __pyx_k_ScamperDealiasProbe_replies[] = "ScamperDealiasProbe.replies";
static const char __pyx_k_ScamperDealiasReplyIterator[] = "_ScamperDealiasReplyIterator";
static const char __pyx_k_ScamperDealiasReply_is_icmp[] = "ScamperDealiasReply.is_icmp";
static const char __pyx_k_ScamperDealias_is_midardisc[] = "ScamperDealias.is_midardisc";
static const char __pyx_k_ScamperFile___reduce_cython[] = "ScamperFile.__reduce_cython__";
static const char __pyx_k_ScamperHost___reduce_cython[] = "ScamperHost.__reduce_cython__";
static const char __pyx_k_ScamperHttp___reduce_cython[] = "ScamperHttp.__reduce_cython__";
static const char __pyx_k_ScamperInst___reduce_cython[] = "ScamperInst.__reduce_cython__";
static const char __pyx_k_ScamperList___reduce_cython[] = "ScamperList.__reduce_cython__";
static const char __pyx_k_ScamperPing___reduce_cython[] = "ScamperPing.__reduce_cython__";
static const char __pyx_k_ScamperTask___reduce_cython[] = "ScamperTask.__reduce_cython__";
static const char __pyx_k_ScamperTbit___reduce_cython[] = "ScamperTbit.__reduce_cython__";
static const char __pyx_k_ScamperTraceHop_is_icmp_ptb[] = "ScamperTraceHop.is_icmp_ptb";
static const char __pyx_k_ScamperTrace_is_stop_halted[] = "ScamperTrace.is_stop_halted";
static const char __pyx_k_ScamperTracelbLink_probeset[] = "ScamperTracelbLink.probeset";
static const char __pyx_k_ScamperVp___setstate_cython[] = "ScamperVp.__setstate_cython__";
static const char __pyx_k_cannot_specify_tcp_ack_with[] = "cannot specify tcp_ack with ";
static const char __pyx_k_cannot_specify_tcp_seq_with[] = "cannot specify tcp_seq with ";
static const char __pyx_k_icmp_sum_invalid_for_method[] = "icmp_sum invalid for method ";
static const char __pyx_k_vps_containts_non_ScamperVp[] = "vps containts non ScamperVp";
static const char __pyx_k_SCAMPER_FILE_OBJ_CYCLE_START[] = "SCAMPER_FILE_OBJ_CYCLE_START";
static const char __pyx_k_ScamperCycle___reduce_cython[] = "ScamperCycle.__reduce_cython__";
static const char __pyx_k_ScamperDealiasMidardiscRound[] = "ScamperDealiasMidardiscRound";
static const char __pyx_k_ScamperDealias_is_prefixscan[] = "ScamperDealias.is_prefixscan";
static const char __pyx_k_ScamperHostRRIterator___init[] = "_ScamperHostRRIterator.__init__";
static const char __pyx_k_ScamperHostRRIterator___iter[] = "_ScamperHostRRIterator.__iter__";
static const char __pyx_k_ScamperHostRRIterator___next[] = "_ScamperHostRRIterator.__next__";
static const char __pyx_k_ScamperMux___setstate_cython[] = "ScamperMux.__setstate_cython__";
static const char __pyx_k_ScamperNeighbourdisc_to_json[] = "ScamperNeighbourdisc.to_json";
static const char __pyx_k_ScamperPingReply_is_icmp_ptb[] = "ScamperPingReply.is_icmp_ptb";
static const char __pyx_k_ScamperPing_is_tcp_ack_sport[] = "ScamperPing.is_tcp_ack_sport";
static const char __pyx_k_ScamperSniff___reduce_cython[] = "ScamperSniff.__reduce_cython__";
static const char __pyx_k_ScamperSting___reduce_cython[] = "ScamperSting.__reduce_cython__";
static const char __pyx_k_ScamperTrace___reduce_cython[] = "ScamperTrace.__reduce_cython__";
static const char __pyx_k_ScamperTrace_is_stop_unreach[] = "ScamperTrace.is_stop_unreach";
static const char __pyx_k_ScamperTracelbProbeset_probe[] = "ScamperTracelbProbeset.probe";
static const char __pyx_k_ScamperUdpprobeReplyIterator[] = "_ScamperUdpprobeReplyIterator";
static const char __pyx_k_do_not_specify_icmp_sum_with[] = "do not specify icmp_sum with ";
static const char __pyx_k_do_prefixscan_locals_genexpr[] = "do_prefixscan.<locals>.genexpr";
static const char __pyx_k_expected_timedelta_for_start[] = "expected timedelta for start";
static const char __pyx_k_file_not_opened_in_read_mode[] = "file not opened in read mode";
static const char __pyx_k_ScamperAddr___setstate_cython[] = "ScamperAddr.__setstate_cython__";
static const char __pyx_k_ScamperCtrl___setstate_cython[] = "ScamperCtrl.__setstate_cython__";
static const char __pyx_k_ScamperDealiasProbedef_is_tcp[] = "ScamperDealiasProbedef.is_tcp";
static const char __pyx_k_ScamperDealiasProbedef_is_udp[] = "ScamperDealiasProbedef.is_udp";
static const char __pyx_k_ScamperFile___setstate_cython[] = "ScamperFile.__setstate_cython__";
static const char __pyx_k_ScamperHostMX___reduce_cython[] = "ScamperHostMX.__reduce_cython__";
static const char __pyx_k_ScamperHostRR___reduce_cython[] = "ScamperHostRR.__reduce_cython__";
static const char __pyx_k_ScamperHost___setstate_cython[] = "ScamperHost.__setstate_cython__";
static const char __pyx_k_ScamperHttp___setstate_cython[] = "ScamperHttp.__setstate_cython__";
static const char __pyx_k_ScamperInst___setstate_cython[] = "ScamperInst.__setstate_cython__";
static const char __pyx_k_ScamperInst_has_signalled_EOF[] = "ScamperInst has signalled EOF";
static const char __pyx_k_ScamperList___setstate_cython[] = "ScamperList.__setstate_cython__";
static const char __pyx_k_ScamperPing___setstate_cython[] = "ScamperPing.__setstate_cython__";
static const char __pyx_k_ScamperTask___setstate_cython[] = "ScamperTask.__setstate_cython__";
static const char __pyx_k_ScamperTbit___setstate_cython[] = "ScamperTbit.__setstate_cython__";
static const char __pyx_k_ScamperTrace_is_stop_gaplimit[] = "ScamperTrace.is_stop_gaplimit";
static const char __pyx_k_ScamperTrace_is_stop_hoplimit[] = "ScamperTrace.is_stop_hoplimit";
static const char __pyx_k_ScamperTrace_is_stop_noreason[] = "ScamperTrace.is_stop_noreason";
static const char __pyx_k_file_not_opened_in_write_mode[] = "file not opened in write mode";
static const char __pyx_k_22C1_1_Q_k_0_q_G1A_t9AV_v_S_AQ[] = "\320\004!\320!2\3202C\3001\330!1\260\034\270Q\330\033&\240k\260\021\3600\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\240<\250v\260\\\300\021\340\010\013\210:\220S\230\001\330\014\022\220*\230A\230Q\330\010\013\2106\220\023\220A\330\014\022\220*\230A\230Q\340\010\013\2107\220'\230\021\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2107\220'\230\021\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210;\220g\230Q\330\014\017\210t\220:\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\021\220\023\220A\220Z\230y\250\002\250&\260\002\260#\260Q\260j\300\016\310b\320PQ\330\014\017\210s\220#\220Q\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210=\230\007\230q\330\014\017\210t\220:\230Q\230n\250H\260A\330\020\037\230x\240z\260\021\260(\270!\330\014\020\220\003\2201\220L\240\001\330\014\017\210r\220\023\220A\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210;\220g\230Q\330\014\017\210t\220:\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\021\220\023\220A\220Z\230y\250\002\250&\260\002\260#\260Q\260j\300\016\310b\320PQ\330\014\017\210s\220#\220Q\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\340\010\014\210F\220!\330\014\017\210t\220:\230Q\230d\240!\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230(\240!\330\010\014\210H\220A\330\014\017\210t\220:\230Q\230f\240E\250\024\250T\260\032\2701\270F\300!\330\020\026\220j\240\001\240\021\330\014\020\220\007\220s\230$\230a\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_5_q_z_4q_aq_5_1_aq_a_E_t_Qc_iq[] = "\320\004:\270!\330\010\013\2105\220\007\220q\330\014\017\210z\230\021\230&\240\001\330\020\023\2204\220q\330\024\032\230,\240a\240q\330\020\023\2205\230\003\2301\330\024\032\230,\240a\240q\330\020\026\220a\330\020\024\220E\230\021\330\024\027\220t\230:\240Q\240c\250\021\330\030\036\230i\240q\250\001\330\024\027\220t\2301\230A\330\030\033\2307\240!\2401\330\020\023\2203\220a\220u\230C\230q\330\024\032\230,\240a\240q\330\020\027\220q\330\021\025\220Z\230q\240\006\240a\330\020\026\220i\230q\240\001\340\014\017\210s\220!\2204\220y\240\003\2401\330\020\026\220l\240!\2401\330\021\024\220A\220T\230\031\240#\240Q\330\020\026\220l\240!\2401\340\020\027\220t\2307\240!\2401\330\010\013\2104\210q\330\014\017\210t\2201\330\020\026\220l\240!\2402\320%5\260T\270\021\340\020\026\220l\240!\2401\330\010\017\210q";
static const char __pyx_k_8_q_G1A_t9AV_q_4s_s_5_83a_AQ_6[] = "\320\0048\270\n\300!\330\037*\250-\260{\300!\360,\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\240<\250q\340\010\013\2104\210s\220%\220s\230&\240\003\2405\250\003\2508\2603\260a\330\014\022\220*\230A\230Q\330\010\013\2106\220\022\2202\220S\230\006\230b\240\001\330\014\022\220*\230A\230R\320\037<\270A\340\010\014\210G\2201\220B\220g\230Q\330\010\014\210G\2201\220B\220g\230X\240X\250Q\250h\260g\270Q\270a\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210;\220g\230Q\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\014\210G\2203\220d\230!\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_A_0_q_G1A_t9AV_l_S_AQ_9Cq_AQ_7[] = "\320\004%\240_\260A\330\0350\260\001\330\034'\240{\260!\360*\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\240=\260\006\260l\300!\340\010\013\210:\220S\230\001\330\014\022\220*\230A\230Q\330\010\013\2109\220C\220q\330\014\022\220*\230A\230Q\340\010\013\2107\220'\230\021\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210=\230\007\230q\330\014\017\210t\220:\230Q\230n\250H\260A\330\020\037\230x\240z\260\021\260(\270!\330\014\020\220\003\2201\220L\240\001\330\014\017\210r\220\023\220A\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2108\2207\230!\330\014\017\210t\220:\230Q\230i\240x\250q\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\027\250\n\260!\340\010\014\210F\220!\330\014\017\210t\220:\230Q\230d\240!\330\020\026\220j\240\001\240\021\330\014\017\210r\220\025\220c\230\021\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230(\240!\340\010\014\210E\220\021\330\014\017\210t\220:\230Q\230c\240\021\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_A_4Ja_m_k_q_G1A_t9AV81_9G5_IRq[] = "\320\004#\240=\260\014\270A\330\030!\320!4\260J\270a\330\024\036\230m\250;\260k\300\021\360>\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\2408\2501\340\010\013\2109\220G\2305\240\004\240I\250R\250q\330\014\022\220*\230A\230Q\340\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2106\220\027\230\001\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210=\230\007\230q\330\014\017\210t\220:\230Q\230n\250H\260A\330\020\037\230x\240z\260\021\260(\270!\330\014\020\220\007\220q\230\002\230'\240\034\250^\2701\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2103\210g\220U\230$\230d\240!\330\014\020\220\007\220q\230\001\330\010\013\2104\210w\220e\2304\230q\330\014\020\220\007\220q\230\001\330\010\013\2105\220\007\220u\230D\240\001\330\014\020\220\007\220q\230\001\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230.\250\001\330\010\014\210G\2203\220d\230!\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_A_E_AT_d_y_Q_d_y_Q_D_WAT_5WE_a[] = "\200A\330\010\020\220\004\220E\230\033\240A\240T\250\021\330\010\016\210d\220%\220y\240\001\240\024\240Q\330\010\016\210d\220%\220y\240\001\240\024\240Q\330\010\014\210D\220\005\220W\230A\230T\240\021\330\010\017\320\0175\260W\270E\300\025\300a";
static const char __pyx_k_A_Q_q_G1A_t9AV81_4s_s_E_D_1_AQ[] = "\320\004\"\240*\250A\330\025\"\240+\250Q\360&\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\2408\2501\340\010\013\2104\210s\220%\220s\230'\240\023\240E\250\023\250D\260\003\2601\330\014\022\220*\230A\230Q\340\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\340\010\016\210c\220\021\220$\220h\230a\230u\240A\330\010\014\210G\2201\220B\220h\230j\250\t\260\021\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_Q_00C1_k_q_G1A_t9AV_q_S_AQ_7_t[] = "\320\004 \240\r\320-=\270Q\330\0370\3200C\3001\330\033&\240k\260\021\360<\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\240<\250q\340\010\013\210:\220S\230\001\330\014\022\220*\230A\230Q\340\010\013\2107\220'\230\021\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\340\010\013\2107\220'\230\021\330\014\017\210t\220:\230Q\230h\240a\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\340\010\013\210;\220g\230Q\330\014\017\210t\220:\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\017\210{\230#\230X\240Z\250q\260\010\270\001\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\032\250>\270\021\340\010\013\210;\220g\230Q\330\014\017\210t\220:\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\017\210{\230#\230X\240Z\250q\260\010\270\001\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\032\250>\270\021\340\010\013\210=\230\007\230q\330\014\017\210t\220:\230Q\230n\250H\260A\330\020\037\230x\240z\260\021\260(\270!\330\014\017\210t\220=\240\003\2408\250:\260Q\260h\270a\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\034\250^\2701\340\010\014\210F\220!\330\014\017\210t\220:\230Q\230d\240!\330\020\026\220j\240\001\240\021\330\014\017\210v\220S\230\005\230T\240\022\2405\250\003\2501\330\020\026\220j\240\001\240\021\330\021\027\220w\230e\2404\240r\250\025\250g\260Q\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230(\240!\340\010\013\2106\220\027\230\001\330\014\020\220\005\220Q\330\020\024\220G\2303\230d\240!\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_Q_j_Ja_1_P_q_G1A_t9AV_a_7_fA_6[] = "\320\004)\250\034\260Q\330\034+\250=\270\001\330\034&\240j\260\014\270J\300a\330 1\260\021\330\032%\240[\260\001\360P\001\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\240;\250a\340\010\013\2107\220'\230\021\330\014\020\220\006\220f\230A\340\014\020\220\001\340\010\013\2106\220\027\230\005\230S\240\006\240g\250Q\330\014\017\210r\220\023\220A\330\020\026\220j\240\001\240\021\330\021%\240Q\330\020\026\220j\240\001\320!T\320TV\320VW\340\010\013\210;\220g\230Q\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2106\220\027\230\001\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2104\210w\220e\2304\230t\2403\240a\330\014\020\220\007\220q\230\001\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2106\220\027\230\001\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210=\230\007\230q\330\014\017\210t\220:\230Q\230n\250H\260A\330\020\037\230x\240z\260\021\260(\270!\330\014\020\220\007\220q\230\002\230'\240\034\250^\2701\330\010\013\210;\220g\230Q\330\014\017\210t\220:\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\020\220\007\220q\230\002\230'\240\032\250>\270\021\330\010\014\210G\2203\220d\230!\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_SCAMPER_FILE_OBJ_NEIGHBOURDISC[] = "SCAMPER_FILE_OBJ_NEIGHBOURDISC";
static const char __pyx_k_ScamperCycle___setstate_cython[] = "ScamperCycle.__setstate_cython__";
static const char __pyx_k_ScamperDealiasProbedefIterator[] = "_ScamperDealiasProbedefIterator";
static const char __pyx_k_ScamperDealiasProbedef_is_icmp[] = "ScamperDealiasProbedef.is_icmp";
static const char __pyx_k_ScamperDealias___reduce_cython[] = "ScamperDealias.__reduce_cython__";
static const char __pyx_k_ScamperHostOPT___reduce_cython[] = "ScamperHostOPT.__reduce_cython__";
static const char __pyx_k_ScamperHostSOA___reduce_cython[] = "ScamperHostSOA.__reduce_cython__";
static const char __pyx_k_ScamperHostTXT___reduce_cython[] = "ScamperHostTXT.__reduce_cython__";
static const char __pyx_k_ScamperHttpBuf___reduce_cython[] = "ScamperHttpBuf.__reduce_cython__";
static const char __pyx_k_ScamperIcmpExt___reduce_cython[] = "ScamperIcmpExt.__reduce_cython__";
static const char __pyx_k_ScamperIcmpExtsIterator___init[] = "_ScamperIcmpExtsIterator.__init__";
static const char __pyx_k_ScamperIcmpExtsIterator___iter[] = "_ScamperIcmpExtsIterator.__iter__";
static const char __pyx_k_ScamperIcmpExtsIterator___next[] = "_ScamperIcmpExtsIterator.__next__";
static const char __pyx_k_ScamperIcmpMplsLabelStackEntry[] = "ScamperIcmpMplsLabelStackEntry";
static const char __pyx_k_ScamperSniff___setstate_cython[] = "ScamperSniff.__setstate_cython__";
static const char __pyx_k_ScamperSting___setstate_cython[] = "ScamperSting.__setstate_cython__";
static const char __pyx_k_ScamperTbitPkt___reduce_cython[] = "ScamperTbitPkt.__reduce_cython__";
static const char __pyx_k_ScamperTraceHopIterator___init[] = "_ScamperTraceHopIterator.__init__";
static const char __pyx_k_ScamperTraceHopIterator___iter[] = "_ScamperTraceHopIterator.__iter__";
static const char __pyx_k_ScamperTraceHopIterator___next[] = "_ScamperTraceHopIterator.__next__";
static const char __pyx_k_ScamperTrace___setstate_cython[] = "ScamperTrace.__setstate_cython__";
static const char __pyx_k_ScamperTrace_is_stop_completed[] = "ScamperTrace.is_stop_completed";
static const char __pyx_k_ScamperTracelb___reduce_cython[] = "ScamperTracelb.__reduce_cython__";
static const char __pyx_k_ScamperUdpprobeReplyIterator_2[] = "_ScamperUdpprobeReplyIterator.__init__";
static const char __pyx_k_ScamperUdpprobeReplyIterator_3[] = "_ScamperUdpprobeReplyIterator.__iter__";
static const char __pyx_k_ScamperUdpprobeReplyIterator_4[] = "_ScamperUdpprobeReplyIterator.__next__";
static const char __pyx_k_expected_probedef_in_probedefs[] = "expected probedef in probedefs";
static const char __pyx_k_header_field_body_is_not_ascii[] = "header field-body is not ascii";
static const char __pyx_k_header_field_name_is_not_ascii[] = "header field-name is not ascii";
static const char __pyx_k_l_z_1_j_A_q_Ql_q_G1A_t9AV81_4s[] = "\320\004#\240>\260\037\300\001\330\030'\240\260l\300!\330\026'\240z\260\032\2701\330\033(\250\016\260j\300\001\330\034'\240{\260*\270A\330\035'\240q\330\027\"\240+\250Q\360l\001\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\2408\2501\340\010\013\2104\210s\220!\330\014\022\220*\230A\230Q\340\010\013\2107\220'\230\021\330\014\020\220\006\220f\230A\340\014\020\220\001\360\006\000\t\014\2108\2207\230%\230s\240(\250'\260\021\330\014\017\210r\220\023\220A\330\020\026\220j\240\001\240\021\330\021\031\230\027\240\005\240T\250\030\260\027\270\001\330\020\026\220j\240\001\240\021\330\021\032\230'\240\021\330\020\026\220j\240\001\240\021\330\021\031\230\027\240\005\240T\250\024\250Q\250k\270\021\270!\330\020\026\220j\240\001\320!@\300\002\300!\330\022\032\230'\240\025\240a\330\022&\240a\330\020\026\220j\240\001\320!@\300\002\300!\360\006\000\t\014\2109\220G\2305\240\003\2408\2507\260%\260s\270)\3007\310!\330\014\017\210r\220\023\220A\330\020\024\220A\330\021\025\220Q\220k\240\021\240!\330\020\026\220j\240\001\320!H\310\002\310!\360\006\000\t\014\2106\220\027\230\005\230S\240\006\240g\250Q\330\014\017\210r\220\023\220A\330\020\026\220j\240\001\240\021\330\021%\240Q\330\020\026\220j\240\001\320!T\320TV\320VW\340\010\013\2108\2207\230!\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2108\2207\230!\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2108\2207\230!\330\014\020\220\007\220q\230\002\230'\240\030\250\030\260\021\260(\270'\300\021\300!\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2106\220\027\230\001\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2106\220\027\230\001\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2108\2207\230!\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210;\220g\230Q\330\014\017\210t\220:""\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\020\220\007\220q\230\002\230'\240\032\250>\270\021\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210;\220g\230Q\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210<\220w\230e\2404\240q\330\014\020\220\007\220q\230\001\330\010\013\2105\220\007\220u\230D\240\001\330\014\020\220\007\220q\230\001\330\010\013\2105\220\007\220q\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210=\230\007\230q\330\014\017\210t\220:\230Q\230n\250H\260A\330\020\037\230x\240z\260\021\260(\270!\330\014\020\220\007\220q\230\002\230'\240\034\250^\2701\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010\014\210G\2203\220d\230!\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_missing_IP_address_in_probedef[] = "missing IP address in probedef";
static const char __pyx_k_1_2C1_N_q_G1A_t9AV86_Q_7_fA_9G1[] = "\320\004(\250\017\260|\3001\330\026#\240?\3202C\3001\330\035*\250+\260[\300\001\360N\001\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\2408\2506\260\034\270Q\340\010\013\2107\220'\230\021\330\014\020\220\006\220f\230A\340\014\020\220\001\360\006\000\t\014\2109\220G\2301\330\014\017\210r\220\023\220A\330\020\024\220A\330\021\025\220Q\220k\240\021\240!\330\020\026\220j\240\001\320!A\300\022\3001\330\014\017\210v\220W\230E\240\023\240F\250'\260\021\330\020\026\220j\240\001\320!S\320SU\320UV\360\006\000\t\014\2106\220\027\230\005\230S\240\006\240g\250Q\330\014\017\210r\220\023\220A\330\020\026\220j\240\001\240\021\330\021%\240Q\330\020\026\220j\240\001\320!T\320TV\320VW\360\006\000\t\014\2102\210W\220A\330\014\021\220\021\330\014\016\210g\220Q\220b\230\013\2401\330\014\017\210v\220W\230A\330\020\022\220'\230\021\230\"\230H\240A\330\014\017\210v\220W\230A\330\020\022\220'\230\021\230\"\230H\240A\330\014\017\210y\230\007\230q\330\020\022\220'\230\021\230\"\230H\240A\330\014\016\210g\220Q\220a\330\014\020\220\007\220q\230\002\230%\230q\240\001\360\006\000\t\014\2106\220\027\230\001\330\014\017\210v\220S\230\001\330\020\024\220G\2301\230A\340\020\024\220G\2301\230B\230g\240Q\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210;\220g\230Q\330\014\017\210t\220:\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\020\220\007\220q\230\002\230'\240\032\250>\270\021\330\010\013\210=\230\007\230q\330\014\017\210t\220:\230Q\230n\250H\260A\330\020\037\230x\240z\260\021\260(\270!\330\014\020\220\007\220q\230\002\230'\240\034\250^\2701\330\010\014\210G\2201\220B\220d\230'\240\021\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_1_A_oZq_o5H_Q_q_aj_q_G1A_t9AV9A[] = "\320\004'\240|\2601\330\032)\250\037\270\014\300A\330\032&\240o\260Z\270q\330\031&\240o\3205H\310\001\330\025!\240\032\250:\260Q\330\036/\250q\330\030#\240;\250a\360j\001\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\2409\250A\340\010\013\2107\220'\230\021\330\014\020\220\006\220f\230A\340\014\020\220\001\340\010\013\2106\220\027\230\005\230S\240\006\240g\250Q\330\014\017\210r\220\023\220A\330\020\026\220j\240\001\240\021\330\021%\240Q\330\020\026\220j\240\001\320!T\320TV\320VW\340\010\013\2109\220G\2301\330\014\017\210r\220\023\220A\330\020\024\220A\330\021\023\2203\220a\330\020\026\220j\240\001\320!H\310\002\310!\340\010\013\210;\220g\230Q\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2106\220\027\230\001\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2106\220\027\230\001\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2106\220\027\230\005\230T\240\026\240s\250!\330\014\020\220\007\220q\230\001\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2104\210w\220e\2304\230t\2403\240a\330\014\020\220\007\220q\230\001\330\010\013\2108\2207\230!\330\014\020\220\007\220q\230\002\230'\240\030\250\030\260\021\260(\270'\300\021\300!\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2109\220G\2301\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210=\230\007\230u\240D\250\r\260S\270\001\330\014\020\220\007\220q\230\001\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2106\220\027\230\001\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\2104\210w\220a\330\014\020\220\007\220q\230\002\230'\240\021\330\010""\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210=\230\007\230q\330\014\017\210t\220:\230Q\230n\250H\260A\330\020\037\230x\240z\260\021\260(\270!\330\014\020\220\007\220q\230\002\230'\240\034\250^\2701\330\010\013\210;\220g\230Q\330\014\017\210t\220:\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\020\220\007\220q\230\002\230'\240\032\250>\270\021\330\010\014\210G\2203\220d\230!\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_2Rq_1_at1_at1_r_A_q_A_1_AT_AT_r[] = "\320\004\031\230\021\360\020\000\t\014\2102\210R\210q\330\014\023\2201\330\010\033\320\033>\270a\270t\3001\330\014!\320!>\270a\270t\3001\330\014\017\210r\220\023\220A\330\020\027\220q\330\014 \320 A\300\021\300!\330\014)\250\031\260!\2601\330\035<\270A\270T\300\021\330\014#\320#<\270A\270T\300\021\330\014\017\210r\220\023\220A\330\020$\320$B\300!\3001\330\021\023\2203\220a\330\020$\320$B\300!\3001\340\020\027\220q\330\014)\250\031\260!\2601\330\035B\300!\3004\300q\330\014!\320!@\300\001\300\024\300Q\330\014 \320 C\3001\300D\310\001\330\014)\250\031\260!\2601\330\035@\300\001\300\024\300Q\330\014!\320!>\270a\270t\3001\330\014 \320 A\300\021\300$\300a\330\014)\250\031\260!\2601\330\035@\300\001\300\024\300Q\330\014!\320!>\270a\270t\3001\330\014 \320 A\300\021\300$\300a\330\014)\250\031\260!\2601\330\035A\300\021\300$\300a\330\014!\320!?\270q\300\004\300A\330\014 \320 B\300!\3004\300q\330\014)\250\031\260!\2601\330\010\017\210q";
static const char __pyx_k_55Fa_a_q_G1Bm1_t9AV9A_82Rs_A_AQ[] = "\320\0045\3205F\300a\330\030#\240;\250a\360&\000\t\020\210q\330\010\014\210G\2201\220B\220m\2401\330\010\017\210t\2209\230A\230V\2409\250A\340\010\013\2108\2202\220R\220s\230(\240\"\240A\330\014\022\220*\230A\230Q\340\010\013\320\013\033\2307\240!\330\014\017\320\017\037\230r\240\021\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210;\220g\230Q\330\014\017\210t\220:\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\017\210s\220!\220:\230Z\240r\250\021\330\020\026\220j\240\001\240\021\330\014\020\220\007\220q\230\002\230'\240\032\250>\270\021\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\340\010\014\210G\2201\220B\320\026*\250!\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_5_1_1_e6_q_G1A_1_e6_A_2S_7q_A_t[] = "\320\004\"\240!\360\032\000\t\014\2105\220\003\2201\330\014\037\320\0371\260\021\260$\260e\2706\300\026\300q\340\014\020\220\004\220G\2301\230A\330\014\037\320\0371\260\021\260$\260e\2706\300\023\300A\330\010\013\2102\210S\220\001\330\014!\320!7\260q\270\004\270A\330\014\017\210t\2203\220a\330\020\026\220l\240!\2403\240g\250Q\250i\260q\340\020\027\220r\230\022\2307\240\"\240G\250:\260T\270\022\2703\270a\270q\330\020\026\220l\240!\320#;\2702\270Q\330\010\032\230)\2401\240A\330\010\014\210G\2207\230!\2301\330\010\017\210q";
static const char __pyx_k_7I_Q_q_G1A_t9AV81_4s_AQ_4s_AQ_9[] = "\320\004(\250\017\3207I\310\021\330\027\"\240+\250Q\360*\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\2408\2501\340\010\013\2104\210s\220!\330\014\022\220*\230A\230Q\330\010\013\2104\210s\220!\330\014\022\220*\230A\230Q\340\010\013\2109\220C\220q\330\014\020\220\007\220q\230\001\340\010\013\210;\220g\230Q\330\014\017\210t\220:\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\020\220\007\220q\230\002\230'\240\032\250>\270\021\340\010\013\2108\2207\230!\330\014\017\210t\220:\230Q\230i\240q\330\020\026\220j\240\001\240\021\330\014\020\220\t\230\021\330\020\023\2204\220z\240\021\240'\250\025\250c\260\024\260U\270(\300!\330\024\032\230*\240A\240Q\330\020\030\230\007\230q\240\001\330\020\023\2204\220z\240\021\240'\250\025\250c\260\024\260U\270(\300!\330\024\032\230*\240A\240Q\330\020\024\220G\2301\230B\230h\240i\250q\340\010\016\210c\220\021\220$\220h\230a\230u\240A\330\010\014\210G\2201\220B\220h\230g\240Q\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_8_A_00C1_1P_q_G1A_t9AV_1_7_fA_9[] = "\320\0048\270\001\330\037+\250<\260}\300A\330\0370\3200C\3001\330\035(\250\013\2601\360P\001\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\240>\260\026\260|\3001\340\010\013\2107\220'\230\021\330\014\020\220\006\220f\230A\340\014\020\220\001\360\006\000\t\014\2109\220G\2301\330\014\017\210r\220\023\220A\330\020\024\220A\330\021\025\220Q\220k\240\021\240!\330\020\026\220j\240\001\320!A\300\022\3001\330\014\017\210v\220W\230E\240\023\240F\250'\260\021\330\020\026\220j\240\001\320!S\320SU\320UV\360\006\000\t\014\2106\220\027\230\005\230S\240\006\240g\250Q\330\014\017\210r\220\023\220A\330\020\026\220j\240\001\240\021\330\021%\240Q\330\020\026\220j\240\001\320!T\320TV\320VW\360\006\000\t\014\2106\220\027\230\005\230U\240&\250\002\250\"\250C\250v\260R\260q\330\014\022\220*\230A\230Q\360\006\000\t\014\2102\210S\220\001\330\014\020\220\001\360\006\000\t\014\2102\210W\220A\330\014\021\220\021\330\014\016\210g\220Q\220b\230\013\2401\330\014\017\210v\220W\230A\330\020\022\220'\230\021\230\"\230H\240A\330\014\017\210v\220W\230A\330\020\022\220'\230\021\230\"\230H\240A\330\014\017\210y\230\007\230q\330\020\022\220'\230\021\230\"\230H\240A\330\014\016\210g\220Q\220a\330\014\020\220\007\220q\230\002\230%\230q\240\001\360\006\000\t\014\2106\220\027\230\001\330\014\017\210v\220S\230\001\330\020\024\220G\2301\230A\340\020\024\220G\2301\230B\230g\240Q\330\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\013\210;\220g\230Q\330\014\017\210t\220:\230Q\230l\250(\260!\330\020\035\230X\240Z\250q\260\010\270\001\330\014\020\220\007\220q\230\002\230'\240\032\250>\270\021\330\010\013\210=\230\007\230q\330\014\017\210t\220:\230Q\230n\250H\260A\330\020\037\230x\240z\260\021\260(\270!\330\014\020\220\007\220q\230\002\230'\240\034\250^\2701\340\010\014\210G\2201\220B\220d\230'\240\026\240q\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_A_1D_T_2S_7q_A_t3a_l_3gQiq_l_2Q[] = "\200A\360\014\000\t\034\320\033+\2501\250D\260\005\260T\270\027\300\001\300\021\330\010\013\2102\210S\220\001\330\014!\320!7\260q\270\004\270A\330\014\017\210t\2203\220a\330\020\026\220l\240!\2403\240g\250Q\250i\260q\340\020\026\220l\240!\320#;\2702\270Q\330\010\030\230\t\240\021\240!\330\010\014\210F\220'\230\021\230!";
static const char __pyx_k_A_4wgQ_aq_Qe1_Q_m4q_q_Q_nD_nD_q[] = "\200A\360\032\000\t\014\2104\210w\220g\230Q\330\014\022\220,\230a\230q\340\010\013\210:\220Q\220e\2301\330\014\025\220Q\330\014\026\220m\2404\240q\330\r\027\220q\230\005\230Q\330\014\026\220n\240D\250\001\330\014\026\220n\240D\250\001\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\220m\2404\240q\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\220n\240D\250\001\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\220m\2404\240q\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\320\026&\240d\250!\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\320\026&\240d\250!\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\320\026,\250D\260\001\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\220m\2404\240q\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\220n\240D\250\001\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\220n\240D\250\001\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\220m\2404\240q\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\220m\2404\240q\330\r\027\220q\230\005\230Q\330\014\025\220Q\330\014\026\320\026'\240t\2501\340\014\022\220,\230a\230q\340\010\014\210G\2203\320\026,\250A\330\014\023\2203\320\0261\260\021\330\014\023\2203\220a\330\014\r\340\010\032\320\0321\260\021\260$\260h\270h\300a\330\010\013\2103\210c\220\021\330\014\022\220,\230a\320\0372\260\"\260C\260q\270\001\340\010\t";
static const char __pyx_k_A_class_ScamperIcmpMplsLabelSta[] = "\n    A :class:`ScamperIcmpMplsLabelStackEntry` object contains convenient\n    accessor methods for an MPLS ICMP extension\n    ";
static const char __pyx_k_A_d_r_Q_D_F_4q_e2U_V1D_HA_q_q_a[] = "\200A\330\010\016\210d\220%\220r\230\024\230Q\330\014\024\220D\230\004\230F\240!\2404\240q\330\014\022\220$\220e\2302\230U\240!\330\020\030\230\005\230V\2401\240D\250\001\330\020\024\220H\230A\330\020\027\220q\330\014\020\220\010\230\001\330\014\020\220\007\220q\330\010\016\210a";
static const char __pyx_k_A_q_E_WAQ_2S_7q_A_t3a_l_3gQiq_l[] = "\200A\360\030\000\t\034\320\033/\250q\260\004\260E\270\024\270W\300A\300Q\330\010\013\2102\210S\220\001\330\014!\320!7\260q\270\004\270A\330\014\017\210t\2203\220a\330\020\026\220l\240!\2403\240g\250Q\250i\260q\340\020\026\220l\240!\320#;\2702\270Q\330\010\032\230)\2401\240A\330\010\014\210G\2207\230!\2301\330\010\017\210q";
static const char __pyx_k_A_s_QfA_A_Q_32_A4_2S_t6_m2U_5_q[] = "\200A\330\010\017\210s\220'\230\021\230!\340\010\013\210:\220Q\220f\230A\330\014\024\220A\330\014\020\220\005\220Q\330\020#\320#3\2602\260]\300\"\300A\3304:\270!\330\020\023\2202\220S\230\001\330\024\025\330\020\027\220t\2306\240\021\240$\240m\2602\260U\270!\330\020\023\2205\230\007\230q\330\024\031\230\027\240\001\240\021\330\014\023\2201\340\010\033\320\033+\2502\250]\270%\270u\300F\310!\330\010\013\2102\210S\220\001\330\014\022\220,\230a\230q\330\010\017\210t\2206\230\021\230$\230m\2505\260\005\260Q";
static const char __pyx_k_ScamperDealiasProbeIterator___i[] = "_ScamperDealiasProbeIterator.__init__";
static const char __pyx_k_ScamperDealiasProbeIterator___n[] = "_ScamperDealiasProbeIterator.__next__";
static const char __pyx_k_ScamperDealiasProbedef___reduce[] = "ScamperDealiasProbedef.__reduce_cython__";
static const char __pyx_k_ScamperDealiasReplyIterator___i[] = "_ScamperDealiasReplyIterator.__init__";
static const char __pyx_k_ScamperDealiasReplyIterator___n[] = "_ScamperDealiasReplyIterator.__next__";
static const char __pyx_k_ScamperDealiasReply_is_icmp_ttl[] = "ScamperDealiasReply.is_icmp_ttl_exp";
static const char __pyx_k_ScamperHostMX___setstate_cython[] = "ScamperHostMX.__setstate_cython__";
static const char __pyx_k_ScamperHostRR___setstate_cython[] = "ScamperHostRR.__setstate_cython__";
static const char __pyx_k_ScamperHostSVCBParam___setstate[] = "ScamperHostSVCBParam.__setstate_cython__";
static const char __pyx_k_ScamperHostSVCB___reduce_cython[] = "ScamperHostSVCB.__reduce_cython__";
static const char __pyx_k_ScamperHttp_response_hdr_byname[] = "ScamperHttp.response_hdr_byname";
static const char __pyx_k_ScamperHttp_transmit_hdr_byname[] = "ScamperHttp.transmit_hdr_byname";
static const char __pyx_k_ScamperIcmpExts___reduce_cython[] = "ScamperIcmpExts.__reduce_cython__";
static const char __pyx_k_ScamperIcmpMplsLabelStackIterat[] = "_ScamperIcmpMplsLabelStackIterator";
static const char __pyx_k_ScamperNeighbourdisc___setstate[] = "ScamperNeighbourdisc.__setstate_cython__";
static const char __pyx_k_ScamperPingReply_is_from_target[] = "ScamperPingReply.is_from_target";
static const char __pyx_k_ScamperSniffPkt___reduce_cython[] = "ScamperSniffPkt.__reduce_cython__";
static const char __pyx_k_ScamperTraceHop___reduce_cython[] = "ScamperTraceHop.__reduce_cython__";
static const char __pyx_k_ScamperTraceHop_is_icmp_ttl_exp[] = "ScamperTraceHop.is_icmp_ttl_exp";
static const char __pyx_k_ScamperTraceHop_is_icmp_unreach[] = "ScamperTraceHop.is_icmp_unreach_port";
static const char __pyx_k_ScamperTracelbLinkIterator___in[] = "_ScamperTracelbLinkIterator.__init__";
static const char __pyx_k_ScamperTracelbLinkIterator___it[] = "_ScamperTracelbLinkIterator.__iter__";
static const char __pyx_k_ScamperTracelbLinkIterator___ne[] = "_ScamperTracelbLinkIterator.__next__";
static const char __pyx_k_ScamperTracelbNodeIterator___in[] = "_ScamperTracelbNodeIterator.__init__";
static const char __pyx_k_ScamperTracelbNodeIterator___it[] = "_ScamperTracelbNodeIterator.__iter__";
static const char __pyx_k_ScamperTracelbNodeIterator___ne[] = "_ScamperTracelbNodeIterator.__next__";
static const char __pyx_k_ScamperTracelbProbeset___reduce[] = "ScamperTracelbProbeset.__reduce_cython__";
static const char __pyx_k_ScamperUdpprobeProbe___setstate[] = "ScamperUdpprobeProbe.__setstate_cython__";
static const char __pyx_k_ScamperUdpprobeReply___setstate[] = "ScamperUdpprobeReply.__setstate_cython__";
static const char __pyx_k_ScamperUdpprobe___reduce_cython[] = "ScamperUdpprobe.__reduce_cython__";
static const char __pyx_k_The_class__ScamperHostRRIterato[] = "\n    The :class:`_ScamperHostRRIterator` class provides a convenient\n    interface to iterate over a given section in a DNS response.\n    ";
static const char __pyx_k_The_scamper_module_contains_a_c[] = "\nThe scamper module contains a collection of classes for interacting\nwith running :manpage:`scamper(1)` processes, and to read and write data\nstored in :manpage:`warts(5)` files.\n\nInteracting with a running scamper process\n==========================================\n\nTo interact with a running :manpage:`scamper(1)` process, instantiate a\n:class:`ScamperCtrl` object, which manages a collection of running\nscamper instances, each identified with a :class:`ScamperInst` object.\n:class:`ScamperCtrl` allows the user to add instances that are local scamper\nprocesses with the\n:meth:`~scamper.ScamperCtrl.add_inet` and\n:meth:`~scamper.ScamperCtrl.add_unix` methods,\nwhich allow connection to a scamper instance\nlistening on the specified port or unix domain socket, respectively.\n:class:`ScamperCtrl` also allows the user to add instances that\nare remote scamper processes managed by :manpage:`sc_remoted(1)` and\naccessible via a unix domain socket in the local file system with the\n:meth:`~scamper.ScamperCtrl.add_remote` and\n:meth:`~scamper.ScamperCtrl.add_remote_dir` methods.\n\nThe scamper module supports the following measurements:\n\n#. Traceroute (:class:`ScamperTrace`) via :meth:`~scamper.ScamperCtrl.do_trace`\n#. Ping (:class:`ScamperPing`) via :meth:`~scamper.ScamperCtrl.do_ping`\n#. Alias resolution (:class:`ScamperDealias`) via :meth:`~scamper.ScamperCtrl.do_ally`, :meth:`~scamper.ScamperCtrl.do_mercator`, :meth:`~scamper.ScamperCtrl.do_midarest`, :meth:`~scamper.ScamperCtrl.do_midardisc`, :meth:`~scamper.ScamperCtrl.do_prefixscan`, and :meth:`~scamper.ScamperCtrl.do_radargun`\n#. DNS (:class:`ScamperHost`) via :meth:`~scamper.ScamperCtrl.do_dns`\n#. Packet capture (:class:`ScamperSniff`) via :meth:`~scamper.ScamperCtrl.do_sniff`\n#. MDA traceroute (:class:`ScamperTracelb`) via :meth:`~scamper.ScamperCtrl.do_tracelb`\n#. HTTP (:class:`ScamperHttp`) via :meth:`~scamper.ScamperCtrl.do_http`\n#. UDP probes (:class:`ScamperUdpprobe`) via :meth:`~scamper.Sca""mperCtrl.do_udpprobe`\n#. TCP behavior inference (:class:`ScamperTbit`) via :meth:`~scamper.ScamperCtrl.do_tbit`\n\nIn order to request one of the scamper instances represented by a\n:class:`ScamperInst` object conducts a measurement, call the specific\ndo method to conduct the measurement.\n:class:`ScamperCtrl` provides both synchronous and event-based approaches\nto retrieving completed measurements.\nThe following code illustrates the first of two synchronous approaches:\n\n.. code-block::\n\n  from scamper import *\n\n  ctrl = ScamperCtrl(unix=\"/tmp/scamper\")\n  o = ctrl.do_ping(\"192.172.226.122\", attempts=3, sync=True)\n  print(\"ping from %s to %s\" % (o.src, o.dst))\n  for r in o:\n    print(r)\n\nThis code constructs a :class:`ScamperCtrl`, adding a single local\nscamper instance reachable through a unix domain socket.\nIt then issues a ping measurement with :meth:`~scamper.ScamperCtrl.do_ping`,\nsending three attempts; the sync parameter causes the method to block\nand return the completed results of the measurement, when they become\navailable.\nFinally, the code prints a summary of the measurement.\n\nThe following code illustrates the second of the two synchronous\napproaches:\n\n.. code-block::\n\n  from scamper import *\n\n  ctrl = ScamperCtrl(unix=\"/tmp/scamper\")\n  ctrl.do_dns(\"www.caida.org\")\n  ctrl.do_dns(\"www.caida.org\", qtype='AAAA')\n  for o in ctrl.responses():\n    for rr in o.ans():\n      print(rr)\n\nThis code issues two DNS queries -- A and AAAA queries for\nwww.caida.org, which scamper executes in parallel.\nBecause :meth:`~scamper.ScamperCtrl.do_dns` is called without a sync\nparameter, these methods immediately return a :class:`ScamperTask`\nobject representing the in-progress measurement, which this code\nignores.\nIt then waits for these measurements to complete, calling the\n:meth:`~scamper.ScamperCtrl.responses` method, which returns\ncompleted measurements, and only yields once all outstanding\n:class:`ScamperTask` have ""completed.\n\nThe following code illustrates an event-based approach:\n\n.. code-block::\n\n  from scamper import *\n  from datetime import *\n\n  ctrl = ScamperCtrl(unix=\"/tmp/scamper\")\n  round_count = 10\n  next_tx = datetime.now()\n\n  while not ctrl.is_done():\n      now = datetime.now()\n      if now < next_tx:\n          o = ctrl.poll(until=(next_tx if round_count > 0 else None))\n          if isinstance(o, ScamperPing) and o.min_rtt is not None:\n              print(\"%s %.1f\" % (o.start.strftime(\"%H:%M:%S\"),\n                                 o.min_rtt.total_seconds() * 1000))\n      elif round_count > 0:\n          ctrl.do_ping(\"192.172.226.122\", attempts=8, wait_probe=0.5,\n                       reply_count=4)\n          next_tx = next_tx + timedelta(seconds=10)\n          round_count -= 1\n          if round_count <= 0:\n              ctrl.done()\n\nThis code sends a batch of pings every 10 seconds.  Each batch of pings\ncan take a different length of time depending on packet loss, as it can\nsend up to 8 pings, but can stop after receiving 4 responses.\nFor each batch of pings, it prints a timestamp that reports when the\nmeasurement started, and the minimum RTT observed in milliseconds.\nIt passes a parameter to :meth:`~scamper.ScamperCtrl.wait` until it has\nno more pings to send, when round_count reaches zero.\nThe :meth:`~scamper.ScamperCtrl.wait` method can take a parameter that\ncauses it to return when a given time is reached (the until parameter)\nor wait for a specific length of time (the timeout parameter).\nIf neither parameter is used, then :meth:`~scamper.ScamperCtrl.wait`\nwill block until it either has data to return, or an exception to raise.\nThis code called :meth:`~scamper.ScamperCtrl.done` to signal that it\nhad no further measurements to send, and the overall loop stops once\nthe :meth:`~scamper.ScamperCtrl.is_done` method signals that the\n:class:`ScamperCtrl` has no further measurement results to return.\nCalling :meth:`~sc""amper.ScamperCtrl.done` puts all underlying\n:class:`ScamperInst` into a read-only mode, where no further commands\ncan be sent, but existing measurements can complete.\n\n:class:`ScamperCtrl` can handle multiple scamper instances.\nThe following code illustrates a simple approach to conducting a\nmeasurement task using multiple :class:`ScamperInst`:\n\n.. code-block::\n\n  import sys\n  from scamper import *\n\n  if len(sys.argv) != 3:\n    print(\"usage: single-radius.py $dir $ip\")\n    sys.exit(-1)\n\n  ctrl = ScamperCtrl(remote_dir=sys.argv[1])\n  for i in ctrl.instances():\n    ctrl.do_ping(sys.argv[2], inst=i)\n\n  min_rtt = None\n  min_vp = None\n\n  for o in ctrl.responses():\n    if o.min_rtt is not None and (min_rtt is None or min_rtt > o.min_rtt):\n      min_rtt = o.min_rtt\n      min_vp = o.inst\n\n  print(\"%s %.1f ms\" % (min_vp.name, min_rtt.total_seconds() * 1000))\n\nThis code creates a :class:`ScamperInst` for each instance managed\nby :manpage:`sc_remoted(1)` that it finds in the specified directory.\nIt then issues delay measurements using each instance, and then\nretrieves the responses as they arrive.\nIt keeps track of which Vantage Point (VP) gave the shortest delay,\nand prints the name of the VP with the shortest delay at the end.\n\nReading and writing results to files\n====================================\n\nTo read results stored in a native scamper :manpage:`warts(5)` file,\ninstantiate a :class:`ScamperFile` object, passing the name of the file\nto open as the first parameter.  Read each object out of the file using the\n:meth:`~scamper.ScamperFile.read` method, or by using the built in\nIterator, demonstrated below.  If the file contains objects of different\ntypes, but you are only interested in a subset of the object types, you\ncan signal the types with the :meth:`~scamper.ScamperFile.filter_types`\nmethod.  Finally, you can close the file when you are finished using the\n:meth:`~scamper.ScamperFile.close` method.\n\nThe following"" code illustrates the overall approach:\n\n.. code-block::\n\n  from scamper import *\n\n  addrs = {}\n  file = ScamperFile(\"foo.warts.gz\")\n  for o in file:\n    if isinstance(o, ScamperTrace):\n      for hop in o.hops():\n        if hop.src is not None:\n          addrs[hop.src] = 1\n\n  for o in sorted(list(addrs)):\n    print(o)\n\n  file.close()\n\nThis code reads :class:`ScamperTrace` objects out of foo.warts.gz, storing\naddresses observed in each traceroute in a dictionary to identify\nthe unique addresses.\nFinally, it prints the addresses in sorted order.\n\nTo write measurements to a file, instantiate a :class:`ScamperFile`\nobject, passing 'w' as the mode parameter.  By default,\n:class:`ScamperFile` will write :manpage:`warts(5)` output, but this can\nbe changed either by specifying the kind parameter, or by using an\nappropriate suffix in the filename.\n:class:`ScamperFile` can write compressed :manpage:`warts(5)` output\nusing \"warts.gz\", \"warts.bz2\", or \"warts.xz\", write json output\nwith \"json\", or simple text output with \"text\".\nWrite each object out by passing the object to the\n:meth:`~scamper.ScamperFile.write` method.\n\nThe following code illustrates the overall approach:\n\n.. code-block::\n\n  from scamper import *\n\n  ctrl = ScamperCtrl()\n  ctrl.add_unix(\"/tmp/scamper\")\n  ctrl.do_ping(\"192.172.226.122\", attempts=3)\n  ctrl.do_trace(\"192.172.226.122\")\n  ctrl.do_dns(\"192.172.226.122\")\n  ctrl.done()\n\n  out = ScamperFile(\"foo.warts.gz\", 'w', mode=\"warts.gz\")\n  while not ctrl.is_done():\n    o = ctrl.poll()\n    out.write(o)\n  out.close()\n\nThis code issues ping, traceroute, and DNS lookups, and\nwrites the collected data to a gzip-compressed warts file.\n";
static const char __pyx_k_cannot_provide_both_timeout_and[] = "cannot provide both timeout and until parameters";
static const char __pyx_k_k_A_q_G1A_t9AV_q_7_q_G3d_t9AS_Q[] = "\320\004&\240k\260\033\270A\360\036\000\t\020\210q\330\010\014\210G\2201\220A\330\010\017\210t\2209\230A\230V\240<\250q\340\010\013\2107\220'\230\021\330\014\020\220\007\220q\230\002\230'\240\021\330\010\014\210G\2203\220d\230!\340\010\017\210t\2209\230A\230S\240\005\240Q\240g\250V\2601";
static const char __pyx_k_list_not_allowed_with_primitive[] = "list not allowed with {primitive}";
static const char __pyx_k_must_specify_dst_method_and_url[] = "must specify dst, method, and url";
static const char __pyx_k_q_q_3at_1_l_aq_c_hb_D_d_1_5_Q_A[] = "\320\004\033\230<\240q\360$\000\t \230q\340\010\013\2103\210a\210t\220>\240\022\2401\330\014\022\220$\220l\240$\240a\240q\330\010\016\210c\220\021\220$\220h\230b\240\001\330\014\024\220D\230\006\230d\240!\2401\340\014\023\2205\230\001\330\014\020\220\005\220Q\330\014\020\220\014\230A\330\014\017\210t\2206\230\024\230T\240\031\250#\250R\250t\2604\260x\270w\300a\330\020\024\220G\2301\230F\240&\250\004\250A\340\014\017\210t\2207\230#\230T\240\032\2501\250D\260\r\270Q\330\020\027\220q\340\010\013\2108\2207\230%\230t\2406\250\027\260\001\330\014\022\220*\230A\230Q\340\010\013\2108\2207\230!\330\014\017\210t\220:\230Q\230i\240x\250q\330\020\032\230(\240*\250A\250X\260Q\330\014\020\220\010\230\t\240\024\240S\250\002\250!\330\014\025\220Q\220a\330\r\023\2207\230!\330\014\017\210t\220:\230Q\230g\240X\250Q\330\020\026\220i\230q\240\001\330\014\020\220\001\330\014\025\220Q\220a\340\014\020\220\001\340\010\t\330\014\017\210s\220!\2204\220~\240R\240q\330\020\026\220d\230,\240d\250!\2501\330\014\022\220#\220Q\220d\230(\240\"\240A\330\020\030\230\004\230F\240$\240a\240q\330\020\027\220u\230A\330\020\024\220E\230\021\330\020\024\220L\240\001\330\020\023\2204\220v\230T\240\024\240Y\250c\260\022\2604\260t\2708\3007\310!\330\024\030\230\007\230q\240\006\240f\250D\260\001\340\020\023\2204\220w\230c\240\024\240Z\250q\260\004\260M\300\021\330\024\033\2301\360\006\000\r\037\230a\340\014\017\210t\2208\2301\330\020\027\220q\360\006\000\r\020\210r\220\027\230\001\330\020\026\220h\230i\240t\2501\330\020\023\2202\220R\220q\330\024\025\330\020\027\220r\230\022\2301\330\020\022\220*\230D\240\001\330\020\022\220+\230T\240\021\340\033-\250Q\250d\260%\260q\340\010\017\210q";
static const char __pyx_k_self__c_self__c_synctask_cannot[] = "self._c,self._c_synctask cannot be converted to a Python object for pickling";
static const char __pyx_k_wait_probe_must_be_at_least_1ms[] = "wait_probe must be at least 1ms";
static const char __pyx_k_wait_probe_must_be_greater_than[] = "wait_probe must be greater than zero";
static const char __pyx_k_wait_round_must_be_at_least_1ms[] = "wait_round must be at least 1ms";
static const char __pyx_k_wait_round_must_be_greater_than[] = "wait_round must be greater than zero";
static const char __pyx_k_A_2Rr_Bc_A_32Q_7q_3c_Qa_7q_AQc_3[] = "\200A\360\020\000\t\014\2102\210R\210r\220\023\220B\220c\230\021\330\014\022\220*\230A\320\0353\2602\260Q\330\010\033\320\0337\260q\330\010\013\2103\210c\220\021\330\014\022\220+\230Q\230a\330\010\031\320\0317\260q\270\004\270A\270Q\270c\300\021\300!\3003\300c\310\021\330\0325\260Q\260a\330\014\023\2201\330\010\032\320\0325\260Q\260d\270%\270q\330\010\032\320\032:\270!\2701\330\0261\260\021\260!\330\010\013\2102\210S\220\005\220S\230\002\230#\230Q\330\014\023\2201\330\010 \320 8\270\001\270\024\270Q\330\010\036\230i\240q\250\003\2503\250a";
static const char __pyx_k_A_4wgQ_aq_AT_YaxqPQ_3c_3gS_1_7_Q[] = "\200A\360$\000\t\014\2104\210w\220g\230Q\330\014\022\220,\230a\230q\340\010\032\320\032,\250A\250T\260\030\270\024\270Y\300a\300x\310q\320PQ\330\010\013\2103\210c\220\022\2203\220g\230S\240\001\330\014\023\2201\340\010\013\2107\220#\220Q\330\014\025\320\0255\260Q\330\014\033\2309\240A\240Q\330\014\017\210r\220\027\230\001\330\035/\250q\260\001\330\014\023\2201\330\016\025\220S\320\0305\260Q\330\016\025\220S\320\0303\2601\330\016\025\220S\230\001\330\014\026\320\0267\260q\330\014\034\230I\240Q\240i\250q\330\014\017\210r\220\027\230\001\330\0350\260\001\260\021\330\014\023\2201\330\r\024\220C\220q\330\014\037\230y\250\001\320)K\3101\330\r\024\220C\220q\330\014\036\230i\240q\320(H\310\001\330\r\024\220C\220q\330\014!\240\031\250!\320+Q\320QR\330\r\024\220C\220q\330\014!\240\031\250!\320+Q\320QR\330\r\024\220C\220q\330\014'\240y\260\001\3201c\320cd\330\r\024\220C\220q\330\014\036\230i\240q\320(H\310\001\330\r\024\220C\220q\330\014\037\230y\250\001\320)K\3101\330\r\024\220C\220q\330\014\037\230y\250\001\320)K\3101\330\r\024\220C\220q\330\014\036\230i\240q\320(H\310\001\330\r\024\220C\220q\330\014\036\230i\240q\320(H\310\001\330\r\024\220C\220q\330\014\"\240)\2501\320,T\320TU\340\010\016\210l\230!\320\0335\260R\260q";
static const char __pyx_k_A_5_5_4z_Qa_6at17_7_178_2S_q_8_6[] = "\200A\360\032\000\t\014\2105\220\003\2205\230\003\2304\230z\250\021\250&\260\001\330\014\023\220:\230Q\230a\330\010\031\320\0316\260a\260t\2701\3307;\2707\300!\3001\33078\270\001\330\010\013\2102\210S\220\001\330\014\023\220<\230q\240\002\320\"8\270\001\330\010\013\2106\220\023\220A\330\014\023\2201\330\010\016\210e\2207\230!\2309\240A\330\010\014\210A\210Q\330\010\017\210q";
static const char __pyx_k_A_A_a_1_at1_at1_B_1_B_1_Q_U_1_at[] = "\200A\360\020\000\t\014\320\013\037\320\037A\300\021\300$\300a\330\014\023\2201\330\010\033\320\033>\270a\270t\3001\330\014!\320!>\270a\270t\3001\330\014!\320!B\300!\3001\330\014!\320!B\300!\3001\330\014%\320%@\300\001\300\024\300Q\330\014\020\220\005\220U\230!\2301\330\020$\320$>\270a\270t\3005\310\001\330\020\023\2202\220S\230\001\330\024\025\330\020)\320)J\310!\3101\330\020\024\220E\230\025\230a\230q\330\024(\320(H\310\001\310\023\310A\330\024)\320)G\300q\310\001\330\024'\320'I\310\021\310#\310Q\330\027(\320(9\270\021\270$\270d\300#\300Q\330\030 \240\013\2509\260A\260Q\330+4\260A\260Q\330\035<\270A\270T\300\021\330\014#\320#<\270A\270T\300\021\330\014!\320!?\270q\300\001\330\014#\320#D\300A\300Q\330\014\033\2309\240A\240Q\330\014!\320!?\270q\300\001\330\014#\320#D\300A\300Q\330\014\033\2309\240A\240Q\330\014\024\220C\220q\330\035B\300!\3004\300q\330\014!\320!@\300\001\300\024\300Q\330\014#\320#D\300A\300Q\330\014\033\2309\240A\240Q\330\014#\320#E\300Q\300a\330\014\033\2309\240A\240Q\330\014\024\220C\220q\330\010\017\210q";
static const char __pyx_k_A_Ja_L_Ja_Ja_L_6_xs_Je1_A_Je1_Je[] = "\200A\360\022\000\t\r\210J\220a\330\010\014\210L\230\001\330\010\014\210J\220a\330\010\014\210J\220a\330\010\014\210L\230\001\330\010\013\2106\220\027\230\001\330\014\017\210x\220s\230!\330\020\024\220J\230e\2401\330\021\031\230\023\230A\330\020\024\220J\230e\2401\340\020\024\220J\230e\2401\330\010\013\2108\2207\230!\330\014\020\220\014\230A\330\014\020\220\n\230!\330\020\023\2204\220z\240\021\240(\250!\330\024\032\230*\240A\240Q\330\020\027\220v\230V\2401\330\020\023\2205\230\003\2301\330\024\030\230\t\240\021\240%\240q\330\025\032\230#\230Q\330\024\030\230\t\240\021\240&\250\001\330\025\032\230#\230Q\330\024\030\230\t\240\021\240&\250\001\330\025\032\230#\230Q\330\024\030\230\t\240\021\240&\250\001\330\025\032\230#\230Q\330\024\030\230\t\240\021\240%\240q\330\025\032\230#\230Q\330\024\030\230\t\240\021\240%\240q\330\025\032\230#\230Q\330\024\030\230\t\240\021\240&\250\001\330\025\032\230#\230Q\330\024\030\230\t\240\021\240&\250\001\330\025\032\230#\230Q\330\024\030\230\t\240\021\240&\250\001\340\024\032\230*\240A\240R\320'9\270\021";
static const char __pyx_k_A_L_1_b_Ba_q_t4y_31D_Rwaq_r_A_iq[] = "\200A\360\014\000\t\r\210L\230\002\230(\240!\2401\330\014\021\220\025\220b\230\004\230B\230a\330\014\020\220\002\220%\220q\230\001\330\014\017\210t\2204\220y\240\001\240\021\240!\330\020\021\330\014\037\320\0373\2601\260D\270\005\270R\270w\300a\300q\330\014\017\210r\220\023\220A\330\020\021\330\014\036\230i\240q\250\001\330\014\020\220\007\220w\230a\230q";
static const char __pyx_k_A_Qd_q_2_2S_7q_A_t3a_l_3gQiq_l_2[] = "\200A\360\030\000\t\034\320\033-\250Q\250d\260%\260q\330.2\260'\270\021\270!\330\010\013\2102\210S\220\001\330\014!\320!7\260q\270\004\270A\330\014\017\210t\2203\220a\330\020\026\220l\240!\2403\240g\250Q\250i\260q\340\020\026\220l\240!\320#;\2702\270Q\330\010\032\230)\2401\240A\330\010\014\210G\2207\230!\2301\330\010\017\210q";
static const char __pyx_k_A_Qe1_a_4z_a_1A_a_t81A_5_q_q_Q_4[] = "\200A\330\010\020\220\001\330\010\013\210:\220Q\220e\2301\330\014\020\220\006\220a\330\020\023\2204\220z\240\021\240$\240a\330\024\032\230)\2401\240A\330\014\020\220\006\220a\330\020\027\220t\2308\2401\240A\330\020\023\2205\230\007\230q\330\024\031\230\027\240\001\240\021\330\r\027\220q\230\005\230Q\330\014\023\2204\220x\230q\240\001\330\014\017\210u\220G\2301\330\020\025\220W\230A\230Q\340\014\022\220)\2301\230A\330\010\017\210q";
static const char __pyx_k_A_a_1_a_6_A_1_6aq_E_aq_7q_q_1A_s[] = "\200A\330\010\016\210a\330\010\037\320\0371\260\021\260$\260a\330\010\013\2106\220\023\220A\330\014\023\2201\330\010\037\320\0376\260a\260q\330\010\014\210E\220\025\220a\220q\330\014\"\320\"7\260q\270\007\270q\330\014\032\230)\2401\240A\330\014\017\210s\220'\230\021\330\020\023\2207\230!\2301\330\027*\250!\2501\330\010\017\210q";
static const char __pyx_k_A_a_4wgQ_AQ_E_r_A_3a_3a_3a_3a_3a[] = "\200A\360\030\000\t\037\230a\340\010\013\2104\210w\220g\230Q\330\014\022\220*\230A\230Q\340\010\014\210E\220\021\330\014\017\210r\220\023\220A\330\020\031\230\021\330\021\023\2203\220a\330\020\031\230\021\330\021\023\2203\220a\330\020\031\230\021\330\021\023\2203\220a\330\020\031\230\021\330\021\023\2203\220a\330\020\031\230\021\330\021\023\2203\220a\330\020\031\230\021\330\021\023\2203\220a\330\020\031\230\021\330\021\023\2203\220a\330\020\031\230\021\330\021\023\2203\220a\330\020\031\230\021\330\021\023\2203\220a\330\020\031\230\021\330\021\023\2203\220a\330\020\031\230\021\340\020\026\220j\240\001\240\021\340\014\023\2201\330\014\020\220\005\220U\230!\2301\330\020\023\2205\230\001\230\023\230C\230q\330\024\033\2301\330\024\025\340\014\017\210t\2201\330\020\025\220Q\220i\230q\330\020\031\230\021\340\010\013\2106\220\023\220A\330\014\022\220*\230A\230Q\340\010\035\320\0357\260q\270\007\270q\330\010\013\2106\220\023\220A\330\014\022\220,\230a\230q\330\010\013\2104\210x\220s\230!\330\0312\260!\2604\260q\330\010\014\210J\220a";
static const char __pyx_k_A_d_D_t_S_T_1D_Zs_T_1D_T_1D_1_Jc[] = "\200A\330\010\016\210d\220(\230\"\230D\240\001\330\014\017\210t\220:\230S\240\001\330\020\025\220T\230\027\240\003\2401\240D\250\001\330\021\025\220Z\230s\240!\330\020\025\220T\230\027\240\003\2401\240D\250\001\340\020\025\220T\230\027\240\003\2401\240D\250\001\330\014\020\220\013\2301\330\014\020\220\004\220J\230c\240\025\240a\330\021\023\2208\2303\230b\240\004\240B\240g\250S\260\004\260A\330\020\027\220q\330\010\016\210a";
static const char __pyx_k_SCAMPER_PING_REPLY_FLAG_PROBE_IP[] = "SCAMPER_PING_REPLY_FLAG_PROBE_IPID";
static const char __pyx_k_SCAMPER_PING_REPLY_FLAG_REPLY_IP[] = "SCAMPER_PING_REPLY_FLAG_REPLY_IPID";
static const char __pyx_k_SCAMPER_PING_REPLY_FLAG_REPLY_TT[] = "SCAMPER_PING_REPLY_FLAG_REPLY_TTL";
static const char __pyx_k_SCAMPER_TRACE_REPLY_FLAG_REPLY_T[] = "SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL";
static const char __pyx_k_SCAMPER_TRACE_TYPE_ICMP_ECHO_PAR[] = "SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS";
static const char __pyx_k_ScamperDealiasMidardiscRound___r[] = "ScamperDealiasMidardiscRound.__reduce_cython__";
static const char __pyx_k_ScamperDealiasMidardiscRound___s[] = "ScamperDealiasMidardiscRound.__setstate_cython__";
static const char __pyx_k_ScamperDealiasProbe___reduce_cyt[] = "ScamperDealiasProbe.__reduce_cython__";
static const char __pyx_k_ScamperDealiasProbe___setstate_c[] = "ScamperDealiasProbe.__setstate_cython__";
static const char __pyx_k_ScamperDealiasProbedefIterator_2[] = "_ScamperDealiasProbedefIterator.__init__";
static const char __pyx_k_ScamperDealiasProbedefIterator_3[] = "_ScamperDealiasProbedefIterator.__iter__";
static const char __pyx_k_ScamperDealiasProbedefIterator_4[] = "_ScamperDealiasProbedefIterator.__next__";
static const char __pyx_k_ScamperDealiasProbedef___setstat[] = "ScamperDealiasProbedef.__setstate_cython__";
static const char __pyx_k_ScamperDealiasReply___reduce_cyt[] = "ScamperDealiasReply.__reduce_cython__";
static const char __pyx_k_ScamperDealiasReply___setstate_c[] = "ScamperDealiasReply.__setstate_cython__";
static const char __pyx_k_ScamperDealiasReply_is_from_targ[] = "ScamperDealiasReply.is_from_target";
static const char __pyx_k_ScamperDealiasReply_is_icmp_unre[] = "ScamperDealiasReply.is_icmp_unreach";
static const char __pyx_k_ScamperDealias___setstate_cython[] = "ScamperDealias.__setstate_cython__";
static const char __pyx_k_ScamperHostOPTElem___reduce_cyth[] = "ScamperHostOPTElem.__reduce_cython__";
static const char __pyx_k_ScamperHostOPTElem___setstate_cy[] = "ScamperHostOPTElem.__setstate_cython__";
static const char __pyx_k_ScamperHostOPT___setstate_cython[] = "ScamperHostOPT.__setstate_cython__";
static const char __pyx_k_ScamperHostQuery___reduce_cython[] = "ScamperHostQuery.__reduce_cython__";
static const char __pyx_k_ScamperHostQuery___setstate_cyth[] = "ScamperHostQuery.__setstate_cython__";
static const char __pyx_k_ScamperHostSOA___setstate_cython[] = "ScamperHostSOA.__setstate_cython__";
static const char __pyx_k_ScamperHostSVCBParam___reduce_cy[] = "ScamperHostSVCBParam.__reduce_cython__";
static const char __pyx_k_ScamperHostSVCB___setstate_cytho[] = "ScamperHostSVCB.__setstate_cython__";
static const char __pyx_k_ScamperHostTXT___setstate_cython[] = "ScamperHostTXT.__setstate_cython__";
static const char __pyx_k_ScamperHttpBuf___setstate_cython[] = "ScamperHttpBuf.__setstate_cython__";
static const char __pyx_k_ScamperIcmpExt___setstate_cython[] = "ScamperIcmpExt.__setstate_cython__";
static const char __pyx_k_ScamperIcmpExts___setstate_cytho[] = "ScamperIcmpExts.__setstate_cython__";
static const char __pyx_k_ScamperIcmpMplsLabelStackEntry_2[] = "ScamperIcmpMplsLabelStackEntry.__init__";
static const char __pyx_k_ScamperIcmpMplsLabelStackEntry_3[] = "ScamperIcmpMplsLabelStackEntry.__str__";
static const char __pyx_k_ScamperIcmpMplsLabelStackEntry_e[] = "ScamperIcmpMplsLabelStackEntry.exp";
static const char __pyx_k_ScamperIcmpMplsLabelStackEntry_l[] = "ScamperIcmpMplsLabelStackEntry.label";
static const char __pyx_k_ScamperIcmpMplsLabelStackEntry_s[] = "ScamperIcmpMplsLabelStackEntry.s";
static const char __pyx_k_ScamperIcmpMplsLabelStackEntry_t[] = "ScamperIcmpMplsLabelStackEntry.ttl";
static const char __pyx_k_ScamperNeighbourdisc___reduce_cy[] = "ScamperNeighbourdisc.__reduce_cython__";
static const char __pyx_k_ScamperPingReply___reduce_cython[] = "ScamperPingReply.__reduce_cython__";
static const char __pyx_k_ScamperPingReply___setstate_cyth[] = "ScamperPingReply.__setstate_cython__";
static const char __pyx_k_ScamperPingReply_is_icmp_echo_re[] = "ScamperPingReply.is_icmp_echo_reply";
static const char __pyx_k_ScamperPingReply_is_icmp_tsreply[] = "ScamperPingReply.is_icmp_tsreply";
static const char __pyx_k_ScamperPingReply_is_icmp_ttl_exp[] = "ScamperPingReply.is_icmp_ttl_exp";
static const char __pyx_k_ScamperPingReply_is_icmp_unreach[] = "ScamperPingReply.is_icmp_unreach";
static const char __pyx_k_ScamperSniffPkt___setstate_cytho[] = "ScamperSniffPkt.__setstate_cython__";
static const char __pyx_k_ScamperTbitPkt___setstate_cython[] = "ScamperTbitPkt.__setstate_cython__";
static const char __pyx_k_ScamperTraceHop___setstate_cytho[] = "ScamperTraceHop.__setstate_cython__";
static const char __pyx_k_ScamperTraceHop_is_icmp_echo_rep[] = "ScamperTraceHop.is_icmp_echo_reply";
static const char __pyx_k_ScamperTracePmtudNote___reduce_c[] = "ScamperTracePmtudNote.__reduce_cython__";
static const char __pyx_k_ScamperTracePmtudNote___setstate[] = "ScamperTracePmtudNote.__setstate_cython__";
static const char __pyx_k_ScamperTracePmtud___reduce_cytho[] = "ScamperTracePmtud.__reduce_cython__";
static const char __pyx_k_ScamperTracePmtud___setstate_cyt[] = "ScamperTracePmtud.__setstate_cython__";
static const char __pyx_k_ScamperTracelbLink___reduce_cyth[] = "ScamperTracelbLink.__reduce_cython__";
static const char __pyx_k_ScamperTracelbLink___setstate_cy[] = "ScamperTracelbLink.__setstate_cython__";
static const char __pyx_k_ScamperTracelbNode___reduce_cyth[] = "ScamperTracelbNode.__reduce_cython__";
static const char __pyx_k_ScamperTracelbNode___setstate_cy[] = "ScamperTracelbNode.__setstate_cython__";
static const char __pyx_k_ScamperTracelbProbe___reduce_cyt[] = "ScamperTracelbProbe.__reduce_cython__";
static const char __pyx_k_ScamperTracelbProbe___setstate_c[] = "ScamperTracelbProbe.__setstate_cython__";
static const char __pyx_k_ScamperTracelbProbeset___setstat[] = "ScamperTracelbProbeset.__setstate_cython__";
static const char __pyx_k_ScamperTracelbReply___reduce_cyt[] = "ScamperTracelbReply.__reduce_cython__";
static const char __pyx_k_ScamperTracelbReply___setstate_c[] = "ScamperTracelbReply.__setstate_cython__";
static const char __pyx_k_ScamperTracelb___setstate_cython[] = "ScamperTracelb.__setstate_cython__";
static const char __pyx_k_ScamperUdpprobeProbe___reduce_cy[] = "ScamperUdpprobeProbe.__reduce_cython__";
static const char __pyx_k_ScamperUdpprobeReply___reduce_cy[] = "ScamperUdpprobeReply.__reduce_cython__";
static const char __pyx_k_ScamperUdpprobe___setstate_cytho[] = "ScamperUdpprobe.__setstate_cython__";
static const char __pyx_k_This_class_cannot_be_insantiated[] = "This class cannot be insantiated directly.";
static const char __pyx_k_This_class_cannot_be_instantiate[] = "This class cannot be instantiated directly.";
static const char __pyx_k_can_only_specify_either_TCP_sequ[] = "can only specify either TCP sequence or acknowledgement value";
static const char __pyx_k_cannot_add_filter_to_non_readabl[] = "cannot add filter to non-readable files";
static const char __pyx_k_cannot_run_synchronous_measureme[] = "cannot run synchronous measurements with list";
static const char __pyx_k_cannot_specify_ICMP_checksum_wit[] = "cannot specify ICMP checksum with TCP parameters";
static const char __pyx_k_cannot_specify_ICMP_parameters_w[] = "cannot specify ICMP parameters with ";
static const char __pyx_k_cannot_specify_source_or_destina[] = "cannot specify source or destination ports with ";
static const char __pyx_k_do_not_specify_kind_when_opening[] = "do not specify kind when opening a file for reading";
static const char __pyx_k_expected_bytes_array_of_4_6_16_b[] = "expected bytes array of 4/6/16 bytes";
static const char __pyx_k_fudge_value_must_be_between_0_65[] = "fudge value must be between 0-65535";
static const char __pyx_k_inst_list_contains_non_ScamperIn[] = "inst list contains non ScamperInst";
static const char __pyx_k_must_specify_destination_address[] = "must specify destination address, port, and payload";
static const char __pyx_k_outfile_not_opened_in_write_mode[] = "outfile not opened in write mode";
static const char __pyx_k_self__c_cannot_be_converted_to_a[] = "self._c cannot be converted to a Python object for pickling";
static const char __pyx_k_self__c_self__c_f_self__c_rb_can[] = "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling";
static const char __pyx_k_self__c_self__c_i_cannot_be_conv[] = "self._c,self._c_i cannot be converted to a Python object for pickling";
static const char __pyx_k_self__c_self__c_s_cannot_be_conv[] = "self._c,self._c_s cannot be converted to a Python object for pickling";
static const char __pyx_k_self__c_sf_self__c_sff_cannot_be[] = "self._c_sf,self._c_sff cannot be converted to a Python object for pickling";
static const char __pyx_k_self__p_self__r_cannot_be_conver[] = "self._p,self._r cannot be converted to a Python object for pickling";
static const char __pyx_k_specify_method_when_specifying_a[] = "specify method when specifying a TCP sequence or acknowledgement value";
static const char __pyx_k_specify_method_when_specifying_t[] = "specify method when specifying the source or destination port";
static const char __pyx_k_unexpected_IP_address_in_probede[] = "unexpected IP address in probedef";
static const char __pyx_k_vps_list_containts_non_ScamperVp[] = "vps list containts non ScamperVp";
static const char __pyx_k_wait_timeout_must_be_at_least_1s[] = "wait_timeout must be at least 1s";
static const char __pyx_k_ScamperDealiasProbeIterator___i_2[] = "_ScamperDealiasProbeIterator.__iter__";
static const char __pyx_k_ScamperDealiasReplyIterator___i_2[] = "_ScamperDealiasReplyIterator.__iter__";
static const char __pyx_k_ScamperIcmpMplsLabelStackIterat_2[] = "_ScamperIcmpMplsLabelStackIterator.__init__";
static const char __pyx_k_ScamperIcmpMplsLabelStackIterat_3[] = "_ScamperIcmpMplsLabelStackIterator.__iter__";
static const char __pyx_k_ScamperIcmpMplsLabelStackIterat_4[] = "_ScamperIcmpMplsLabelStackIterator.__next__";
static const char __pyx_k_ScamperDealiasReply_is_icmp_unre_2[] = "ScamperDealiasReply.is_icmp_unreach_port";
static const char __pyx_k_ScamperPingReply_is_icmp_unreach_2[] = "ScamperPingReply.is_icmp_unreach_port";
static const char __pyx_k_cannot_specify_source_or_destina_2[] = "cannot specify source or destination port with ";
/* #### Code section: decls ### */
static int __pyx_pf_7scamper_11ScamperAddr___init__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self, PyObject *__pyx_v_addr); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_2__str__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_4__repr__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_6__format__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self, PyObject *__pyx_v_format_spec); /* proto */
static void __pyx_pf_7scamper_11ScamperAddr_8__dealloc__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_10__richcmp__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static Py_hash_t __pyx_pf_7scamper_11ScamperAddr_12__hash__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_6packed___get__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_14is_linklocal(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_16is_rfc1918(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_18is_unicast(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_20is_6to4(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_22is_reserved(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_24is_ipv4(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_26is_ipv6(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_28__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperAddr_30__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_11ScamperList___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperList *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_11ScamperList_2__dealloc__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperList_4__richcmp__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperList_2id___get__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperList_4name___get__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperList_5descr___get__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperList_7monitor___get__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperList_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperList *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperList_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperList *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_12ScamperCycle___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_12ScamperCycle_2__dealloc__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperCycle_4__richcmp__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperCycle_2id___get__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperCycle_5start___get__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperCycle_4stop___get__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperCycle_8hostname___get__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperCycle_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperCycle_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_ext, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_2__str__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_4label(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_6exp(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_8s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_10ttl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_34_ScamperIcmpMplsLabelStackIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_ext); /* proto */
static PyObject *__pyx_pf_7scamper_34_ScamperIcmpMplsLabelStackIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_34_ScamperIcmpMplsLabelStackIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_14ScamperIcmpExt___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_14ScamperIcmpExt_2__dealloc__(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_4__richcmp__(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_6is_mpls(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_10mpls_count___get__(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_8mpls_lses(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_10mpls_lse(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_12mpls_label(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_14mpls_ttl(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_16mpls_exp(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_18mpls_s(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_24_ScamperIcmpExtsIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_exts); /* proto */
static PyObject *__pyx_pf_7scamper_24_ScamperIcmpExtsIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_24_ScamperIcmpExtsIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_15ScamperIcmpExts___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_15ScamperIcmpExts_2__dealloc__(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_4__richcmp__(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_6ext_count(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_8ext(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_10exts(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_4mpls___get__(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_15ScamperTraceHop___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_15ScamperTraceHop_2__dealloc__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_4__str__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_3src___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_4name___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_2tx___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_3rtt___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_7attempt___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9probe_ttl___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10probe_size___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9reply_ttl___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9reply_tos___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9icmp_type___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9icmp_code___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10reply_size___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10reply_ipid___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_6is_tcp(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_8is_icmp(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10is_icmp_q(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_12is_icmp_unreach_port(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_14is_icmp_echo_reply(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_16is_icmp_ttl_exp(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_18is_icmp_ptb(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10icmp_nhmtu___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10icmp_q_ttl___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10icmp_q_tos___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10icmp_q_ipl___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9tcp_flags___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9icmp_exts___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_24_ScamperTraceHopIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_trace); /* proto */
static PyObject *__pyx_pf_7scamper_24_ScamperTraceHopIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_24_ScamperTraceHopIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_21ScamperTracePmtudNote___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_21ScamperTracePmtudNote_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_8type_str___get__(struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_5nhmtu___get__(struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_8distance___get__(struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_4hop(struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_17ScamperTracePmtud___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_17ScamperTracePmtud_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_8path_mtu___get__(struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_6if_mtu___get__(struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_7out_mtu___get__(struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_4notes(struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_7__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_9__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_12ScamperTrace___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_12ScamperTrace_2__dealloc__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_4__str__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_4inst___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_4list___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_5cycle___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_6userid___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_5start___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_6to_json(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_11stop_reason___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_15stop_reason_str___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_3src___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_3dst___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_3rtr___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_8hop(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_9hop_count___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_8stop_hop___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_10hops(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_12addrs(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self, PyObject *__pyx_v_reserved); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_8attempts___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_8hoplimit___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_8squeries___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_8gaplimit___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_9gapaction___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_8firsthop___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_3tos___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_12wait_timeout___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_10wait_probe___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_10confidence___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_10probe_size___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_7payload___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_11probe_sport___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_11probe_dport___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_14probe_icmp_sum___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_6offset___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_11probe_count___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_5pmtud___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_14is_udp(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_16is_tcp(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_18is_icmp(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_20is_stop_noreason(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_22is_stop_completed(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_24is_stop_unreach(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_26is_stop_icmp(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_28is_stop_loop(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_30is_stop_gaplimit(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_32is_stop_error(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_34is_stop_hoplimit(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_36is_stop_gss(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_38is_stop_halted(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_5_inst___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_12ScamperTrace_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_12ScamperTrace_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_40__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperTrace_42__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_16ScamperPingReply___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_16ScamperPingReply_2__dealloc__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_4__str__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_6is_from_target(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_3src___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_2tx___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_3rtt___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_2rx___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_7attempt___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_10probe_ipid___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_11reply_proto___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_9reply_ttl___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_10reply_size___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_10reply_ipid___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_8is_icmp(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_10is_tcp(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_12is_udp(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_14is_icmp_echo_reply(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_16is_icmp_unreach(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_18is_icmp_unreach_port(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_20is_icmp_ttl_exp(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_22is_icmp_tsreply(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_24is_icmp_ptb(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_9icmp_type___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_9icmp_code___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_10icmp_nhmtu___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_9tcp_flags___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_6ifname___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_26__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperPingReply_28__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_20_ScamperPingIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_ping); /* proto */
static PyObject *__pyx_pf_7scamper_20_ScamperPingIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20_ScamperPingIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperPing___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_11ScamperPing_2__dealloc__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_4__str__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_6__iter__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_4inst___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_4list___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_5cycle___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_3src___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_3dst___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_3rtr___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_6userid___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_5start___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_8to_json(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_8attempts___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_10probe_size___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_7payload___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_10is_icmp(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_12is_icmp_time(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_14is_tcp(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_16is_tcp_ack_sport(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_18is_udp(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_20is_vary_sport(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_22is_vary_dport(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_9probe_ttl___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_9probe_tos___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_12wait_timeout___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_10wait_probe___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_11probe_sport___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_11probe_dport___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_14probe_icmp_sum___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_13probe_tcp_seq___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_13probe_tcp_ack___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_10stop_count___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_10reply_pmtu___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_11probe_count___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_24reply(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_26replies(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_28_stats(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_8nreplies___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_5ndups___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_5nloss___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_5nerrs___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_7min_rtt___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_7max_rtt___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_7avg_rtt___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_10stddev_rtt___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_5_inst___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperPing_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_11ScamperPing_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_30__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperPing_32__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_27_ScamperTracelbNodeIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_trace); /* proto */
static PyObject *__pyx_pf_7scamper_27_ScamperTracelbNodeIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_27_ScamperTracelbNodeIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_27_ScamperTracelbLinkIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x); /* proto */
static PyObject *__pyx_pf_7scamper_27_ScamperTracelbLinkIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_27_ScamperTracelbLinkIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_19ScamperTracelbReply___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_19ScamperTracelbReply_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_3src___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_2rx___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_4ipid___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_3ttl___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_9icmp_type___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_9icmp_code___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_10icmp_q_ttl___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_10icmp_q_tos___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_9tcp_flags___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_9icmp_exts___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_19ScamperTracelbProbe___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_19ScamperTracelbProbe_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_4__str__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_2tx___get__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_6flowid___get__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_3ttl___get__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_7attempt___get__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_11reply_count___get__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_6reply(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_22ScamperTracelbProbeset___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_22ScamperTracelbProbeset_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_7scamper_22ScamperTracelbProbeset_4__len__(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_6__iter__(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_8__next__(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_11probe_count___get__(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_10probe(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_18ScamperTracelbNode___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_18ScamperTracelbNode_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_3src___get__(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_4name___get__(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_10icmp_q_ttl___get__(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_10link_count___get__(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_4link(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_6links(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_18ScamperTracelbLink___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_18ScamperTracelbLink_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_4__str__(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_6near(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_8far(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_10length(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_12probeset(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_14ScamperTracelb___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_14ScamperTracelb_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_4__str__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_4list___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_5cycle___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_4inst___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_6method___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_6userid___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_5start___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_6to_json(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_3src___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_3dst___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_3rtr___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_8node(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10node_count___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10nodes(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_12link(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10link_count___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_14links(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_8attempts___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_8gaplimit___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_8firsthop___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_3tos___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_12wait_timeout___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10wait_probe___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10confidence___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_11probe_count___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10probe_size___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_11probe_sport___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_11probe_dport___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_13probe_icmp_id___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_16is_udp(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_18is_tcp(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_20is_icmp(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_5_inst___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_14ScamperTracelb_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_14ScamperTracelb_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_22__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTracelb_24__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_19ScamperDealiasReply___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_19ScamperDealiasReply_2__dealloc__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_4is_from_target(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_3src___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_2rx___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_3ttl___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_4size___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_9tcp_flags___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_9icmp_type___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_9icmp_code___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_10icmp_q_ttl___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_4ipid___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_6is_tcp(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_8is_icmp(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_10is_icmp_ttl_exp(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_12is_icmp_unreach(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_14is_icmp_unreach_port(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_16__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_18__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_28ScamperDealiasMidardiscRound___init__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_begin, PyObject *__pyx_v_end); /* proto */
static void __pyx_pf_7scamper_28ScamperDealiasMidardiscRound_2__dealloc__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_4__str__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_5start___get__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_5begin___get__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_3end___get__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_22ScamperDealiasProbedef___init__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_src, PyObject *__pyx_v_dst, PyObject *__pyx_v_ttl, PyObject *__pyx_v_size, PyObject *__pyx_v_sport, PyObject *__pyx_v_dport, PyObject *__pyx_v_icmp_id, PyObject *__pyx_v_icmp_sum); /* proto */
static void __pyx_pf_7scamper_22ScamperDealiasProbedef_2__dealloc__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_4__str__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_6__repr__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_3dst___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_3src___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_3ttl___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_4size___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_5sport___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_5dport___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_7icmp_id___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_8icmp_sum___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_8is_udp(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_10is_icmp(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_12is_tcp(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_28_ScamperDealiasReplyIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_probe); /* proto */
static PyObject *__pyx_pf_7scamper_28_ScamperDealiasReplyIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_28_ScamperDealiasReplyIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_19ScamperDealiasProbe___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_19ScamperDealiasProbe_2__dealloc__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_8probedef___get__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_3seq___get__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_2tx___get__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_4reply(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_11reply_count___get__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_6replies(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_4ipid___get__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_28_ScamperDealiasProbeIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dealias); /* proto */
static PyObject *__pyx_pf_7scamper_28_ScamperDealiasProbeIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_28_ScamperDealiasProbeIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_31_ScamperDealiasProbedefIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dealias); /* proto */
static PyObject *__pyx_pf_7scamper_31_ScamperDealiasProbedefIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_31_ScamperDealiasProbedefIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_14ScamperDealias___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_14ScamperDealias_2__dealloc__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_4inst___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_4list___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_5cycle___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_6userid___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_5start___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_4to_json(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_6is_ally(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_8is_mercator(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_10is_prefixscan(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_12is_radargun(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_14is_bump(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_16is_midarest(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_18is_midardisc(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_20has_aliases(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_22aliases(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_24probedef(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_14probedef_count___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_26probedefs(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_28probe(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_11probe_count___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_30probes(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_7startat___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_10wait_probe___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_10wait_round___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_12wait_timeout___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_5_inst___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_14ScamperDealias_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_14ScamperDealias_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_32__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperDealias_34__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_20ScamperNeighbourdisc___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_20ScamperNeighbourdisc_2__dealloc__(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperNeighbourdisc_4inst___get__(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperNeighbourdisc_4to_json(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperNeighbourdisc_5_inst___get__(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_20ScamperNeighbourdisc_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_20ScamperNeighbourdisc_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperNeighbourdisc_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperNeighbourdisc_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_14ScamperTbitPkt___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_14ScamperTbitPkt_2__dealloc__(struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_9timestamp___get__(struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_4is_tx(struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_6is_rx(struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_4data___get__(struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_11ScamperTbit___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_11ScamperTbit_2__dealloc__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_7scamper_11ScamperTbit_4__len__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_6__iter__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_8__next__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_4inst___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_4list___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_5cycle___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_3src___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_3dst___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_6userid___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_5start___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_10to_json(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_6result___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_9pkt_count___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_10client_mss___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_13client_wscale___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_12client_ipttl___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_5_inst___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperTbit_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_11ScamperTbit_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTbit_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_12ScamperSting___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_12ScamperSting_2__dealloc__(struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSting_4inst___get__(struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSting_5_inst___get__(struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_12ScamperSting_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_12ScamperSting_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSting_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSting_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_15ScamperSniffPkt___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_15ScamperSniffPkt_2__dealloc__(struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperSniffPkt_2rx___get__(struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperSniffPkt_4data___get__(struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperSniffPkt_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperSniffPkt_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_12ScamperSniff___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_12ScamperSniff_2__dealloc__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_7scamper_12ScamperSniff_4__len__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_6__iter__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_8__next__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_4inst___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_4list___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_5cycle___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_11stop_reason___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_6userid___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_3src___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_5start___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_6finish___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_15limit_pkt_count___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_10limit_time___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_7icmp_id___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_9pkt_count___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_10pkt(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_5_inst___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_12ScamperSniff_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_12ScamperSniff_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_12ScamperSniff_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_13ScamperHostMX___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_13ScamperHostMX_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostMX_4pref___get__(struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostMX_4exch___get__(struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostMX_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostMX_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_14ScamperHostSOA___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_14ScamperHostSOA_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_5mname___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_5rname___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_6serial___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_7refresh___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_5retry___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_6expire___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_7minimum___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_14ScamperHostTXT___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_14ScamperHostTXT_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_4__iter__(struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_6__next__(struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_4strc___get__(struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_8str(struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_18ScamperHostOPTElem___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_18ScamperHostOPTElem_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_7scamper_18ScamperHostOPTElem_4__len__(struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperHostOPTElem_8code_num___get__(struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperHostOPTElem_4code___get__(struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperHostOPTElem_4data___get__(struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperHostOPTElem_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_18ScamperHostOPTElem_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_14ScamperHostOPT___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_14ScamperHostOPT_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_4__iter__(struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_6__next__(struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_5elemc___get__(struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_8elem(struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_20ScamperHostSVCBParam___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_20ScamperHostSVCBParam_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self); /* proto */
static Py_ssize_t __pyx_pf_7scamper_20ScamperHostSVCBParam_4__len__(struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperHostSVCBParam_7key_num___get__(struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperHostSVCBParam_3key___get__(struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperHostSVCBParam_3val___get__(struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperHostSVCBParam_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperHostSVCBParam_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_15ScamperHostSVCB___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_15ScamperHostSVCB_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_4__iter__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_6__next__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_6target___get__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_8priority___get__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_6paramc___get__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_8param(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_13ScamperHostRR___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_13ScamperHostRR_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_4__str__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_6rclass___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_5rtype___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_3ttl___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_4name___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_4addr___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_2ns___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_5cname___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_3ptr___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_2mx___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_3soa___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_3txt___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_3opt___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_4svcb___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_7udpsize___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_12edns_version___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_7edns_do___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_13ScamperHostRR_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_22_ScamperHostRRIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_query, PyObject *__pyx_v_section, PyObject *__pyx_v_rrtypes); /* proto */
static PyObject *__pyx_pf_7scamper_22_ScamperHostRRIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_22_ScamperHostRRIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_16ScamperHostQuery___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_16ScamperHostQuery_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_2tx___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_2rx___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_3rtt___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_9rcode_num___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_5rcode___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_18extended_rcode_num___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_14extended_rcode___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_5flags___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_2id___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_7ancount___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_4an(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_7nscount___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_6ns(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_7arcount___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_8ar(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_7udpsize___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_12edns_version___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_7edns_do___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_11ScamperHost___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_11ScamperHost_2__dealloc__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_4inst___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_4list___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_5cycle___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_3src___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_3dst___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_6userid___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_5start___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_4to_json(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_9qtype_num___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_5qtype___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_6qclass___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_5qname___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_3ecs___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_9rcode_num___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_5rcode___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_18extended_rcode_num___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_14extended_rcode___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_2tx___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_2rx___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_3rtt___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_7ancount___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_6an(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_8ans(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_rrtypes); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_7nscount___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_10ns(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_12nss(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_rrtypes); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_7arcount___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_14ar(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_16ars(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_rrtypes); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_18ans_addrs(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_20ans_nses(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_22ans_ptrs(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_24ans_txts(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_26ans_mxes(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_7udpsize___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_12edns_version___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_7edns_do___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_5_inst___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperHost_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_11ScamperHost_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_28__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHost_30__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_14ScamperHttpBuf___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_14ScamperHttpBuf_2__dealloc__(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_9timestamp___get__(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_7dir_str___get__(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_8type_str___get__(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_4is_tx(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_6is_rx(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_8is_tls(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_10is_hdr(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_12is_data(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_7payload___get__(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_20_ScamperHttpIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_http); /* proto */
static PyObject *__pyx_pf_7scamper_20_ScamperHttpIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20_ScamperHttpIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperHttp___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_11ScamperHttp_2__dealloc__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_4__iter__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_4inst___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_4list___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_5cycle___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_6userid___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_5start___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_3src___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_3dst___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_5sport___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_5dport___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_3url___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_11status_code___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_8response___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_12response_hdr___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_12transmit_hdr___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_13response_hdrs___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_13transmit_hdrs___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_6response_hdr_byname(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_8transmit_hdr_byname(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_9buf_count___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_10buf(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_12bufs(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_5_inst___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperHttp_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_11ScamperHttp_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperHttp_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_29_ScamperUdpprobeReplyIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_up); /* proto */
static PyObject *__pyx_pf_7scamper_29_ScamperUdpprobeReplyIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_29_ScamperUdpprobeReplyIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_20ScamperUdpprobeReply___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_20ScamperUdpprobeReply_2__dealloc__(struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeReply_2rx___get__(struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeReply_7payload___get__(struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeReply_6ifname___get__(struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeReply_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeReply_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_20ScamperUdpprobeProbe___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_20ScamperUdpprobeProbe_2__dealloc__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_4__iter__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_6__next__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_2tx___get__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_5sport___get__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_11reply_count___get__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_8reply(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_15ScamperUdpprobe___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_15ScamperUdpprobe_2__dealloc__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_4__iter__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_6__next__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_4inst___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_4list___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_5cycle___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_6userid___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_5start___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_8to_json(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_3src___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_3dst___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_5sport___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_5dport___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_12wait_timeout___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_7payload___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_10probe_sent___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_10probe(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self, PyObject *__pyx_v_i); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_12replies(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_5_inst___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_15ScamperUdpprobe_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_15ScamperUdpprobe_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_11ScamperFile___init__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_mode, PyObject *__pyx_v_kind, PyObject *__pyx_v_filter_types); /* proto */
static void __pyx_pf_7scamper_11ScamperFile_2__dealloc__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_4__iter__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_6__next__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_8__enter__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_10__exit__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v_exc_val, CYTHON_UNUSED PyObject *__pyx_v_exc_tb); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_8filetype___get__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_12close(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_8filename___get__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_14filter_types(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self, PyObject *__pyx_v_types); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_16read(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_18write(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self, PyObject *__pyx_v_obj); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_20is_write(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_22is_read(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_24__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperFile_26__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_pf_7scamper_16ScamperInstError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message, PyObject *__pyx_v_inst); /* proto */
static PyObject *__pyx_pf_7scamper_16_ScamperInstData___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_inst, PyObject *__pyx_v_data); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl___init__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_meta, PyObject *__pyx_v_morecb, PyObject *__pyx_v_eofcb, PyObject *__pyx_v_param, PyObject *__pyx_v_unix, PyObject *__pyx_v_remote, PyObject *__pyx_v_remote_dir, PyObject *__pyx_v_mux, PyObject *__pyx_v_outfile); /* proto */
static void __pyx_pf_7scamper_11ScamperCtrl_2__dealloc__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_4__enter__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_6__exit__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v_exc_val, CYTHON_UNUSED PyObject *__pyx_v_exc_tb); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_8add_unix(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_path); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_10add_inet(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_port, PyObject *__pyx_v_addr); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_12add_remote(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_path); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_14add_remote_dir(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_path); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_16add_mux(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_path); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_18_add_vp(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_vp); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_20add_vps(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_vps); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_22exceptions(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_25responses(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_timeout, PyObject *__pyx_v_until); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_28poll(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_timeout, PyObject *__pyx_v_until); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_30done(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_32vps(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_34instances(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_5param___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_5param_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_param); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_6morecb___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_6morecb_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_morecb); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_5eofcb___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_5eofcb_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_eofcb); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_7outfile___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_7outfile_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_outfile); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_5taskc___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_5instc___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_36_getinst(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_inst, CYTHON_UNUSED PyObject *__pyx_v_primitive, PyObject *__pyx_v_sync, PyObject *__pyx_v_listallowed); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_38_dotasks(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_cmd, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_8do_trace_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_40do_trace(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_confidence, PyObject *__pyx_v_dport, PyObject *__pyx_v_icmp_sum, PyObject *__pyx_v_firsthop, PyObject *__pyx_v_gaplimit, PyObject *__pyx_v_loops, PyObject *__pyx_v_hoplimit, PyObject *__pyx_v_pmtud, PyObject *__pyx_v_squeries, PyObject *__pyx_v_ptr, PyObject *__pyx_v_payload, PyObject *__pyx_v_method, PyObject *__pyx_v_attempts, PyObject *__pyx_v_all_attempts, PyObject *__pyx_v_rtr, PyObject *__pyx_v_sport, PyObject *__pyx_v_src, PyObject *__pyx_v_tos, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_10do_tracelb_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_42do_tracelb(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_confidence, PyObject *__pyx_v_dport, PyObject *__pyx_v_firsthop, PyObject *__pyx_v_gaplimit, PyObject *__pyx_v_method, PyObject *__pyx_v_attempts, PyObject *__pyx_v_ptr, PyObject *__pyx_v_rtr, PyObject *__pyx_v_sport, PyObject *__pyx_v_tos, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_7do_ping_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_7do_ping_3genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_44do_ping(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_tcp_ack, PyObject *__pyx_v_tcp_seq, PyObject *__pyx_v_attempts, PyObject *__pyx_v_icmp_id, PyObject *__pyx_v_icmp_seq, PyObject *__pyx_v_icmp_sum, PyObject *__pyx_v_dport, PyObject *__pyx_v_sport, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_ttl, PyObject *__pyx_v_mtu, PyObject *__pyx_v_stop_count, PyObject *__pyx_v_method, PyObject *__pyx_v_payload, PyObject *__pyx_v_rtr, PyObject *__pyx_v_recordroute, PyObject *__pyx_v_dltx, PyObject *__pyx_v_size, PyObject *__pyx_v_src, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_tos, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_46do_dns(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_qname, PyObject *__pyx_v_server, PyObject *__pyx_v_qclass, PyObject *__pyx_v_qtype, PyObject *__pyx_v_attempts, PyObject *__pyx_v_rd, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_tcp, PyObject *__pyx_v_nsid, PyObject *__pyx_v_ecs, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_7do_ally_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_48do_ally(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst1, PyObject *__pyx_v_dst2, PyObject *__pyx_v_fudge, PyObject *__pyx_v_icmp_sum, PyObject *__pyx_v_dport, PyObject *__pyx_v_sport, PyObject *__pyx_v_method, CYTHON_UNUSED PyObject *__pyx_v_attempts, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_50do_mercator(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_52do_midarest(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_rounds, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_wait_round, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_probedefs, PyObject *__pyx_v_addrs, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_54do_midardisc(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_probedefs, PyObject *__pyx_v_schedule, PyObject *__pyx_v_startat, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_56do_radargun(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_addrs, PyObject *__pyx_v_rounds, PyObject *__pyx_v_probedefs, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_wait_round, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_13do_prefixscan_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_58do_prefixscan(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_near, PyObject *__pyx_v_far, PyObject *__pyx_v_prefixlen, PyObject *__pyx_v_fudge, PyObject *__pyx_v_icmp_sum, PyObject *__pyx_v_dport, PyObject *__pyx_v_sport, PyObject *__pyx_v_method, CYTHON_UNUSED PyObject *__pyx_v_attempts, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_60do_sniff(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_src, PyObject *__pyx_v_icmp_id, PyObject *__pyx_v_limit_pkt_count, PyObject *__pyx_v_limit_time, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_62do_http(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_url, PyObject *__pyx_v_headers, PyObject *__pyx_v_insecure, PyObject *__pyx_v_limit_time, CYTHON_UNUSED PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_64do_udpprobe(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_dport, PyObject *__pyx_v_payload, PyObject *__pyx_v_attempts, PyObject *__pyx_v_src, PyObject *__pyx_v_stop_count, PyObject *__pyx_v_inst, PyObject *__pyx_v_userid, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_66do_tbit(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_method, PyObject *__pyx_v_url, PyObject *__pyx_v_inst, PyObject *__pyx_v_userid, PyObject *__pyx_v_sync); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_68is_done(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_7_morecb___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_7_morecb_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_7_morecb_4__del__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_6_eofcb___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_6_eofcb_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_6_eofcb_4__del__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_9_syncdata___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_9_syncdata_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_9_syncdata_4__del__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_8_outfile___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_8_outfile_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_8_outfile_4__del__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_6_param___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_6_param_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_7scamper_11ScamperCtrl_6_param_4__del__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_70__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperCtrl_72__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_10ScamperMux___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperMux *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_10ScamperMux_2vps(struct __pyx_obj_7scamper_ScamperMux *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_10ScamperMux_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperMux *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_10ScamperMux_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperMux *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_9ScamperVp___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_9ScamperVp_2__dealloc__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_4__str__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_4name___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_9shortname___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_4tags___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_4asn4___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_4ipv4___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_3loc___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_2cc___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_2st___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_5place___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_9ScamperVp_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_11ScamperInst___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_11ScamperInst_2__dealloc__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_4__richcmp__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static Py_hash_t __pyx_pf_7scamper_11ScamperInst_6__hash__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_8__str__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_4name___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_2cc___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_2st___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_5place___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_9shortname___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_4ipv4___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_4asn4___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_3loc___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_5taskc___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_7resultc___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_10done(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_12is_eof(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_4_eof___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperInst_4_eof_2__set__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_7_queued___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static int __pyx_pf_7scamper_11ScamperInst_7_queued_2__set__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperInst_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static int __pyx_pf_7scamper_11ScamperTask___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self); /* proto */
static void __pyx_pf_7scamper_11ScamperTask_2__dealloc__(struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTask_4__richcmp__(struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /* proto */
static Py_hash_t __pyx_pf_7scamper_11ScamperTask_6__hash__(struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTask_8halt(struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTask_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_7scamper_11ScamperTask_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state); /* proto */
static PyObject *__pyx_tp_new_7scamper_ScamperAddr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperList(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperCycle(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperIcmpExt(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperIcmpExts(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTraceHop(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTracePmtudNote(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTracePmtud(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTrace(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperPingReply(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperPing(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTracelbReply(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTracelbProbe(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTracelbProbeset(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTracelbNode(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTracelbLink(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTracelb(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperDealiasReply(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperDealiasMidardiscRound(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperDealiasProbedef(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperDealiasProbe(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperDealias(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperNeighbourdisc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTbitPkt(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTbit(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperSting(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperSniffPkt(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperSniff(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHostMX(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHostSOA(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHostTXT(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHostOPTElem(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHostOPT(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHostSVCBParam(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHostSVCB(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHostRR(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHostQuery(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHost(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHttpBuf(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperHttp(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperUdpprobeReply(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperUdpprobeProbe(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperUdpprobe(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperFile(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperCtrl(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperMux(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperVp(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperInst(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper_ScamperTask(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct__notes(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_1_exceptions(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_2_responses(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_3_do_trace(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_4_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_5_do_tracelb(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_6_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_7_do_ping(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_8_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_9_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_10_do_ally(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_11_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_12_do_prefixscan(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_13_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
/* #### Code section: late_includes ### */
/* #### Code section: module_state ### */
/* SmallCodeConfig */
#ifndef CYTHON_SMALL_CODE
#if defined(__clang__)
    #define CYTHON_SMALL_CODE
#elif defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3))
    #define CYTHON_SMALL_CODE __attribute__((cold))
#else
    #define CYTHON_SMALL_CODE
#endif
#endif

typedef struct {
  PyObject *__pyx_d;
  PyObject *__pyx_b;
  PyObject *__pyx_cython_runtime;
  PyObject *__pyx_empty_tuple;
  PyObject *__pyx_empty_bytes;
  PyObject *__pyx_empty_unicode;
  #ifdef __Pyx_CyFunction_USED
  PyTypeObject *__pyx_CyFunctionType;
  #endif
  #ifdef __Pyx_FusedFunction_USED
  PyTypeObject *__pyx_FusedFunctionType;
  #endif
  #ifdef __Pyx_Generator_USED
  PyTypeObject *__pyx_GeneratorType;
  #endif
  #ifdef __Pyx_IterableCoroutine_USED
  PyTypeObject *__pyx_IterableCoroutineType;
  #endif
  #ifdef __Pyx_Coroutine_USED
  PyTypeObject *__pyx_CoroutineAwaitType;
  #endif
  #ifdef __Pyx_Coroutine_USED
  PyTypeObject *__pyx_CoroutineType;
  #endif
  PyTypeObject *__pyx_ptype_7cpython_4type_type;
  PyObject *__pyx_type_7scamper_ScamperAddr;
  PyObject *__pyx_type_7scamper_ScamperList;
  PyObject *__pyx_type_7scamper_ScamperCycle;
  PyObject *__pyx_type_7scamper_ScamperIcmpExt;
  PyObject *__pyx_type_7scamper_ScamperIcmpExts;
  PyObject *__pyx_type_7scamper_ScamperTraceHop;
  PyObject *__pyx_type_7scamper_ScamperTracePmtudNote;
  PyObject *__pyx_type_7scamper_ScamperTracePmtud;
  PyObject *__pyx_type_7scamper_ScamperTrace;
  PyObject *__pyx_type_7scamper_ScamperPingReply;
  PyObject *__pyx_type_7scamper_ScamperPing;
  PyObject *__pyx_type_7scamper_ScamperTracelbReply;
  PyObject *__pyx_type_7scamper_ScamperTracelbProbe;
  PyObject *__pyx_type_7scamper_ScamperTracelbProbeset;
  PyObject *__pyx_type_7scamper_ScamperTracelbNode;
  PyObject *__pyx_type_7scamper_ScamperTracelbLink;
  PyObject *__pyx_type_7scamper_ScamperTracelb;
  PyObject *__pyx_type_7scamper_ScamperDealiasReply;
  PyObject *__pyx_type_7scamper_ScamperDealiasMidardiscRound;
  PyObject *__pyx_type_7scamper_ScamperDealiasProbedef;
  PyObject *__pyx_type_7scamper_ScamperDealiasProbe;
  PyObject *__pyx_type_7scamper_ScamperDealias;
  PyObject *__pyx_type_7scamper_ScamperNeighbourdisc;
  PyObject *__pyx_type_7scamper_ScamperTbitPkt;
  PyObject *__pyx_type_7scamper_ScamperTbit;
  PyObject *__pyx_type_7scamper_ScamperSting;
  PyObject *__pyx_type_7scamper_ScamperSniffPkt;
  PyObject *__pyx_type_7scamper_ScamperSniff;
  PyObject *__pyx_type_7scamper_ScamperHostMX;
  PyObject *__pyx_type_7scamper_ScamperHostSOA;
  PyObject *__pyx_type_7scamper_ScamperHostTXT;
  PyObject *__pyx_type_7scamper_ScamperHostOPTElem;
  PyObject *__pyx_type_7scamper_ScamperHostOPT;
  PyObject *__pyx_type_7scamper_ScamperHostSVCBParam;
  PyObject *__pyx_type_7scamper_ScamperHostSVCB;
  PyObject *__pyx_type_7scamper_ScamperHostRR;
  PyObject *__pyx_type_7scamper_ScamperHostQuery;
  PyObject *__pyx_type_7scamper_ScamperHost;
  PyObject *__pyx_type_7scamper_ScamperHttpBuf;
  PyObject *__pyx_type_7scamper_ScamperHttp;
  PyObject *__pyx_type_7scamper_ScamperUdpprobeReply;
  PyObject *__pyx_type_7scamper_ScamperUdpprobeProbe;
  PyObject *__pyx_type_7scamper_ScamperUdpprobe;
  PyObject *__pyx_type_7scamper_ScamperFile;
  PyObject *__pyx_type_7scamper_ScamperCtrl;
  PyObject *__pyx_type_7scamper_ScamperMux;
  PyObject *__pyx_type_7scamper_ScamperVp;
  PyObject *__pyx_type_7scamper_ScamperInst;
  PyObject *__pyx_type_7scamper_ScamperTask;
  PyObject *__pyx_type_7scamper___pyx_scope_struct__notes;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_1_exceptions;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_2_responses;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_3_do_trace;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_4_genexpr;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_5_do_tracelb;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_6_genexpr;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_7_do_ping;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_8_genexpr;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_9_genexpr;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_10_do_ally;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_11_genexpr;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_12_do_prefixscan;
  PyObject *__pyx_type_7scamper___pyx_scope_struct_13_genexpr;
  PyTypeObject *__pyx_ptype_7scamper_ScamperAddr;
  PyTypeObject *__pyx_ptype_7scamper_ScamperList;
  PyTypeObject *__pyx_ptype_7scamper_ScamperCycle;
  PyTypeObject *__pyx_ptype_7scamper_ScamperIcmpExt;
  PyTypeObject *__pyx_ptype_7scamper_ScamperIcmpExts;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTraceHop;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTracePmtudNote;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTracePmtud;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTrace;
  PyTypeObject *__pyx_ptype_7scamper_ScamperPingReply;
  PyTypeObject *__pyx_ptype_7scamper_ScamperPing;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTracelbReply;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTracelbProbe;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTracelbProbeset;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTracelbNode;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTracelbLink;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTracelb;
  PyTypeObject *__pyx_ptype_7scamper_ScamperDealiasReply;
  PyTypeObject *__pyx_ptype_7scamper_ScamperDealiasMidardiscRound;
  PyTypeObject *__pyx_ptype_7scamper_ScamperDealiasProbedef;
  PyTypeObject *__pyx_ptype_7scamper_ScamperDealiasProbe;
  PyTypeObject *__pyx_ptype_7scamper_ScamperDealias;
  PyTypeObject *__pyx_ptype_7scamper_ScamperNeighbourdisc;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTbitPkt;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTbit;
  PyTypeObject *__pyx_ptype_7scamper_ScamperSting;
  PyTypeObject *__pyx_ptype_7scamper_ScamperSniffPkt;
  PyTypeObject *__pyx_ptype_7scamper_ScamperSniff;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHostMX;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHostSOA;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHostTXT;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHostOPTElem;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHostOPT;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHostSVCBParam;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHostSVCB;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHostRR;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHostQuery;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHost;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHttpBuf;
  PyTypeObject *__pyx_ptype_7scamper_ScamperHttp;
  PyTypeObject *__pyx_ptype_7scamper_ScamperUdpprobeReply;
  PyTypeObject *__pyx_ptype_7scamper_ScamperUdpprobeProbe;
  PyTypeObject *__pyx_ptype_7scamper_ScamperUdpprobe;
  PyTypeObject *__pyx_ptype_7scamper_ScamperFile;
  PyTypeObject *__pyx_ptype_7scamper_ScamperCtrl;
  PyTypeObject *__pyx_ptype_7scamper_ScamperMux;
  PyTypeObject *__pyx_ptype_7scamper_ScamperVp;
  PyTypeObject *__pyx_ptype_7scamper_ScamperInst;
  PyTypeObject *__pyx_ptype_7scamper_ScamperTask;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct__notes;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_2_responses;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan;
  PyTypeObject *__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_keys;
  __Pyx_CachedCFunction __pyx_umethod_PyDict_Type_pop;
  PyObject *__pyx_tuple[17];
  PyObject *__pyx_codeobj_tab[334];
  PyObject *__pyx_string_tab[1165];
  PyObject *__pyx_int_0;
  PyObject *__pyx_int_1;
  PyObject *__pyx_int_2;
  PyObject *__pyx_int_3;
  PyObject *__pyx_int_4;
  PyObject *__pyx_int_5;
  PyObject *__pyx_int_6;
  PyObject *__pyx_int_7;
  PyObject *__pyx_int_8;
  PyObject *__pyx_int_9;
  PyObject *__pyx_int_10;
  PyObject *__pyx_int_11;
  PyObject *__pyx_int_12;
  PyObject *__pyx_int_13;
  PyObject *__pyx_int_14;
  PyObject *__pyx_int_15;
  PyObject *__pyx_int_16;
  PyObject *__pyx_int_20;
  PyObject *__pyx_int_28;
  PyObject *__pyx_int_43;
  PyObject *__pyx_int_44;
  PyObject *__pyx_int_46;
  PyObject *__pyx_int_47;
  PyObject *__pyx_int_48;
  PyObject *__pyx_int_128;
  PyObject *__pyx_int_255;
  PyObject *__pyx_int_1000;
  PyObject *__pyx_int_65535;
  PyObject *__pyx_int_999999;
/* #### Code section: module_state_contents ### */

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct__notes *__pyx_freelist_7scamper___pyx_scope_struct__notes[8];
int __pyx_freecount_7scamper___pyx_scope_struct__notes;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *__pyx_freelist_7scamper___pyx_scope_struct_1_exceptions[8];
int __pyx_freecount_7scamper___pyx_scope_struct_1_exceptions;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *__pyx_freelist_7scamper___pyx_scope_struct_2_responses[8];
int __pyx_freecount_7scamper___pyx_scope_struct_2_responses;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *__pyx_freelist_7scamper___pyx_scope_struct_3_do_trace[8];
int __pyx_freecount_7scamper___pyx_scope_struct_3_do_trace;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *__pyx_freelist_7scamper___pyx_scope_struct_4_genexpr[8];
int __pyx_freecount_7scamper___pyx_scope_struct_4_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *__pyx_freelist_7scamper___pyx_scope_struct_5_do_tracelb[8];
int __pyx_freecount_7scamper___pyx_scope_struct_5_do_tracelb;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *__pyx_freelist_7scamper___pyx_scope_struct_6_genexpr[8];
int __pyx_freecount_7scamper___pyx_scope_struct_6_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *__pyx_freelist_7scamper___pyx_scope_struct_7_do_ping[8];
int __pyx_freecount_7scamper___pyx_scope_struct_7_do_ping;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *__pyx_freelist_7scamper___pyx_scope_struct_8_genexpr[8];
int __pyx_freecount_7scamper___pyx_scope_struct_8_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *__pyx_freelist_7scamper___pyx_scope_struct_9_genexpr[8];
int __pyx_freecount_7scamper___pyx_scope_struct_9_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *__pyx_freelist_7scamper___pyx_scope_struct_10_do_ally[8];
int __pyx_freecount_7scamper___pyx_scope_struct_10_do_ally;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *__pyx_freelist_7scamper___pyx_scope_struct_11_genexpr[8];
int __pyx_freecount_7scamper___pyx_scope_struct_11_genexpr;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *__pyx_freelist_7scamper___pyx_scope_struct_12_do_prefixscan[8];
int __pyx_freecount_7scamper___pyx_scope_struct_12_do_prefixscan;
#endif

#if CYTHON_USE_FREELISTS
struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *__pyx_freelist_7scamper___pyx_scope_struct_13_genexpr[8];
int __pyx_freecount_7scamper___pyx_scope_struct_13_genexpr;
#endif
/* CommonTypesMetaclass.module_state_decls */
PyTypeObject *__pyx_CommonTypesMetaclassType;

/* CachedMethodType.module_state_decls */
#if CYTHON_COMPILING_IN_LIMITED_API
PyObject *__Pyx_CachedMethodType;
#endif

/* CodeObjectCache.module_state_decls */
struct __Pyx_CodeObjectCache __pyx_code_cache;

/* IterNextPlain.module_state_decls */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
PyObject *__Pyx_GetBuiltinNext_LimitedAPI_cache;
#endif

/* #### Code section: module_state_end ### */
} __pyx_mstatetype;

#if CYTHON_USE_MODULE_STATE
#ifdef __cplusplus
namespace {
extern struct PyModuleDef __pyx_moduledef;
} /* anonymous namespace */
#else
static struct PyModuleDef __pyx_moduledef;
#endif

#define __pyx_mstate_global (__Pyx_PyModule_GetState(__Pyx_State_FindModule(&__pyx_moduledef)))

#define __pyx_m (__Pyx_State_FindModule(&__pyx_moduledef))
#else
static __pyx_mstatetype __pyx_mstate_global_static =
#ifdef __cplusplus
    {};
#else
    {0};
#endif
static __pyx_mstatetype * const __pyx_mstate_global = &__pyx_mstate_global_static;
#endif
/* #### Code section: constant_name_defines ### */
#define __pyx_kp_u_ __pyx_string_tab[0]
#define __pyx_kp_u_03d __pyx_string_tab[1]
#define __pyx_kp_u_06 __pyx_string_tab[2]
#define __pyx_kp_u_06d __pyx_string_tab[3]
#define __pyx_kp_u_A __pyx_string_tab[4]
#define __pyx_n_u_AAAA __pyx_string_tab[5]
#define __pyx_n_u_A_2 __pyx_string_tab[6]
#define __pyx_kp_u_A_class_ScamperIcmpMplsLabelSta __pyx_string_tab[7]
#define __pyx_kp_u_B __pyx_string_tab[8]
#define __pyx_kp_u_C __pyx_string_tab[9]
#define __pyx_n_u_CNAME __pyx_string_tab[10]
#define __pyx_n_u_Completed __pyx_string_tab[11]
#define __pyx_n_u_DNSKEY __pyx_string_tab[12]
#define __pyx_n_u_DS __pyx_string_tab[13]
#define __pyx_n_u_Error __pyx_string_tab[14]
#define __pyx_kp_u_Exp __pyx_string_tab[15]
#define __pyx_kp_u_F __pyx_string_tab[16]
#define __pyx_kp_u_F_2 __pyx_string_tab[17]
#define __pyx_kp_u_G __pyx_string_tab[18]
#define __pyx_n_u_GSS __pyx_string_tab[19]
#define __pyx_n_u_GapLimit __pyx_string_tab[20]
#define __pyx_n_u_Gaplimit __pyx_string_tab[21]
#define __pyx_kp_u_H __pyx_string_tab[22]
#define __pyx_n_u_Halted __pyx_string_tab[23]
#define __pyx_n_u_HopLimit __pyx_string_tab[24]
#define __pyx_n_u_ICMP __pyx_string_tab[25]
#define __pyx_n_u_Icmp __pyx_string_tab[26]
#define __pyx_n_u_IcmpEcho __pyx_string_tab[27]
#define __pyx_n_u_IntEnum __pyx_string_tab[28]
#define __pyx_n_u_LimitPktC __pyx_string_tab[29]
#define __pyx_n_u_LimitTime __pyx_string_tab[30]
#define __pyx_n_u_Loop __pyx_string_tab[31]
#define __pyx_kp_u_M __pyx_string_tab[32]
#define __pyx_kp_u_MPLS_Label __pyx_string_tab[33]
#define __pyx_n_u_MX __pyx_string_tab[34]
#define __pyx_kp_u_M_2 __pyx_string_tab[35]
#define __pyx_n_u_MemoryError __pyx_string_tab[36]
#define __pyx_kp_u_N __pyx_string_tab[37]
#define __pyx_n_u_NS __pyx_string_tab[38]
#define __pyx_n_u_NSEC __pyx_string_tab[39]
#define __pyx_n_u_NoReason __pyx_string_tab[40]
#define __pyx_kp_u_None __pyx_string_tab[41]
#define __pyx_n_u_NotImplemented __pyx_string_tab[42]
#define __pyx_kp_u_O_dltx __pyx_string_tab[43]
#define __pyx_kp_u_O_insecure __pyx_string_tab[44]
#define __pyx_kp_u_O_inseq __pyx_string_tab[45]
#define __pyx_kp_u_O_nsid __pyx_string_tab[46]
#define __pyx_kp_u_O_ptr __pyx_string_tab[47]
#define __pyx_kp_u_O_subnet __pyx_string_tab[48]
#define __pyx_kp_u_P __pyx_string_tab[49]
#define __pyx_n_u_PTR __pyx_string_tab[50]
#define __pyx_kp_u_Q __pyx_string_tab[51]
#define __pyx_kp_u_R __pyx_string_tab[52]
#define __pyx_n_u_RRSIG __pyx_string_tab[53]
#define __pyx_kp_u_R_2 __pyx_string_tab[54]
#define __pyx_n_u_RuntimeError __pyx_string_tab[55]
#define __pyx_kp_u_S __pyx_string_tab[56]
#define __pyx_n_u_SCAMPER_CTRL_TYPE_DATA __pyx_string_tab[57]
#define __pyx_n_u_SCAMPER_CTRL_TYPE_EOF __pyx_string_tab[58]
#define __pyx_n_u_SCAMPER_CTRL_TYPE_ERR __pyx_string_tab[59]
#define __pyx_n_u_SCAMPER_CTRL_TYPE_FATAL __pyx_string_tab[60]
#define __pyx_n_u_SCAMPER_CTRL_TYPE_MORE __pyx_string_tab[61]
#define __pyx_n_u_SCAMPER_FILE_OBJ_ADDR __pyx_string_tab[62]
#define __pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF __pyx_string_tab[63]
#define __pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_START __pyx_string_tab[64]
#define __pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_STOP __pyx_string_tab[65]
#define __pyx_n_u_SCAMPER_FILE_OBJ_DEALIAS __pyx_string_tab[66]
#define __pyx_n_u_SCAMPER_FILE_OBJ_HOST __pyx_string_tab[67]
#define __pyx_n_u_SCAMPER_FILE_OBJ_HTTP __pyx_string_tab[68]
#define __pyx_n_u_SCAMPER_FILE_OBJ_LIST __pyx_string_tab[69]
#define __pyx_n_u_SCAMPER_FILE_OBJ_NEIGHBOURDISC __pyx_string_tab[70]
#define __pyx_n_u_SCAMPER_FILE_OBJ_PING __pyx_string_tab[71]
#define __pyx_n_u_SCAMPER_FILE_OBJ_SNIFF __pyx_string_tab[72]
#define __pyx_n_u_SCAMPER_FILE_OBJ_STING __pyx_string_tab[73]
#define __pyx_n_u_SCAMPER_FILE_OBJ_TBIT __pyx_string_tab[74]
#define __pyx_n_u_SCAMPER_FILE_OBJ_TRACE __pyx_string_tab[75]
#define __pyx_n_u_SCAMPER_FILE_OBJ_TRACELB __pyx_string_tab[76]
#define __pyx_n_u_SCAMPER_FILE_OBJ_UDPPROBE __pyx_string_tab[77]
#define __pyx_n_u_SCAMPER_HOST_CLASS_IN __pyx_string_tab[78]
#define __pyx_n_u_SCAMPER_PING_REPLY_FLAG_PROBE_IP __pyx_string_tab[79]
#define __pyx_n_u_SCAMPER_PING_REPLY_FLAG_REPLY_IP __pyx_string_tab[80]
#define __pyx_n_u_SCAMPER_PING_REPLY_FLAG_REPLY_TT __pyx_string_tab[81]
#define __pyx_n_u_SCAMPER_TRACE_FLAG_RXERR __pyx_string_tab[82]
#define __pyx_n_u_SCAMPER_TRACE_REPLY_FLAG_REPLY_T __pyx_string_tab[83]
#define __pyx_n_u_SCAMPER_TRACE_TYPE_ICMP_ECHO_PAR __pyx_string_tab[84]
#define __pyx_n_u_SOA __pyx_string_tab[85]
#define __pyx_n_u_SSHFP __pyx_string_tab[86]
#define __pyx_kp_u_S_2 __pyx_string_tab[87]
#define __pyx_n_u_S_ISSOCK __pyx_string_tab[88]
#define __pyx_kp_u_ScamperAddr __pyx_string_tab[89]
#define __pyx_n_u_ScamperAddr_2 __pyx_string_tab[90]
#define __pyx_n_u_ScamperAddr___format __pyx_string_tab[91]
#define __pyx_n_u_ScamperAddr___reduce_cython __pyx_string_tab[92]
#define __pyx_n_u_ScamperAddr___setstate_cython __pyx_string_tab[93]
#define __pyx_n_u_ScamperAddr_is_6to4 __pyx_string_tab[94]
#define __pyx_n_u_ScamperAddr_is_ipv4 __pyx_string_tab[95]
#define __pyx_n_u_ScamperAddr_is_ipv6 __pyx_string_tab[96]
#define __pyx_n_u_ScamperAddr_is_linklocal __pyx_string_tab[97]
#define __pyx_n_u_ScamperAddr_is_reserved __pyx_string_tab[98]
#define __pyx_n_u_ScamperAddr_is_rfc1918 __pyx_string_tab[99]
#define __pyx_n_u_ScamperAddr_is_unicast __pyx_string_tab[100]
#define __pyx_n_u_ScamperCtrl __pyx_string_tab[101]
#define __pyx_n_u_ScamperCtrl___enter __pyx_string_tab[102]
#define __pyx_n_u_ScamperCtrl___exit __pyx_string_tab[103]
#define __pyx_n_u_ScamperCtrl___reduce_cython __pyx_string_tab[104]
#define __pyx_n_u_ScamperCtrl___setstate_cython __pyx_string_tab[105]
#define __pyx_n_u_ScamperCtrl__add_vp __pyx_string_tab[106]
#define __pyx_n_u_ScamperCtrl__dotasks __pyx_string_tab[107]
#define __pyx_n_u_ScamperCtrl__getinst __pyx_string_tab[108]
#define __pyx_n_u_ScamperCtrl_add_inet __pyx_string_tab[109]
#define __pyx_n_u_ScamperCtrl_add_mux __pyx_string_tab[110]
#define __pyx_n_u_ScamperCtrl_add_remote __pyx_string_tab[111]
#define __pyx_n_u_ScamperCtrl_add_remote_dir __pyx_string_tab[112]
#define __pyx_n_u_ScamperCtrl_add_unix __pyx_string_tab[113]
#define __pyx_n_u_ScamperCtrl_add_vps __pyx_string_tab[114]
#define __pyx_n_u_ScamperCtrl_do_ally __pyx_string_tab[115]
#define __pyx_n_u_ScamperCtrl_do_dns __pyx_string_tab[116]
#define __pyx_n_u_ScamperCtrl_do_http __pyx_string_tab[117]
#define __pyx_n_u_ScamperCtrl_do_mercator __pyx_string_tab[118]
#define __pyx_n_u_ScamperCtrl_do_midardisc __pyx_string_tab[119]
#define __pyx_n_u_ScamperCtrl_do_midarest __pyx_string_tab[120]
#define __pyx_n_u_ScamperCtrl_do_ping __pyx_string_tab[121]
#define __pyx_n_u_ScamperCtrl_do_prefixscan __pyx_string_tab[122]
#define __pyx_n_u_ScamperCtrl_do_radargun __pyx_string_tab[123]
#define __pyx_n_u_ScamperCtrl_do_sniff __pyx_string_tab[124]
#define __pyx_n_u_ScamperCtrl_do_tbit __pyx_string_tab[125]
#define __pyx_n_u_ScamperCtrl_do_trace __pyx_string_tab[126]
#define __pyx_n_u_ScamperCtrl_do_tracelb __pyx_string_tab[127]
#define __pyx_n_u_ScamperCtrl_do_udpprobe __pyx_string_tab[128]
#define __pyx_n_u_ScamperCtrl_done __pyx_string_tab[129]
#define __pyx_n_u_ScamperCtrl_exceptions __pyx_string_tab[130]
#define __pyx_n_u_ScamperCtrl_instances __pyx_string_tab[131]
#define __pyx_n_u_ScamperCtrl_is_done __pyx_string_tab[132]
#define __pyx_n_u_ScamperCtrl_poll __pyx_string_tab[133]
#define __pyx_n_u_ScamperCtrl_responses __pyx_string_tab[134]
#define __pyx_n_u_ScamperCtrl_vps __pyx_string_tab[135]
#define __pyx_n_u_ScamperCycle __pyx_string_tab[136]
#define __pyx_n_u_ScamperCycle___reduce_cython __pyx_string_tab[137]
#define __pyx_n_u_ScamperCycle___setstate_cython __pyx_string_tab[138]
#define __pyx_n_u_ScamperDealias __pyx_string_tab[139]
#define __pyx_n_u_ScamperDealiasMidardiscRound __pyx_string_tab[140]
#define __pyx_n_u_ScamperDealiasMidardiscRound___r __pyx_string_tab[141]
#define __pyx_n_u_ScamperDealiasMidardiscRound___s __pyx_string_tab[142]
#define __pyx_n_u_ScamperDealiasProbe __pyx_string_tab[143]
#define __pyx_n_u_ScamperDealiasProbeIterator __pyx_string_tab[144]
#define __pyx_n_u_ScamperDealiasProbeIterator___i __pyx_string_tab[145]
#define __pyx_n_u_ScamperDealiasProbeIterator___i_2 __pyx_string_tab[146]
#define __pyx_n_u_ScamperDealiasProbeIterator___n __pyx_string_tab[147]
#define __pyx_n_u_ScamperDealiasProbe___reduce_cyt __pyx_string_tab[148]
#define __pyx_n_u_ScamperDealiasProbe___setstate_c __pyx_string_tab[149]
#define __pyx_n_u_ScamperDealiasProbe_replies __pyx_string_tab[150]
#define __pyx_n_u_ScamperDealiasProbe_reply __pyx_string_tab[151]
#define __pyx_kp_u_ScamperDealiasProbedef __pyx_string_tab[152]
#define __pyx_n_u_ScamperDealiasProbedefIterator __pyx_string_tab[153]
#define __pyx_n_u_ScamperDealiasProbedefIterator_2 __pyx_string_tab[154]
#define __pyx_n_u_ScamperDealiasProbedefIterator_3 __pyx_string_tab[155]
#define __pyx_n_u_ScamperDealiasProbedefIterator_4 __pyx_string_tab[156]
#define __pyx_n_u_ScamperDealiasProbedef_2 __pyx_string_tab[157]
#define __pyx_n_u_ScamperDealiasProbedef___reduce __pyx_string_tab[158]
#define __pyx_n_u_ScamperDealiasProbedef___setstat __pyx_string_tab[159]
#define __pyx_n_u_ScamperDealiasProbedef_is_icmp __pyx_string_tab[160]
#define __pyx_n_u_ScamperDealiasProbedef_is_tcp __pyx_string_tab[161]
#define __pyx_n_u_ScamperDealiasProbedef_is_udp __pyx_string_tab[162]
#define __pyx_n_u_ScamperDealiasReply __pyx_string_tab[163]
#define __pyx_n_u_ScamperDealiasReplyIterator __pyx_string_tab[164]
#define __pyx_n_u_ScamperDealiasReplyIterator___i __pyx_string_tab[165]
#define __pyx_n_u_ScamperDealiasReplyIterator___i_2 __pyx_string_tab[166]
#define __pyx_n_u_ScamperDealiasReplyIterator___n __pyx_string_tab[167]
#define __pyx_n_u_ScamperDealiasReply___reduce_cyt __pyx_string_tab[168]
#define __pyx_n_u_ScamperDealiasReply___setstate_c __pyx_string_tab[169]
#define __pyx_n_u_ScamperDealiasReply_is_from_targ __pyx_string_tab[170]
#define __pyx_n_u_ScamperDealiasReply_is_icmp __pyx_string_tab[171]
#define __pyx_n_u_ScamperDealiasReply_is_icmp_ttl __pyx_string_tab[172]
#define __pyx_n_u_ScamperDealiasReply_is_icmp_unre __pyx_string_tab[173]
#define __pyx_n_u_ScamperDealiasReply_is_icmp_unre_2 __pyx_string_tab[174]
#define __pyx_n_u_ScamperDealiasReply_is_tcp __pyx_string_tab[175]
#define __pyx_n_u_ScamperDealias___reduce_cython __pyx_string_tab[176]
#define __pyx_n_u_ScamperDealias___setstate_cython __pyx_string_tab[177]
#define __pyx_n_u_ScamperDealias_aliases __pyx_string_tab[178]
#define __pyx_n_u_ScamperDealias_has_aliases __pyx_string_tab[179]
#define __pyx_n_u_ScamperDealias_is_ally __pyx_string_tab[180]
#define __pyx_n_u_ScamperDealias_is_bump __pyx_string_tab[181]
#define __pyx_n_u_ScamperDealias_is_mercator __pyx_string_tab[182]
#define __pyx_n_u_ScamperDealias_is_midardisc __pyx_string_tab[183]
#define __pyx_n_u_ScamperDealias_is_midarest __pyx_string_tab[184]
#define __pyx_n_u_ScamperDealias_is_prefixscan __pyx_string_tab[185]
#define __pyx_n_u_ScamperDealias_is_radargun __pyx_string_tab[186]
#define __pyx_n_u_ScamperDealias_probe __pyx_string_tab[187]
#define __pyx_n_u_ScamperDealias_probedef __pyx_string_tab[188]
#define __pyx_n_u_ScamperDealias_probedefs __pyx_string_tab[189]
#define __pyx_n_u_ScamperDealias_probes __pyx_string_tab[190]
#define __pyx_n_u_ScamperDealias_to_json __pyx_string_tab[191]
#define __pyx_n_u_ScamperFile __pyx_string_tab[192]
#define __pyx_n_u_ScamperFile___enter __pyx_string_tab[193]
#define __pyx_n_u_ScamperFile___exit __pyx_string_tab[194]
#define __pyx_n_u_ScamperFile___reduce_cython __pyx_string_tab[195]
#define __pyx_n_u_ScamperFile___setstate_cython __pyx_string_tab[196]
#define __pyx_n_u_ScamperFile_close __pyx_string_tab[197]
#define __pyx_n_u_ScamperFile_filter_types __pyx_string_tab[198]
#define __pyx_n_u_ScamperFile_is_read __pyx_string_tab[199]
#define __pyx_n_u_ScamperFile_is_write __pyx_string_tab[200]
#define __pyx_n_u_ScamperFile_read __pyx_string_tab[201]
#define __pyx_n_u_ScamperFile_write __pyx_string_tab[202]
#define __pyx_n_u_ScamperHost __pyx_string_tab[203]
#define __pyx_n_u_ScamperHostMX __pyx_string_tab[204]
#define __pyx_n_u_ScamperHostMX___reduce_cython __pyx_string_tab[205]
#define __pyx_n_u_ScamperHostMX___setstate_cython __pyx_string_tab[206]
#define __pyx_n_u_ScamperHostOPT __pyx_string_tab[207]
#define __pyx_n_u_ScamperHostOPTElem __pyx_string_tab[208]
#define __pyx_n_u_ScamperHostOPTElem___reduce_cyth __pyx_string_tab[209]
#define __pyx_n_u_ScamperHostOPTElem___setstate_cy __pyx_string_tab[210]
#define __pyx_n_u_ScamperHostOPT___reduce_cython __pyx_string_tab[211]
#define __pyx_n_u_ScamperHostOPT___setstate_cython __pyx_string_tab[212]
#define __pyx_n_u_ScamperHostOPT_elem __pyx_string_tab[213]
#define __pyx_n_u_ScamperHostQuery __pyx_string_tab[214]
#define __pyx_n_u_ScamperHostQuery___reduce_cython __pyx_string_tab[215]
#define __pyx_n_u_ScamperHostQuery___setstate_cyth __pyx_string_tab[216]
#define __pyx_n_u_ScamperHostQuery_an __pyx_string_tab[217]
#define __pyx_n_u_ScamperHostQuery_ar __pyx_string_tab[218]
#define __pyx_n_u_ScamperHostQuery_ns __pyx_string_tab[219]
#define __pyx_n_u_ScamperHostRR __pyx_string_tab[220]
#define __pyx_n_u_ScamperHostRRIterator __pyx_string_tab[221]
#define __pyx_n_u_ScamperHostRRIterator___init __pyx_string_tab[222]
#define __pyx_n_u_ScamperHostRRIterator___iter __pyx_string_tab[223]
#define __pyx_n_u_ScamperHostRRIterator___next __pyx_string_tab[224]
#define __pyx_n_u_ScamperHostRR___reduce_cython __pyx_string_tab[225]
#define __pyx_n_u_ScamperHostRR___setstate_cython __pyx_string_tab[226]
#define __pyx_n_u_ScamperHostSOA __pyx_string_tab[227]
#define __pyx_n_u_ScamperHostSOA___reduce_cython __pyx_string_tab[228]
#define __pyx_n_u_ScamperHostSOA___setstate_cython __pyx_string_tab[229]
#define __pyx_n_u_ScamperHostSVCB __pyx_string_tab[230]
#define __pyx_n_u_ScamperHostSVCBParam __pyx_string_tab[231]
#define __pyx_n_u_ScamperHostSVCBParam___reduce_cy __pyx_string_tab[232]
#define __pyx_n_u_ScamperHostSVCBParam___setstate __pyx_string_tab[233]
#define __pyx_n_u_ScamperHostSVCB___reduce_cython __pyx_string_tab[234]
#define __pyx_n_u_ScamperHostSVCB___setstate_cytho __pyx_string_tab[235]
#define __pyx_n_u_ScamperHostSVCB_param __pyx_string_tab[236]
#define __pyx_n_u_ScamperHostTXT __pyx_string_tab[237]
#define __pyx_n_u_ScamperHostTXT___reduce_cython __pyx_string_tab[238]
#define __pyx_n_u_ScamperHostTXT___setstate_cython __pyx_string_tab[239]
#define __pyx_n_u_ScamperHostTXT_str __pyx_string_tab[240]
#define __pyx_n_u_ScamperHostType __pyx_string_tab[241]
#define __pyx_n_u_ScamperHost___reduce_cython __pyx_string_tab[242]
#define __pyx_n_u_ScamperHost___setstate_cython __pyx_string_tab[243]
#define __pyx_n_u_ScamperHost_an __pyx_string_tab[244]
#define __pyx_n_u_ScamperHost_ans __pyx_string_tab[245]
#define __pyx_n_u_ScamperHost_ans_addrs __pyx_string_tab[246]
#define __pyx_n_u_ScamperHost_ans_mxes __pyx_string_tab[247]
#define __pyx_n_u_ScamperHost_ans_nses __pyx_string_tab[248]
#define __pyx_n_u_ScamperHost_ans_ptrs __pyx_string_tab[249]
#define __pyx_n_u_ScamperHost_ans_txts __pyx_string_tab[250]
#define __pyx_n_u_ScamperHost_ar __pyx_string_tab[251]
#define __pyx_n_u_ScamperHost_ars __pyx_string_tab[252]
#define __pyx_n_u_ScamperHost_ns __pyx_string_tab[253]
#define __pyx_n_u_ScamperHost_nss __pyx_string_tab[254]
#define __pyx_n_u_ScamperHost_to_json __pyx_string_tab[255]
#define __pyx_n_u_ScamperHttp __pyx_string_tab[256]
#define __pyx_n_u_ScamperHttpBuf __pyx_string_tab[257]
#define __pyx_n_u_ScamperHttpBuf___reduce_cython __pyx_string_tab[258]
#define __pyx_n_u_ScamperHttpBuf___setstate_cython __pyx_string_tab[259]
#define __pyx_n_u_ScamperHttpBuf_is_data __pyx_string_tab[260]
#define __pyx_n_u_ScamperHttpBuf_is_hdr __pyx_string_tab[261]
#define __pyx_n_u_ScamperHttpBuf_is_rx __pyx_string_tab[262]
#define __pyx_n_u_ScamperHttpBuf_is_tls __pyx_string_tab[263]
#define __pyx_n_u_ScamperHttpBuf_is_tx __pyx_string_tab[264]
#define __pyx_n_u_ScamperHttpIterator __pyx_string_tab[265]
#define __pyx_n_u_ScamperHttpIterator___init __pyx_string_tab[266]
#define __pyx_n_u_ScamperHttpIterator___iter __pyx_string_tab[267]
#define __pyx_n_u_ScamperHttpIterator___next __pyx_string_tab[268]
#define __pyx_n_u_ScamperHttp___reduce_cython __pyx_string_tab[269]
#define __pyx_n_u_ScamperHttp___setstate_cython __pyx_string_tab[270]
#define __pyx_n_u_ScamperHttp_buf __pyx_string_tab[271]
#define __pyx_n_u_ScamperHttp_bufs __pyx_string_tab[272]
#define __pyx_n_u_ScamperHttp_response_hdr_byname __pyx_string_tab[273]
#define __pyx_n_u_ScamperHttp_transmit_hdr_byname __pyx_string_tab[274]
#define __pyx_n_u_ScamperIcmpExt __pyx_string_tab[275]
#define __pyx_n_u_ScamperIcmpExt___reduce_cython __pyx_string_tab[276]
#define __pyx_n_u_ScamperIcmpExt___setstate_cython __pyx_string_tab[277]
#define __pyx_n_u_ScamperIcmpExt_is_mpls __pyx_string_tab[278]
#define __pyx_n_u_ScamperIcmpExt_mpls_exp __pyx_string_tab[279]
#define __pyx_n_u_ScamperIcmpExt_mpls_label __pyx_string_tab[280]
#define __pyx_n_u_ScamperIcmpExt_mpls_lse __pyx_string_tab[281]
#define __pyx_n_u_ScamperIcmpExt_mpls_lses __pyx_string_tab[282]
#define __pyx_n_u_ScamperIcmpExt_mpls_s __pyx_string_tab[283]
#define __pyx_n_u_ScamperIcmpExt_mpls_ttl __pyx_string_tab[284]
#define __pyx_n_u_ScamperIcmpExts __pyx_string_tab[285]
#define __pyx_n_u_ScamperIcmpExtsIterator __pyx_string_tab[286]
#define __pyx_n_u_ScamperIcmpExtsIterator___init __pyx_string_tab[287]
#define __pyx_n_u_ScamperIcmpExtsIterator___iter __pyx_string_tab[288]
#define __pyx_n_u_ScamperIcmpExtsIterator___next __pyx_string_tab[289]
#define __pyx_n_u_ScamperIcmpExts___reduce_cython __pyx_string_tab[290]
#define __pyx_n_u_ScamperIcmpExts___setstate_cytho __pyx_string_tab[291]
#define __pyx_n_u_ScamperIcmpExts_ext __pyx_string_tab[292]
#define __pyx_n_u_ScamperIcmpExts_ext_count __pyx_string_tab[293]
#define __pyx_n_u_ScamperIcmpExts_exts __pyx_string_tab[294]
#define __pyx_n_u_ScamperIcmpMplsLabelStackEntry __pyx_string_tab[295]
#define __pyx_n_u_ScamperIcmpMplsLabelStackEntry_2 __pyx_string_tab[296]
#define __pyx_n_u_ScamperIcmpMplsLabelStackEntry_3 __pyx_string_tab[297]
#define __pyx_n_u_ScamperIcmpMplsLabelStackEntry_e __pyx_string_tab[298]
#define __pyx_n_u_ScamperIcmpMplsLabelStackEntry_l __pyx_string_tab[299]
#define __pyx_n_u_ScamperIcmpMplsLabelStackEntry_s __pyx_string_tab[300]
#define __pyx_n_u_ScamperIcmpMplsLabelStackEntry_t __pyx_string_tab[301]
#define __pyx_n_u_ScamperIcmpMplsLabelStackIterat __pyx_string_tab[302]
#define __pyx_n_u_ScamperIcmpMplsLabelStackIterat_2 __pyx_string_tab[303]
#define __pyx_n_u_ScamperIcmpMplsLabelStackIterat_3 __pyx_string_tab[304]
#define __pyx_n_u_ScamperIcmpMplsLabelStackIterat_4 __pyx_string_tab[305]
#define __pyx_kp_u_ScamperInst __pyx_string_tab[306]
#define __pyx_n_u_ScamperInstData __pyx_string_tab[307]
#define __pyx_n_u_ScamperInstData___init __pyx_string_tab[308]
#define __pyx_n_u_ScamperInstError __pyx_string_tab[309]
#define __pyx_n_u_ScamperInstError___init __pyx_string_tab[310]
#define __pyx_n_u_ScamperInst_2 __pyx_string_tab[311]
#define __pyx_n_u_ScamperInst___reduce_cython __pyx_string_tab[312]
#define __pyx_n_u_ScamperInst___setstate_cython __pyx_string_tab[313]
#define __pyx_n_u_ScamperInst_done __pyx_string_tab[314]
#define __pyx_kp_u_ScamperInst_has_signalled_EOF __pyx_string_tab[315]
#define __pyx_n_u_ScamperInst_is_eof __pyx_string_tab[316]
#define __pyx_n_u_ScamperList __pyx_string_tab[317]
#define __pyx_n_u_ScamperList___reduce_cython __pyx_string_tab[318]
#define __pyx_n_u_ScamperList___setstate_cython __pyx_string_tab[319]
#define __pyx_n_u_ScamperMux __pyx_string_tab[320]
#define __pyx_n_u_ScamperMux___reduce_cython __pyx_string_tab[321]
#define __pyx_n_u_ScamperMux___setstate_cython __pyx_string_tab[322]
#define __pyx_n_u_ScamperMux_vps __pyx_string_tab[323]
#define __pyx_n_u_ScamperNeighbourdisc __pyx_string_tab[324]
#define __pyx_n_u_ScamperNeighbourdisc___reduce_cy __pyx_string_tab[325]
#define __pyx_n_u_ScamperNeighbourdisc___setstate __pyx_string_tab[326]
#define __pyx_n_u_ScamperNeighbourdisc_to_json __pyx_string_tab[327]
#define __pyx_n_u_ScamperPing __pyx_string_tab[328]
#define __pyx_n_u_ScamperPingIterator __pyx_string_tab[329]
#define __pyx_n_u_ScamperPingIterator___init __pyx_string_tab[330]
#define __pyx_n_u_ScamperPingIterator___iter __pyx_string_tab[331]
#define __pyx_n_u_ScamperPingIterator___next __pyx_string_tab[332]
#define __pyx_n_u_ScamperPingReply __pyx_string_tab[333]
#define __pyx_n_u_ScamperPingReply___reduce_cython __pyx_string_tab[334]
#define __pyx_n_u_ScamperPingReply___setstate_cyth __pyx_string_tab[335]
#define __pyx_n_u_ScamperPingReply_is_from_target __pyx_string_tab[336]
#define __pyx_n_u_ScamperPingReply_is_icmp __pyx_string_tab[337]
#define __pyx_n_u_ScamperPingReply_is_icmp_echo_re __pyx_string_tab[338]
#define __pyx_n_u_ScamperPingReply_is_icmp_ptb __pyx_string_tab[339]
#define __pyx_n_u_ScamperPingReply_is_icmp_tsreply __pyx_string_tab[340]
#define __pyx_n_u_ScamperPingReply_is_icmp_ttl_exp __pyx_string_tab[341]
#define __pyx_n_u_ScamperPingReply_is_icmp_unreach __pyx_string_tab[342]
#define __pyx_n_u_ScamperPingReply_is_icmp_unreach_2 __pyx_string_tab[343]
#define __pyx_n_u_ScamperPingReply_is_tcp __pyx_string_tab[344]
#define __pyx_n_u_ScamperPingReply_is_udp __pyx_string_tab[345]
#define __pyx_n_u_ScamperPing___reduce_cython __pyx_string_tab[346]
#define __pyx_n_u_ScamperPing___setstate_cython __pyx_string_tab[347]
#define __pyx_n_u_ScamperPing__stats __pyx_string_tab[348]
#define __pyx_n_u_ScamperPing_is_icmp __pyx_string_tab[349]
#define __pyx_n_u_ScamperPing_is_icmp_time __pyx_string_tab[350]
#define __pyx_n_u_ScamperPing_is_tcp __pyx_string_tab[351]
#define __pyx_n_u_ScamperPing_is_tcp_ack_sport __pyx_string_tab[352]
#define __pyx_n_u_ScamperPing_is_udp __pyx_string_tab[353]
#define __pyx_n_u_ScamperPing_is_vary_dport __pyx_string_tab[354]
#define __pyx_n_u_ScamperPing_is_vary_sport __pyx_string_tab[355]
#define __pyx_n_u_ScamperPing_replies __pyx_string_tab[356]
#define __pyx_n_u_ScamperPing_reply __pyx_string_tab[357]
#define __pyx_n_u_ScamperPing_to_json __pyx_string_tab[358]
#define __pyx_n_u_ScamperSniff __pyx_string_tab[359]
#define __pyx_n_u_ScamperSniffPkt __pyx_string_tab[360]
#define __pyx_n_u_ScamperSniffPkt___reduce_cython __pyx_string_tab[361]
#define __pyx_n_u_ScamperSniffPkt___setstate_cytho __pyx_string_tab[362]
#define __pyx_n_u_ScamperSniffStop __pyx_string_tab[363]
#define __pyx_n_u_ScamperSniff___reduce_cython __pyx_string_tab[364]
#define __pyx_n_u_ScamperSniff___setstate_cython __pyx_string_tab[365]
#define __pyx_n_u_ScamperSniff_pkt __pyx_string_tab[366]
#define __pyx_n_u_ScamperSting __pyx_string_tab[367]
#define __pyx_n_u_ScamperSting___reduce_cython __pyx_string_tab[368]
#define __pyx_n_u_ScamperSting___setstate_cython __pyx_string_tab[369]
#define __pyx_n_u_ScamperTask __pyx_string_tab[370]
#define __pyx_n_u_ScamperTask___reduce_cython __pyx_string_tab[371]
#define __pyx_n_u_ScamperTask___setstate_cython __pyx_string_tab[372]
#define __pyx_n_u_ScamperTask_halt __pyx_string_tab[373]
#define __pyx_n_u_ScamperTbit __pyx_string_tab[374]
#define __pyx_n_u_ScamperTbitPkt __pyx_string_tab[375]
#define __pyx_n_u_ScamperTbitPkt___reduce_cython __pyx_string_tab[376]
#define __pyx_n_u_ScamperTbitPkt___setstate_cython __pyx_string_tab[377]
#define __pyx_n_u_ScamperTbitPkt_is_rx __pyx_string_tab[378]
#define __pyx_n_u_ScamperTbitPkt_is_tx __pyx_string_tab[379]
#define __pyx_n_u_ScamperTbit___reduce_cython __pyx_string_tab[380]
#define __pyx_n_u_ScamperTbit___setstate_cython __pyx_string_tab[381]
#define __pyx_n_u_ScamperTbit_to_json __pyx_string_tab[382]
#define __pyx_n_u_ScamperTrace __pyx_string_tab[383]
#define __pyx_n_u_ScamperTraceHop __pyx_string_tab[384]
#define __pyx_n_u_ScamperTraceHopIterator __pyx_string_tab[385]
#define __pyx_n_u_ScamperTraceHopIterator___init __pyx_string_tab[386]
#define __pyx_n_u_ScamperTraceHopIterator___iter __pyx_string_tab[387]
#define __pyx_n_u_ScamperTraceHopIterator___next __pyx_string_tab[388]
#define __pyx_n_u_ScamperTraceHop___reduce_cython __pyx_string_tab[389]
#define __pyx_n_u_ScamperTraceHop___setstate_cytho __pyx_string_tab[390]
#define __pyx_n_u_ScamperTraceHop_is_icmp __pyx_string_tab[391]
#define __pyx_n_u_ScamperTraceHop_is_icmp_echo_rep __pyx_string_tab[392]
#define __pyx_n_u_ScamperTraceHop_is_icmp_ptb __pyx_string_tab[393]
#define __pyx_n_u_ScamperTraceHop_is_icmp_q __pyx_string_tab[394]
#define __pyx_n_u_ScamperTraceHop_is_icmp_ttl_exp __pyx_string_tab[395]
#define __pyx_n_u_ScamperTraceHop_is_icmp_unreach __pyx_string_tab[396]
#define __pyx_n_u_ScamperTraceHop_is_tcp __pyx_string_tab[397]
#define __pyx_n_u_ScamperTracePmtud __pyx_string_tab[398]
#define __pyx_n_u_ScamperTracePmtudNote __pyx_string_tab[399]
#define __pyx_n_u_ScamperTracePmtudNote___reduce_c __pyx_string_tab[400]
#define __pyx_n_u_ScamperTracePmtudNote___setstate __pyx_string_tab[401]
#define __pyx_n_u_ScamperTracePmtudNote_hop __pyx_string_tab[402]
#define __pyx_n_u_ScamperTracePmtud___reduce_cytho __pyx_string_tab[403]
#define __pyx_n_u_ScamperTracePmtud___setstate_cyt __pyx_string_tab[404]
#define __pyx_n_u_ScamperTracePmtud_notes __pyx_string_tab[405]
#define __pyx_n_u_ScamperTraceStop __pyx_string_tab[406]
#define __pyx_n_u_ScamperTrace___reduce_cython __pyx_string_tab[407]
#define __pyx_n_u_ScamperTrace___setstate_cython __pyx_string_tab[408]
#define __pyx_n_u_ScamperTrace_addrs __pyx_string_tab[409]
#define __pyx_n_u_ScamperTrace_hop __pyx_string_tab[410]
#define __pyx_n_u_ScamperTrace_hops __pyx_string_tab[411]
#define __pyx_n_u_ScamperTrace_is_icmp __pyx_string_tab[412]
#define __pyx_n_u_ScamperTrace_is_stop_completed __pyx_string_tab[413]
#define __pyx_n_u_ScamperTrace_is_stop_error __pyx_string_tab[414]
#define __pyx_n_u_ScamperTrace_is_stop_gaplimit __pyx_string_tab[415]
#define __pyx_n_u_ScamperTrace_is_stop_gss __pyx_string_tab[416]
#define __pyx_n_u_ScamperTrace_is_stop_halted __pyx_string_tab[417]
#define __pyx_n_u_ScamperTrace_is_stop_hoplimit __pyx_string_tab[418]
#define __pyx_n_u_ScamperTrace_is_stop_icmp __pyx_string_tab[419]
#define __pyx_n_u_ScamperTrace_is_stop_loop __pyx_string_tab[420]
#define __pyx_n_u_ScamperTrace_is_stop_noreason __pyx_string_tab[421]
#define __pyx_n_u_ScamperTrace_is_stop_unreach __pyx_string_tab[422]
#define __pyx_n_u_ScamperTrace_is_tcp __pyx_string_tab[423]
#define __pyx_n_u_ScamperTrace_is_udp __pyx_string_tab[424]
#define __pyx_n_u_ScamperTrace_to_json __pyx_string_tab[425]
#define __pyx_n_u_ScamperTracelb __pyx_string_tab[426]
#define __pyx_n_u_ScamperTracelbLink __pyx_string_tab[427]
#define __pyx_n_u_ScamperTracelbLinkIterator __pyx_string_tab[428]
#define __pyx_n_u_ScamperTracelbLinkIterator___in __pyx_string_tab[429]
#define __pyx_n_u_ScamperTracelbLinkIterator___it __pyx_string_tab[430]
#define __pyx_n_u_ScamperTracelbLinkIterator___ne __pyx_string_tab[431]
#define __pyx_n_u_ScamperTracelbLink___reduce_cyth __pyx_string_tab[432]
#define __pyx_n_u_ScamperTracelbLink___setstate_cy __pyx_string_tab[433]
#define __pyx_n_u_ScamperTracelbLink_far __pyx_string_tab[434]
#define __pyx_n_u_ScamperTracelbLink_length __pyx_string_tab[435]
#define __pyx_n_u_ScamperTracelbLink_near __pyx_string_tab[436]
#define __pyx_n_u_ScamperTracelbLink_probeset __pyx_string_tab[437]
#define __pyx_n_u_ScamperTracelbMethod __pyx_string_tab[438]
#define __pyx_n_u_ScamperTracelbNode __pyx_string_tab[439]
#define __pyx_n_u_ScamperTracelbNodeIterator __pyx_string_tab[440]
#define __pyx_n_u_ScamperTracelbNodeIterator___in __pyx_string_tab[441]
#define __pyx_n_u_ScamperTracelbNodeIterator___it __pyx_string_tab[442]
#define __pyx_n_u_ScamperTracelbNodeIterator___ne __pyx_string_tab[443]
#define __pyx_n_u_ScamperTracelbNode___reduce_cyth __pyx_string_tab[444]
#define __pyx_n_u_ScamperTracelbNode___setstate_cy __pyx_string_tab[445]
#define __pyx_n_u_ScamperTracelbNode_link __pyx_string_tab[446]
#define __pyx_n_u_ScamperTracelbNode_links __pyx_string_tab[447]
#define __pyx_n_u_ScamperTracelbProbe __pyx_string_tab[448]
#define __pyx_n_u_ScamperTracelbProbe___reduce_cyt __pyx_string_tab[449]
#define __pyx_n_u_ScamperTracelbProbe___setstate_c __pyx_string_tab[450]
#define __pyx_n_u_ScamperTracelbProbe_reply __pyx_string_tab[451]
#define __pyx_n_u_ScamperTracelbProbeset __pyx_string_tab[452]
#define __pyx_n_u_ScamperTracelbProbeset___reduce __pyx_string_tab[453]
#define __pyx_n_u_ScamperTracelbProbeset___setstat __pyx_string_tab[454]
#define __pyx_n_u_ScamperTracelbProbeset_probe __pyx_string_tab[455]
#define __pyx_n_u_ScamperTracelbReply __pyx_string_tab[456]
#define __pyx_n_u_ScamperTracelbReply___reduce_cyt __pyx_string_tab[457]
#define __pyx_n_u_ScamperTracelbReply___setstate_c __pyx_string_tab[458]
#define __pyx_n_u_ScamperTracelb___reduce_cython __pyx_string_tab[459]
#define __pyx_n_u_ScamperTracelb___setstate_cython __pyx_string_tab[460]
#define __pyx_n_u_ScamperTracelb_is_icmp __pyx_string_tab[461]
#define __pyx_n_u_ScamperTracelb_is_tcp __pyx_string_tab[462]
#define __pyx_n_u_ScamperTracelb_is_udp __pyx_string_tab[463]
#define __pyx_n_u_ScamperTracelb_link __pyx_string_tab[464]
#define __pyx_n_u_ScamperTracelb_links __pyx_string_tab[465]
#define __pyx_n_u_ScamperTracelb_node __pyx_string_tab[466]
#define __pyx_n_u_ScamperTracelb_nodes __pyx_string_tab[467]
#define __pyx_n_u_ScamperTracelb_to_json __pyx_string_tab[468]
#define __pyx_n_u_ScamperUdpprobe __pyx_string_tab[469]
#define __pyx_n_u_ScamperUdpprobeProbe __pyx_string_tab[470]
#define __pyx_n_u_ScamperUdpprobeProbe___reduce_cy __pyx_string_tab[471]
#define __pyx_n_u_ScamperUdpprobeProbe___setstate __pyx_string_tab[472]
#define __pyx_n_u_ScamperUdpprobeProbe_reply __pyx_string_tab[473]
#define __pyx_n_u_ScamperUdpprobeReply __pyx_string_tab[474]
#define __pyx_n_u_ScamperUdpprobeReplyIterator __pyx_string_tab[475]
#define __pyx_n_u_ScamperUdpprobeReplyIterator_2 __pyx_string_tab[476]
#define __pyx_n_u_ScamperUdpprobeReplyIterator_3 __pyx_string_tab[477]
#define __pyx_n_u_ScamperUdpprobeReplyIterator_4 __pyx_string_tab[478]
#define __pyx_n_u_ScamperUdpprobeReply___reduce_cy __pyx_string_tab[479]
#define __pyx_n_u_ScamperUdpprobeReply___setstate __pyx_string_tab[480]
#define __pyx_n_u_ScamperUdpprobe___reduce_cython __pyx_string_tab[481]
#define __pyx_n_u_ScamperUdpprobe___setstate_cytho __pyx_string_tab[482]
#define __pyx_n_u_ScamperUdpprobe_probe __pyx_string_tab[483]
#define __pyx_n_u_ScamperUdpprobe_replies __pyx_string_tab[484]
#define __pyx_n_u_ScamperUdpprobe_to_json __pyx_string_tab[485]
#define __pyx_n_u_ScamperVp __pyx_string_tab[486]
#define __pyx_n_u_ScamperVp___reduce_cython __pyx_string_tab[487]
#define __pyx_n_u_ScamperVp___setstate_cython __pyx_string_tab[488]
#define __pyx_n_u_StopIteration __pyx_string_tab[489]
#define __pyx_kp_u_T __pyx_string_tab[490]
#define __pyx_kp_u_TTL __pyx_string_tab[491]
#define __pyx_n_u_TXT __pyx_string_tab[492]
#define __pyx_n_u_TcpAckSport __pyx_string_tab[493]
#define __pyx_n_u_TcpSport __pyx_string_tab[494]
#define __pyx_kp_u_The_class__ScamperHostRRIterato __pyx_string_tab[495]
#define __pyx_kp_u_This_class_cannot_be_insantiated __pyx_string_tab[496]
#define __pyx_kp_u_This_class_cannot_be_instantiate __pyx_string_tab[497]
#define __pyx_n_u_TypeError __pyx_string_tab[498]
#define __pyx_kp_u_U __pyx_string_tab[499]
#define __pyx_kp_u_UTF_8 __pyx_string_tab[500]
#define __pyx_n_u_UdpDport __pyx_string_tab[501]
#define __pyx_n_u_UdpSport __pyx_string_tab[502]
#define __pyx_n_u_Unreach __pyx_string_tab[503]
#define __pyx_n_u_ValueError __pyx_string_tab[504]
#define __pyx_kp_u_W __pyx_string_tab[505]
#define __pyx_kp_u__10 __pyx_string_tab[506]
#define __pyx_kp_u__11 __pyx_string_tab[507]
#define __pyx_kp_u__12 __pyx_string_tab[508]
#define __pyx_kp_u__13 __pyx_string_tab[509]
#define __pyx_kp_u__14 __pyx_string_tab[510]
#define __pyx_kp_u__15 __pyx_string_tab[511]
#define __pyx_kp_u__16 __pyx_string_tab[512]
#define __pyx_kp_u__17 __pyx_string_tab[513]
#define __pyx_kp_u__18 __pyx_string_tab[514]
#define __pyx_kp_u__19 __pyx_string_tab[515]
#define __pyx_kp_u__2 __pyx_string_tab[516]
#define __pyx_kp_u__20 __pyx_string_tab[517]
#define __pyx_kp_u__21 __pyx_string_tab[518]
#define __pyx_kp_u__22 __pyx_string_tab[519]
#define __pyx_kp_u__23 __pyx_string_tab[520]
#define __pyx_kp_u__24 __pyx_string_tab[521]
#define __pyx_kp_u__25 __pyx_string_tab[522]
#define __pyx_kp_u__3 __pyx_string_tab[523]
#define __pyx_kp_u__4 __pyx_string_tab[524]
#define __pyx_kp_u__5 __pyx_string_tab[525]
#define __pyx_kp_u__6 __pyx_string_tab[526]
#define __pyx_kp_u__7 __pyx_string_tab[527]
#define __pyx_kp_u__8 __pyx_string_tab[528]
#define __pyx_kp_u__9 __pyx_string_tab[529]
#define __pyx_n_u_a __pyx_string_tab[530]
#define __pyx_n_u_aaaa __pyx_string_tab[531]
#define __pyx_n_u_add_inet __pyx_string_tab[532]
#define __pyx_n_u_add_mux __pyx_string_tab[533]
#define __pyx_n_u_add_remote __pyx_string_tab[534]
#define __pyx_n_u_add_remote_dir __pyx_string_tab[535]
#define __pyx_n_u_add_unix __pyx_string_tab[536]
#define __pyx_n_u_add_vp __pyx_string_tab[537]
#define __pyx_n_u_add_vps __pyx_string_tab[538]
#define __pyx_n_u_addr __pyx_string_tab[539]
#define __pyx_n_u_addrs __pyx_string_tab[540]
#define __pyx_n_u_aliases __pyx_string_tab[541]
#define __pyx_n_u_all_attempts __pyx_string_tab[542]
#define __pyx_n_u_ally __pyx_string_tab[543]
#define __pyx_n_u_an __pyx_string_tab[544]
#define __pyx_n_u_ancount __pyx_string_tab[545]
#define __pyx_n_u_ans __pyx_string_tab[546]
#define __pyx_n_u_ans_addrs __pyx_string_tab[547]
#define __pyx_n_u_ans_mxes __pyx_string_tab[548]
#define __pyx_n_u_ans_nses __pyx_string_tab[549]
#define __pyx_n_u_ans_ptrs __pyx_string_tab[550]
#define __pyx_n_u_ans_txts __pyx_string_tab[551]
#define __pyx_n_u_append __pyx_string_tab[552]
#define __pyx_n_u_ar __pyx_string_tab[553]
#define __pyx_n_u_arcount __pyx_string_tab[554]
#define __pyx_n_u_args __pyx_string_tab[555]
#define __pyx_n_u_ars __pyx_string_tab[556]
#define __pyx_n_u_ascii __pyx_string_tab[557]
#define __pyx_n_u_asn4 __pyx_string_tab[558]
#define __pyx_n_u_asyncio_coroutines __pyx_string_tab[559]
#define __pyx_kp_u_attempt __pyx_string_tab[560]
#define __pyx_n_u_attempts __pyx_string_tab[561]
#define __pyx_kp_u_attempts_1 __pyx_string_tab[562]
#define __pyx_n_u_b __pyx_string_tab[563]
#define __pyx_n_u_base __pyx_string_tab[564]
#define __pyx_n_u_begin __pyx_string_tab[565]
#define __pyx_n_u_binascii __pyx_string_tab[566]
#define __pyx_n_u_buf __pyx_string_tab[567]
#define __pyx_n_u_bufs __pyx_string_tab[568]
#define __pyx_kp_u_bytes_from __pyx_string_tab[569]
#define __pyx_kp_u_bz2 __pyx_string_tab[570]
#define __pyx_n_u_c __pyx_string_tab[571]
#define __pyx_kp_u_c_2 __pyx_string_tab[572]
#define __pyx_kp_u_c_3 __pyx_string_tab[573]
#define __pyx_n_u_c_4 __pyx_string_tab[574]
#define __pyx_n_u_c_cycle __pyx_string_tab[575]
#define __pyx_n_u_c_list __pyx_string_tab[576]
#define __pyx_n_u_c_sff __pyx_string_tab[577]
#define __pyx_kp_u_can_only_specify_either_TCP_sequ __pyx_string_tab[578]
#define __pyx_kp_u_cannot_add_filter_to_non_readabl __pyx_string_tab[579]
#define __pyx_kp_u_cannot_filter __pyx_string_tab[580]
#define __pyx_kp_u_cannot_provide_both_timeout_and __pyx_string_tab[581]
#define __pyx_kp_u_cannot_run_synchronous_measureme __pyx_string_tab[582]
#define __pyx_kp_u_cannot_specify_ICMP_checksum_wit __pyx_string_tab[583]
#define __pyx_kp_u_cannot_specify_ICMP_parameters_w __pyx_string_tab[584]
#define __pyx_kp_u_cannot_specify_source_or_destina __pyx_string_tab[585]
#define __pyx_kp_u_cannot_specify_source_or_destina_2 __pyx_string_tab[586]
#define __pyx_kp_u_cannot_specify_tcp_ack_with __pyx_string_tab[587]
#define __pyx_kp_u_cannot_specify_tcp_seq_with __pyx_string_tab[588]
#define __pyx_n_u_cc __pyx_string_tab[589]
#define __pyx_n_u_class_getitem __pyx_string_tab[590]
#define __pyx_n_u_cline_in_traceback __pyx_string_tab[591]
#define __pyx_n_u_close __pyx_string_tab[592]
#define __pyx_n_u_cmd __pyx_string_tab[593]
#define __pyx_n_u_confidence __pyx_string_tab[594]
#define __pyx_kp_u_could_not_allocate_hopiter __pyx_string_tab[595]
#define __pyx_kp_u_could_not_build_filter __pyx_string_tab[596]
#define __pyx_kp_u_could_not_connect_to __pyx_string_tab[597]
#define __pyx_kp_u_could_not_extract __pyx_string_tab[598]
#define __pyx_kp_u_could_not_open_file __pyx_string_tab[599]
#define __pyx_kp_u_could_not_schedule_command __pyx_string_tab[600]
#define __pyx_kp_u_could_not_write __pyx_string_tab[601]
#define __pyx_n_u_count __pyx_string_tab[602]
#define __pyx_n_u_count_2 __pyx_string_tab[603]
#define __pyx_n_u_cstr __pyx_string_tab[604]
#define __pyx_n_u_d __pyx_string_tab[605]
#define __pyx_kp_u_d_2 __pyx_string_tab[606]
#define __pyx_kp_u_d_3 __pyx_string_tab[607]
#define __pyx_n_u_data __pyx_string_tab[608]
#define __pyx_n_u_data_2 __pyx_string_tab[609]
#define __pyx_n_u_datetime __pyx_string_tab[610]
#define __pyx_n_u_dealias __pyx_string_tab[611]
#define __pyx_n_u_dealias_2 __pyx_string_tab[612]
#define __pyx_kp_u_dealias_m_ally __pyx_string_tab[613]
#define __pyx_kp_u_dealias_m_mercator __pyx_string_tab[614]
#define __pyx_kp_u_dealias_m_midardisc __pyx_string_tab[615]
#define __pyx_kp_u_dealias_m_midarest __pyx_string_tab[616]
#define __pyx_kp_u_dealias_m_prefixscan __pyx_string_tab[617]
#define __pyx_kp_u_dealias_m_radargun __pyx_string_tab[618]
#define __pyx_n_u_decode __pyx_string_tab[619]
#define __pyx_n_u_diff __pyx_string_tab[620]
#define __pyx_kp_u_disable __pyx_string_tab[621]
#define __pyx_n_u_dist __pyx_string_tab[622]
#define __pyx_n_u_dltx __pyx_string_tab[623]
#define __pyx_n_u_do_ally __pyx_string_tab[624]
#define __pyx_n_u_do_ally_locals_genexpr __pyx_string_tab[625]
#define __pyx_n_u_do_dns __pyx_string_tab[626]
#define __pyx_n_u_do_http __pyx_string_tab[627]
#define __pyx_n_u_do_mercator __pyx_string_tab[628]
#define __pyx_n_u_do_midardisc __pyx_string_tab[629]
#define __pyx_n_u_do_midarest __pyx_string_tab[630]
#define __pyx_kp_u_do_not_specify_icmp_sum_with __pyx_string_tab[631]
#define __pyx_kp_u_do_not_specify_kind_when_opening __pyx_string_tab[632]
#define __pyx_n_u_do_ping __pyx_string_tab[633]
#define __pyx_n_u_do_ping_locals_genexpr __pyx_string_tab[634]
#define __pyx_n_u_do_prefixscan __pyx_string_tab[635]
#define __pyx_n_u_do_prefixscan_locals_genexpr __pyx_string_tab[636]
#define __pyx_n_u_do_radargun __pyx_string_tab[637]
#define __pyx_n_u_do_sniff __pyx_string_tab[638]
#define __pyx_n_u_do_tbit __pyx_string_tab[639]
#define __pyx_n_u_do_trace __pyx_string_tab[640]
#define __pyx_n_u_do_trace_locals_genexpr __pyx_string_tab[641]
#define __pyx_n_u_do_tracelb __pyx_string_tab[642]
#define __pyx_n_u_do_tracelb_locals_genexpr __pyx_string_tab[643]
#define __pyx_n_u_do_udpprobe __pyx_string_tab[644]
#define __pyx_n_u_doc __pyx_string_tab[645]
#define __pyx_n_u_done __pyx_string_tab[646]
#define __pyx_n_u_dotasks __pyx_string_tab[647]
#define __pyx_n_u_dport __pyx_string_tab[648]
#define __pyx_kp_u_dport_2 __pyx_string_tab[649]
#define __pyx_kp_u_dport_invalid_for_method __pyx_string_tab[650]
#define __pyx_n_u_dst __pyx_string_tab[651]
#define __pyx_n_u_dst1 __pyx_string_tab[652]
#define __pyx_n_u_dst2 __pyx_string_tab[653]
#define __pyx_kp_u_dst_2 __pyx_string_tab[654]
#define __pyx_kp_u_dst_cannot_be_none __pyx_string_tab[655]
#define __pyx_n_u_e __pyx_string_tab[656]
#define __pyx_n_u_ecs __pyx_string_tab[657]
#define __pyx_n_u_edns_do __pyx_string_tab[658]
#define __pyx_n_u_edns_version __pyx_string_tab[659]
#define __pyx_n_u_elem __pyx_string_tab[660]
#define __pyx_kp_u_enable __pyx_string_tab[661]
#define __pyx_n_u_encode __pyx_string_tab[662]
#define __pyx_n_u_end __pyx_string_tab[663]
#define __pyx_n_u_endswith __pyx_string_tab[664]
#define __pyx_n_u_enter __pyx_string_tab[665]
#define __pyx_n_u_enum __pyx_string_tab[666]
#define __pyx_n_u_enumerate __pyx_string_tab[667]
#define __pyx_n_u_eof __pyx_string_tab[668]
#define __pyx_n_u_eofcb __pyx_string_tab[669]
#define __pyx_n_u_err __pyx_string_tab[670]
#define __pyx_n_u_esc __pyx_string_tab[671]
#define __pyx_n_u_exc_tb __pyx_string_tab[672]
#define __pyx_n_u_exc_type __pyx_string_tab[673]
#define __pyx_n_u_exc_val __pyx_string_tab[674]
#define __pyx_n_u_exceptions __pyx_string_tab[675]
#define __pyx_n_u_exit __pyx_string_tab[676]
#define __pyx_n_u_exp __pyx_string_tab[677]
#define __pyx_kp_u_expected_bytes_array_of_4_6_16_b __pyx_string_tab[678]
#define __pyx_kp_u_expected_int_for_begin __pyx_string_tab[679]
#define __pyx_kp_u_expected_int_for_end __pyx_string_tab[680]
#define __pyx_kp_u_expected_probedef_in_probedefs __pyx_string_tab[681]
#define __pyx_kp_u_expected_round_in_schedule __pyx_string_tab[682]
#define __pyx_kp_u_expected_str_in_addrs __pyx_string_tab[683]
#define __pyx_kp_u_expected_str_in_rrtypes __pyx_string_tab[684]
#define __pyx_kp_u_expected_string_for_method __pyx_string_tab[685]
#define __pyx_kp_u_expected_timedelta_for_start __pyx_string_tab[686]
#define __pyx_n_u_ext __pyx_string_tab[687]
#define __pyx_n_u_ext_2 __pyx_string_tab[688]
#define __pyx_n_u_ext_count __pyx_string_tab[689]
#define __pyx_n_u_extended_rcode __pyx_string_tab[690]
#define __pyx_n_u_extended_rcode_num __pyx_string_tab[691]
#define __pyx_n_u_exts __pyx_string_tab[692]
#define __pyx_n_u_exts_2 __pyx_string_tab[693]
#define __pyx_kp_u_f __pyx_string_tab[694]
#define __pyx_n_u_far __pyx_string_tab[695]
#define __pyx_n_u_fbody __pyx_string_tab[696]
#define __pyx_kp_u_file_not_opened_in_read_mode __pyx_string_tab[697]
#define __pyx_kp_u_file_not_opened_in_write_mode __pyx_string_tab[698]
#define __pyx_n_u_filename __pyx_string_tab[699]
#define __pyx_n_u_filter_types __pyx_string_tab[700]
#define __pyx_n_u_firsthop __pyx_string_tab[701]
#define __pyx_n_u_fname __pyx_string_tab[702]
#define __pyx_n_u_format __pyx_string_tab[703]
#define __pyx_n_u_format_2 __pyx_string_tab[704]
#define __pyx_n_u_format_spec __pyx_string_tab[705]
#define __pyx_n_u_fudge __pyx_string_tab[706]
#define __pyx_kp_u_fudge_value_must_be_between_0_65 __pyx_string_tab[707]
#define __pyx_n_u_func __pyx_string_tab[708]
#define __pyx_kp_u_g __pyx_string_tab[709]
#define __pyx_n_u_gaplimit __pyx_string_tab[710]
#define __pyx_kp_u_gc __pyx_string_tab[711]
#define __pyx_n_u_genexpr __pyx_string_tab[712]
#define __pyx_n_u_getinst __pyx_string_tab[713]
#define __pyx_n_u_getstate __pyx_string_tab[714]
#define __pyx_n_u_gmtime __pyx_string_tab[715]
#define __pyx_kp_u_got_err_from __pyx_string_tab[716]
#define __pyx_kp_u_got_fatal_from __pyx_string_tab[717]
#define __pyx_n_u_group __pyx_string_tab[718]
#define __pyx_kp_u_gz __pyx_string_tab[719]
#define __pyx_n_u_halt __pyx_string_tab[720]
#define __pyx_n_u_has_aliases __pyx_string_tab[721]
#define __pyx_kp_u_has_signalled_EOF __pyx_string_tab[722]
#define __pyx_kp_u_header_field_body_is_not_ascii __pyx_string_tab[723]
#define __pyx_kp_u_header_field_name_is_not_ascii __pyx_string_tab[724]
#define __pyx_n_u_headers __pyx_string_tab[725]
#define __pyx_kp_u_headers_not_dictionary __pyx_string_tab[726]
#define __pyx_n_u_hexlify __pyx_string_tab[727]
#define __pyx_n_u_hi __pyx_string_tab[728]
#define __pyx_n_u_hop __pyx_string_tab[729]
#define __pyx_n_u_hopc __pyx_string_tab[730]
#define __pyx_n_u_hoplimit __pyx_string_tab[731]
#define __pyx_n_u_hops __pyx_string_tab[732]
#define __pyx_n_u_host __pyx_string_tab[733]
#define __pyx_n_u_htb __pyx_string_tab[734]
#define __pyx_n_u_http __pyx_string_tab[735]
#define __pyx_n_u_http_2 __pyx_string_tab[736]
#define __pyx_n_u_i __pyx_string_tab[737]
#define __pyx_n_u_i_2 __pyx_string_tab[738]
#define __pyx_kp_u_i_3 __pyx_string_tab[739]
#define __pyx_n_u_icmp __pyx_string_tab[740]
#define __pyx_kp_u_icmp_echo __pyx_string_tab[741]
#define __pyx_kp_u_icmp_icmpid __pyx_string_tab[742]
#define __pyx_n_u_icmp_id __pyx_string_tab[743]
#define __pyx_kp_u_icmp_id_2 __pyx_string_tab[744]
#define __pyx_kp_u_icmp_id_invalid_for_method __pyx_string_tab[745]
#define __pyx_kp_u_icmp_paris __pyx_string_tab[746]
#define __pyx_n_u_icmp_seq __pyx_string_tab[747]
#define __pyx_n_u_icmp_sum __pyx_string_tab[748]
#define __pyx_kp_u_icmp_sum_2 __pyx_string_tab[749]
#define __pyx_kp_u_icmp_sum_invalid_for_method __pyx_string_tab[750]
#define __pyx_n_u_index __pyx_string_tab[751]
#define __pyx_n_u_init __pyx_string_tab[752]
#define __pyx_n_u_initializing __pyx_string_tab[753]
#define __pyx_n_u_insecure __pyx_string_tab[754]
#define __pyx_n_u_inst __pyx_string_tab[755]
#define __pyx_n_u_inst_2 __pyx_string_tab[756]
#define __pyx_kp_u_inst_list_contains_non_ScamperIn __pyx_string_tab[757]
#define __pyx_kp_u_inst_not_ScamperInst_type __pyx_string_tab[758]
#define __pyx_n_u_instances __pyx_string_tab[759]
#define __pyx_n_u_insts __pyx_string_tab[760]
#define __pyx_kp_u_invalid_ICMP_ID __pyx_string_tab[761]
#define __pyx_kp_u_invalid_TTL __pyx_string_tab[762]
#define __pyx_kp_u_invalid_address __pyx_string_tab[763]
#define __pyx_kp_u_invalid_address_2 __pyx_string_tab[764]
#define __pyx_kp_u_invalid_destination_port __pyx_string_tab[765]
#define __pyx_kp_u_invalid_dport __pyx_string_tab[766]
#define __pyx_kp_u_invalid_dst __pyx_string_tab[767]
#define __pyx_kp_u_invalid_hop_index __pyx_string_tab[768]
#define __pyx_kp_u_invalid_icmp_id __pyx_string_tab[769]
#define __pyx_kp_u_invalid_icmp_sum __pyx_string_tab[770]
#define __pyx_kp_u_invalid_limit_pkt_count __pyx_string_tab[771]
#define __pyx_kp_u_invalid_limit_time __pyx_string_tab[772]
#define __pyx_kp_u_invalid_mode __pyx_string_tab[773]
#define __pyx_kp_u_invalid_size __pyx_string_tab[774]
#define __pyx_kp_u_invalid_sport __pyx_string_tab[775]
#define __pyx_kp_u_invalid_src __pyx_string_tab[776]
#define __pyx_kp_u_invalid_type __pyx_string_tab[777]
#define __pyx_kp_u_invalid_url __pyx_string_tab[778]
#define __pyx_n_u_ipv4 __pyx_string_tab[779]
#define __pyx_n_u_is_6to4 __pyx_string_tab[780]
#define __pyx_n_u_is_ally __pyx_string_tab[781]
#define __pyx_n_u_is_bump __pyx_string_tab[782]
#define __pyx_n_u_is_coroutine __pyx_string_tab[783]
#define __pyx_n_u_is_data __pyx_string_tab[784]
#define __pyx_n_u_is_done __pyx_string_tab[785]
#define __pyx_n_u_is_eof __pyx_string_tab[786]
#define __pyx_n_u_is_from_target __pyx_string_tab[787]
#define __pyx_n_u_is_hdr __pyx_string_tab[788]
#define __pyx_n_u_is_icmp __pyx_string_tab[789]
#define __pyx_n_u_is_icmp_echo_reply __pyx_string_tab[790]
#define __pyx_n_u_is_icmp_ptb __pyx_string_tab[791]
#define __pyx_n_u_is_icmp_q __pyx_string_tab[792]
#define __pyx_n_u_is_icmp_time __pyx_string_tab[793]
#define __pyx_n_u_is_icmp_tsreply __pyx_string_tab[794]
#define __pyx_n_u_is_icmp_ttl_exp __pyx_string_tab[795]
#define __pyx_n_u_is_icmp_unreach __pyx_string_tab[796]
#define __pyx_n_u_is_icmp_unreach_port __pyx_string_tab[797]
#define __pyx_n_u_is_ipv4 __pyx_string_tab[798]
#define __pyx_n_u_is_ipv6 __pyx_string_tab[799]
#define __pyx_n_u_is_linklocal __pyx_string_tab[800]
#define __pyx_n_u_is_mercator __pyx_string_tab[801]
#define __pyx_n_u_is_midardisc __pyx_string_tab[802]
#define __pyx_n_u_is_midarest __pyx_string_tab[803]
#define __pyx_n_u_is_mpls __pyx_string_tab[804]
#define __pyx_n_u_is_prefixscan __pyx_string_tab[805]
#define __pyx_n_u_is_radargun __pyx_string_tab[806]
#define __pyx_n_u_is_read __pyx_string_tab[807]
#define __pyx_n_u_is_reserved __pyx_string_tab[808]
#define __pyx_n_u_is_rfc1918 __pyx_string_tab[809]
#define __pyx_n_u_is_rx __pyx_string_tab[810]
#define __pyx_n_u_is_stop_completed __pyx_string_tab[811]
#define __pyx_n_u_is_stop_error __pyx_string_tab[812]
#define __pyx_n_u_is_stop_gaplimit __pyx_string_tab[813]
#define __pyx_n_u_is_stop_gss __pyx_string_tab[814]
#define __pyx_n_u_is_stop_halted __pyx_string_tab[815]
#define __pyx_n_u_is_stop_hoplimit __pyx_string_tab[816]
#define __pyx_n_u_is_stop_icmp __pyx_string_tab[817]
#define __pyx_n_u_is_stop_loop __pyx_string_tab[818]
#define __pyx_n_u_is_stop_noreason __pyx_string_tab[819]
#define __pyx_n_u_is_stop_unreach __pyx_string_tab[820]
#define __pyx_n_u_is_tcp __pyx_string_tab[821]
#define __pyx_n_u_is_tcp_ack_sport __pyx_string_tab[822]
#define __pyx_n_u_is_tls __pyx_string_tab[823]
#define __pyx_n_u_is_tx __pyx_string_tab[824]
#define __pyx_n_u_is_udp __pyx_string_tab[825]
#define __pyx_n_u_is_unicast __pyx_string_tab[826]
#define __pyx_n_u_is_vary_dport __pyx_string_tab[827]
#define __pyx_n_u_is_vary_sport __pyx_string_tab[828]
#define __pyx_n_u_is_write __pyx_string_tab[829]
#define __pyx_n_u_isascii __pyx_string_tab[830]
#define __pyx_n_u_isdecimal __pyx_string_tab[831]
#define __pyx_kp_u_isenabled __pyx_string_tab[832]
#define __pyx_n_u_iter __pyx_string_tab[833]
#define __pyx_n_u_j __pyx_string_tab[834]
#define __pyx_kp_u_json __pyx_string_tab[835]
#define __pyx_n_u_json_2 __pyx_string_tab[836]
#define __pyx_n_u_keys __pyx_string_tab[837]
#define __pyx_n_u_kind __pyx_string_tab[838]
#define __pyx_kp_u_l __pyx_string_tab[839]
#define __pyx_n_u_label __pyx_string_tab[840]
#define __pyx_n_u_length __pyx_string_tab[841]
#define __pyx_kp_u_lib_python_scamper_pyx __pyx_string_tab[842]
#define __pyx_n_u_limit_pkt_count __pyx_string_tab[843]
#define __pyx_n_u_limit_time __pyx_string_tab[844]
#define __pyx_n_u_link __pyx_string_tab[845]
#define __pyx_n_u_link_count __pyx_string_tab[846]
#define __pyx_n_u_linkc __pyx_string_tab[847]
#define __pyx_n_u_links __pyx_string_tab[848]
#define __pyx_kp_u_list_not_allowed_with_primitive __pyx_string_tab[849]
#define __pyx_n_u_listallowed __pyx_string_tab[850]
#define __pyx_n_u_listdir __pyx_string_tab[851]
#define __pyx_n_u_loc __pyx_string_tab[852]
#define __pyx_n_u_loops __pyx_string_tab[853]
#define __pyx_n_u_lower __pyx_string_tab[854]
#define __pyx_kp_u_m __pyx_string_tab[855]
#define __pyx_n_u_m_2 __pyx_string_tab[856]
#define __pyx_n_u_main __pyx_string_tab[857]
#define __pyx_n_u_mc __pyx_string_tab[858]
#define __pyx_n_u_md __pyx_string_tab[859]
#define __pyx_n_u_me __pyx_string_tab[860]
#define __pyx_n_u_mercator __pyx_string_tab[861]
#define __pyx_n_u_message __pyx_string_tab[862]
#define __pyx_n_u_meta __pyx_string_tab[863]
#define __pyx_n_u_metaclass __pyx_string_tab[864]
#define __pyx_n_u_method __pyx_string_tab[865]
#define __pyx_n_u_microseconds __pyx_string_tab[866]
#define __pyx_n_u_midardisc __pyx_string_tab[867]
#define __pyx_n_u_midarest __pyx_string_tab[868]
#define __pyx_kp_u_missing_IP_address_in_probedef __pyx_string_tab[869]
#define __pyx_kp_u_missing_addrs __pyx_string_tab[870]
#define __pyx_kp_u_missing_probedefs __pyx_string_tab[871]
#define __pyx_kp_u_missing_schedule __pyx_string_tab[872]
#define __pyx_n_u_mode __pyx_string_tab[873]
#define __pyx_n_u_module __pyx_string_tab[874]
#define __pyx_n_u_morecb __pyx_string_tab[875]
#define __pyx_n_u_mpls __pyx_string_tab[876]
#define __pyx_n_u_mpls_count __pyx_string_tab[877]
#define __pyx_n_u_mpls_exp __pyx_string_tab[878]
#define __pyx_n_u_mpls_label __pyx_string_tab[879]
#define __pyx_n_u_mpls_lse __pyx_string_tab[880]
#define __pyx_n_u_mpls_lses __pyx_string_tab[881]
#define __pyx_n_u_mpls_s __pyx_string_tab[882]
#define __pyx_n_u_mpls_ttl __pyx_string_tab[883]
#define __pyx_n_u_mro_entries __pyx_string_tab[884]
#define __pyx_kp_u_ms __pyx_string_tab[885]
#define __pyx_n_u_ms_2 __pyx_string_tab[886]
#define __pyx_n_u_msg __pyx_string_tab[887]
#define __pyx_n_u_mtu __pyx_string_tab[888]
#define __pyx_kp_u_must_specify_destination_address __pyx_string_tab[889]
#define __pyx_kp_u_must_specify_dst_method_and_url __pyx_string_tab[890]
#define __pyx_n_u_mux __pyx_string_tab[891]
#define __pyx_n_u_mx __pyx_string_tab[892]
#define __pyx_n_u_mxes __pyx_string_tab[893]
#define __pyx_n_u_name __pyx_string_tab[894]
#define __pyx_n_u_name_2 __pyx_string_tab[895]
#define __pyx_kp_u_name_must_be_a_string __pyx_string_tab[896]
#define __pyx_n_u_near __pyx_string_tab[897]
#define __pyx_n_u_next __pyx_string_tab[898]
#define __pyx_n_u_next_2 __pyx_string_tab[899]
#define __pyx_n_u_nit __pyx_string_tab[900]
#define __pyx_kp_u_no_connected_ScamperInst __pyx_string_tab[901]
#define __pyx_kp_u_no_usable_ScamperInst __pyx_string_tab[902]
#define __pyx_n_u_node __pyx_string_tab[903]
#define __pyx_n_u_node_count __pyx_string_tab[904]
#define __pyx_n_u_nodec __pyx_string_tab[905]
#define __pyx_n_u_nodes __pyx_string_tab[906]
#define __pyx_kp_u_not_implemented __pyx_string_tab[907]
#define __pyx_kp_u_not_readable __pyx_string_tab[908]
#define __pyx_n_u_note __pyx_string_tab[909]
#define __pyx_n_u_notes __pyx_string_tab[910]
#define __pyx_kp_u_nothing_to_filter __pyx_string_tab[911]
#define __pyx_n_u_now __pyx_string_tab[912]
#define __pyx_n_u_ns __pyx_string_tab[913]
#define __pyx_n_u_nscount __pyx_string_tab[914]
#define __pyx_n_u_nses __pyx_string_tab[915]
#define __pyx_n_u_nsid __pyx_string_tab[916]
#define __pyx_n_u_nss __pyx_string_tab[917]
#define __pyx_kp_u_o __pyx_string_tab[918]
#define __pyx_n_u_o_2 __pyx_string_tab[919]
#define __pyx_n_u_o_data __pyx_string_tab[920]
#define __pyx_n_u_o_type __pyx_string_tab[921]
#define __pyx_n_u_obj __pyx_string_tab[922]
#define __pyx_n_u_object __pyx_string_tab[923]
#define __pyx_n_u_onion __pyx_string_tab[924]
#define __pyx_n_u_opt __pyx_string_tab[925]
#define __pyx_n_u_os __pyx_string_tab[926]
#define __pyx_n_u_out __pyx_string_tab[927]
#define __pyx_n_u_outfile __pyx_string_tab[928]
#define __pyx_kp_u_outfile_not_ScamperFile __pyx_string_tab[929]
#define __pyx_kp_u_outfile_not_opened_in_write_mode __pyx_string_tab[930]
#define __pyx_kp_u_p __pyx_string_tab[931]
#define __pyx_kp_u_p_2 __pyx_string_tab[932]
#define __pyx_n_u_p_3 __pyx_string_tab[933]
#define __pyx_kp_u_p_P __pyx_string_tab[934]
#define __pyx_n_u_param __pyx_string_tab[935]
#define __pyx_n_u_path __pyx_string_tab[936]
#define __pyx_n_u_payload __pyx_string_tab[937]
#define __pyx_n_u_pc __pyx_string_tab[938]
#define __pyx_n_u_pd __pyx_string_tab[939]
#define __pyx_n_u_pf __pyx_string_tab[940]
#define __pyx_n_u_pi __pyx_string_tab[941]
#define __pyx_n_u_ping __pyx_string_tab[942]
#define __pyx_n_u_ping_2 __pyx_string_tab[943]
#define __pyx_n_u_pkt __pyx_string_tab[944]
#define __pyx_n_u_place __pyx_string_tab[945]
#define __pyx_n_u_pmtud __pyx_string_tab[946]
#define __pyx_n_u_poll __pyx_string_tab[947]
#define __pyx_n_u_pop __pyx_string_tab[948]
#define __pyx_n_u_port __pyx_string_tab[949]
#define __pyx_n_u_prefixlen __pyx_string_tab[950]
#define __pyx_n_u_prefixscan __pyx_string_tab[951]
#define __pyx_n_u_prepare __pyx_string_tab[952]
#define __pyx_n_u_primitive __pyx_string_tab[953]
#define __pyx_n_u_probe __pyx_string_tab[954]
#define __pyx_n_u_probe_2 __pyx_string_tab[955]
#define __pyx_n_u_probe_count __pyx_string_tab[956]
#define __pyx_kp_u_probe_flowid __pyx_string_tab[957]
#define __pyx_n_u_probe_sent __pyx_string_tab[958]
#define __pyx_n_u_probec __pyx_string_tab[959]
#define __pyx_n_u_probedef __pyx_string_tab[960]
#define __pyx_n_u_probedef_count __pyx_string_tab[961]
#define __pyx_n_u_probedefs __pyx_string_tab[962]
#define __pyx_n_u_probes __pyx_string_tab[963]
#define __pyx_n_u_probeset __pyx_string_tab[964]
#define __pyx_n_u_property __pyx_string_tab[965]
#define __pyx_n_u_ptr __pyx_string_tab[966]
#define __pyx_n_u_ptrs __pyx_string_tab[967]
#define __pyx_n_u_pyx_state __pyx_string_tab[968]
#define __pyx_n_u_pyx_vtable __pyx_string_tab[969]
#define __pyx_kp_u_q __pyx_string_tab[970]
#define __pyx_n_u_qclass __pyx_string_tab[971]
#define __pyx_n_u_qname __pyx_string_tab[972]
#define __pyx_n_u_qtype __pyx_string_tab[973]
#define __pyx_n_u_qualname __pyx_string_tab[974]
#define __pyx_n_u_query __pyx_string_tab[975]
#define __pyx_n_u_query_2 __pyx_string_tab[976]
#define __pyx_n_u_queued __pyx_string_tab[977]
#define __pyx_n_u_r __pyx_string_tab[978]
#define __pyx_kp_u_r_2 __pyx_string_tab[979]
#define __pyx_kp_u_r_3 __pyx_string_tab[980]
#define __pyx_n_u_radargun __pyx_string_tab[981]
#define __pyx_n_u_range __pyx_string_tab[982]
#define __pyx_n_u_rc __pyx_string_tab[983]
#define __pyx_n_u_rclass __pyx_string_tab[984]
#define __pyx_n_u_rcode __pyx_string_tab[985]
#define __pyx_n_u_rcode_num __pyx_string_tab[986]
#define __pyx_n_u_rd __pyx_string_tab[987]
#define __pyx_n_u_re __pyx_string_tab[988]
#define __pyx_n_u_read __pyx_string_tab[989]
#define __pyx_n_u_rec __pyx_string_tab[990]
#define __pyx_n_u_recordroute __pyx_string_tab[991]
#define __pyx_n_u_reduce __pyx_string_tab[992]
#define __pyx_n_u_reduce_cython __pyx_string_tab[993]
#define __pyx_n_u_reduce_ex __pyx_string_tab[994]
#define __pyx_n_u_remote __pyx_string_tab[995]
#define __pyx_n_u_remote_dir __pyx_string_tab[996]
#define __pyx_n_u_remove __pyx_string_tab[997]
#define __pyx_n_u_replies __pyx_string_tab[998]
#define __pyx_n_u_reply __pyx_string_tab[999]
#define __pyx_n_u_reply_count __pyx_string_tab[1000]
#define __pyx_n_u_replyc __pyx_string_tab[1001]
#define __pyx_n_u_reserved __pyx_string_tab[1002]
#define __pyx_n_u_response_hdr_byname __pyx_string_tab[1003]
#define __pyx_n_u_responses __pyx_string_tab[1004]
#define __pyx_n_u_rg __pyx_string_tab[1005]
#define __pyx_n_u_ri __pyx_string_tab[1006]
#define __pyx_n_u_rounds __pyx_string_tab[1007]
#define __pyx_kp_u_rounds_not_an_integer __pyx_string_tab[1008]
#define __pyx_n_u_rr __pyx_string_tab[1009]
#define __pyx_n_u_rrtl __pyx_string_tab[1010]
#define __pyx_n_u_rrtype __pyx_string_tab[1011]
#define __pyx_n_u_rrtypes __pyx_string_tab[1012]
#define __pyx_n_u_rrtypes_2 __pyx_string_tab[1013]
#define __pyx_n_u_rtr __pyx_string_tab[1014]
#define __pyx_n_u_rtt __pyx_string_tab[1015]
#define __pyx_n_u_rtype __pyx_string_tab[1016]
#define __pyx_n_u_rx __pyx_string_tab[1017]
#define __pyx_kp_u_s __pyx_string_tab[1018]
#define __pyx_n_u_s_2 __pyx_string_tab[1019]
#define __pyx_n_u_sa __pyx_string_tab[1020]
#define __pyx_n_u_sb __pyx_string_tab[1021]
#define __pyx_n_u_scamper __pyx_string_tab[1022]
#define __pyx_n_u_schedule __pyx_string_tab[1023]
#define __pyx_n_u_search __pyx_string_tab[1024]
#define __pyx_n_u_seconds __pyx_string_tab[1025]
#define __pyx_n_u_section __pyx_string_tab[1026]
#define __pyx_n_u_section_2 __pyx_string_tab[1027]
#define __pyx_n_u_seen __pyx_string_tab[1028]
#define __pyx_n_u_self __pyx_string_tab[1029]
#define __pyx_kp_u_self__c_cannot_be_converted_to_a __pyx_string_tab[1030]
#define __pyx_kp_u_self__c_self__c_f_self__c_rb_can __pyx_string_tab[1031]
#define __pyx_kp_u_self__c_self__c_i_cannot_be_conv __pyx_string_tab[1032]
#define __pyx_kp_u_self__c_self__c_s_cannot_be_conv __pyx_string_tab[1033]
#define __pyx_kp_u_self__c_self__c_synctask_cannot __pyx_string_tab[1034]
#define __pyx_kp_u_self__c_sf_self__c_sff_cannot_be __pyx_string_tab[1035]
#define __pyx_kp_u_self__p_self__r_cannot_be_conver __pyx_string_tab[1036]
#define __pyx_n_u_send __pyx_string_tab[1037]
#define __pyx_kp_u_seq __pyx_string_tab[1038]
#define __pyx_n_u_server __pyx_string_tab[1039]
#define __pyx_n_u_set_name __pyx_string_tab[1040]
#define __pyx_n_u_setstate __pyx_string_tab[1041]
#define __pyx_n_u_setstate_cython __pyx_string_tab[1042]
#define __pyx_n_u_shortname __pyx_string_tab[1043]
#define __pyx_n_u_size __pyx_string_tab[1044]
#define __pyx_kp_u_size_2 __pyx_string_tab[1045]
#define __pyx_n_u_sniff __pyx_string_tab[1046]
#define __pyx_kp_u_sniff_S __pyx_string_tab[1047]
#define __pyx_n_u_soa __pyx_string_tab[1048]
#define __pyx_n_u_spec __pyx_string_tab[1049]
#define __pyx_kp_u_specify_a_ScamperInst __pyx_string_tab[1050]
#define __pyx_kp_u_specify_method_when_specifying_a __pyx_string_tab[1051]
#define __pyx_kp_u_specify_method_when_specifying_t __pyx_string_tab[1052]
#define __pyx_n_u_sport __pyx_string_tab[1053]
#define __pyx_kp_u_sport_2 __pyx_string_tab[1054]
#define __pyx_kp_u_sport_invalid_for_method __pyx_string_tab[1055]
#define __pyx_n_u_squeries __pyx_string_tab[1056]
#define __pyx_n_u_src __pyx_string_tab[1057]
#define __pyx_kp_u_src_2 __pyx_string_tab[1058]
#define __pyx_n_u_st __pyx_string_tab[1059]
#define __pyx_n_u_st_mode __pyx_string_tab[1060]
#define __pyx_n_u_start __pyx_string_tab[1061]
#define __pyx_n_u_startat __pyx_string_tab[1062]
#define __pyx_kp_u_startat_not_a_datetime __pyx_string_tab[1063]
#define __pyx_n_u_startswith __pyx_string_tab[1064]
#define __pyx_n_u_stat __pyx_string_tab[1065]
#define __pyx_n_u_stats __pyx_string_tab[1066]
#define __pyx_n_u_stop __pyx_string_tab[1067]
#define __pyx_n_u_stop_count __pyx_string_tab[1068]
#define __pyx_n_u_stop_hop __pyx_string_tab[1069]
#define __pyx_n_u_str __pyx_string_tab[1070]
#define __pyx_n_u_str_2 __pyx_string_tab[1071]
#define __pyx_kp_u_stringsource __pyx_string_tab[1072]
#define __pyx_n_u_super __pyx_string_tab[1073]
#define __pyx_n_u_svcb __pyx_string_tab[1074]
#define __pyx_n_u_sync __pyx_string_tab[1075]
#define __pyx_kp_u_t __pyx_string_tab[1076]
#define __pyx_kp_u_t_2 __pyx_string_tab[1077]
#define __pyx_n_u_t_3 __pyx_string_tab[1078]
#define __pyx_n_u_t_flags __pyx_string_tab[1079]
#define __pyx_n_u_task __pyx_string_tab[1080]
#define __pyx_n_u_tasks __pyx_string_tab[1081]
#define __pyx_n_u_tbit __pyx_string_tab[1082]
#define __pyx_n_u_tcp __pyx_string_tab[1083]
#define __pyx_n_u_tcp_ack __pyx_string_tab[1084]
#define __pyx_kp_u_tcp_ack_2 __pyx_string_tab[1085]
#define __pyx_kp_u_tcp_rst __pyx_string_tab[1086]
#define __pyx_n_u_tcp_seq __pyx_string_tab[1087]
#define __pyx_kp_u_tcp_syn __pyx_string_tab[1088]
#define __pyx_n_u_test __pyx_string_tab[1089]
#define __pyx_n_u_text __pyx_string_tab[1090]
#define __pyx_n_u_throw __pyx_string_tab[1091]
#define __pyx_n_u_time __pyx_string_tab[1092]
#define __pyx_kp_u_time_2 __pyx_string_tab[1093]
#define __pyx_n_u_timedelta __pyx_string_tab[1094]
#define __pyx_n_u_timeout __pyx_string_tab[1095]
#define __pyx_n_u_timestamp __pyx_string_tab[1096]
#define __pyx_n_u_timezone __pyx_string_tab[1097]
#define __pyx_n_u_to_json __pyx_string_tab[1098]
#define __pyx_n_u_tos __pyx_string_tab[1099]
#define __pyx_n_u_total_seconds __pyx_string_tab[1100]
#define __pyx_n_u_trace __pyx_string_tab[1101]
#define __pyx_n_u_trace_2 __pyx_string_tab[1102]
#define __pyx_n_u_tracelb __pyx_string_tab[1103]
#define __pyx_n_u_transmit_hdr_byname __pyx_string_tab[1104]
#define __pyx_kp_u_ttl __pyx_string_tab[1105]
#define __pyx_kp_u_ttl_2 __pyx_string_tab[1106]
#define __pyx_n_u_ttl_3 __pyx_string_tab[1107]
#define __pyx_kp_u_ttl_4 __pyx_string_tab[1108]
#define __pyx_n_u_tv __pyx_string_tab[1109]
#define __pyx_n_u_tv_ptr __pyx_string_tab[1110]
#define __pyx_kp_u_tx __pyx_string_tab[1111]
#define __pyx_n_u_tx_2 __pyx_string_tab[1112]
#define __pyx_n_u_txt __pyx_string_tab[1113]
#define __pyx_kp_u_txt_2 __pyx_string_tab[1114]
#define __pyx_n_u_txts __pyx_string_tab[1115]
#define __pyx_n_u_typea __pyx_string_tab[1116]
#define __pyx_n_u_typec __pyx_string_tab[1117]
#define __pyx_n_u_types __pyx_string_tab[1118]
#define __pyx_n_u_tzinfo __pyx_string_tab[1119]
#define __pyx_kp_u_u __pyx_string_tab[1120]
#define __pyx_n_u_u_2 __pyx_string_tab[1121]
#define __pyx_n_u_udp __pyx_string_tab[1122]
#define __pyx_n_u_udpprobe __pyx_string_tab[1123]
#define __pyx_n_u_udpsize __pyx_string_tab[1124]
#define __pyx_kp_u_unexpected_IP_address_in_probede __pyx_string_tab[1125]
#define __pyx_kp_u_unexpected_object_type __pyx_string_tab[1126]
#define __pyx_kp_u_unhandled_object_type __pyx_string_tab[1127]
#define __pyx_n_u_unix __pyx_string_tab[1128]
#define __pyx_kp_u_unknown_method __pyx_string_tab[1129]
#define __pyx_n_u_until __pyx_string_tab[1130]
#define __pyx_kp_u_until_is_not_a_datetime __pyx_string_tab[1131]
#define __pyx_n_u_up __pyx_string_tab[1132]
#define __pyx_n_u_up_2 __pyx_string_tab[1133]
#define __pyx_n_u_upper __pyx_string_tab[1134]
#define __pyx_n_u_url __pyx_string_tab[1135]
#define __pyx_n_u_userid __pyx_string_tab[1136]
#define __pyx_kp_u_userid_not_an_integer __pyx_string_tab[1137]
#define __pyx_n_u_utc __pyx_string_tab[1138]
#define __pyx_n_u_value __pyx_string_tab[1139]
#define __pyx_n_u_vp __pyx_string_tab[1140]
#define __pyx_n_u_vp_c __pyx_string_tab[1141]
#define __pyx_n_u_vps __pyx_string_tab[1142]
#define __pyx_kp_u_vps_containts_non_ScamperVp __pyx_string_tab[1143]
#define __pyx_kp_u_vps_list_containts_non_ScamperVp __pyx_string_tab[1144]
#define __pyx_n_u_vpset __pyx_string_tab[1145]
#define __pyx_n_u_w __pyx_string_tab[1146]
#define __pyx_kp_u_w_2 __pyx_string_tab[1147]
#define __pyx_n_u_wait_probe __pyx_string_tab[1148]
#define __pyx_kp_u_wait_probe_must_be_at_least_1ms __pyx_string_tab[1149]
#define __pyx_kp_u_wait_probe_must_be_greater_than __pyx_string_tab[1150]
#define __pyx_n_u_wait_round __pyx_string_tab[1151]
#define __pyx_kp_u_wait_round_must_be_at_least_1ms __pyx_string_tab[1152]
#define __pyx_kp_u_wait_round_must_be_greater_than __pyx_string_tab[1153]
#define __pyx_n_u_wait_timeout __pyx_string_tab[1154]
#define __pyx_kp_u_wait_timeout_must_be_at_least_1s __pyx_string_tab[1155]
#define __pyx_n_u_warts __pyx_string_tab[1156]
#define __pyx_kp_u_warts_bz2 __pyx_string_tab[1157]
#define __pyx_kp_u_warts_gz __pyx_string_tab[1158]
#define __pyx_kp_u_warts_xz __pyx_string_tab[1159]
#define __pyx_n_u_write __pyx_string_tab[1160]
#define __pyx_n_u_x __pyx_string_tab[1161]
#define __pyx_n_u_x_2 __pyx_string_tab[1162]
#define __pyx_kp_u_xz __pyx_string_tab[1163]
#define __pyx_kp_u_z __pyx_string_tab[1164]
/* #### Code section: module_state_clear ### */
#if CYTHON_USE_MODULE_STATE
static CYTHON_SMALL_CODE int __pyx_m_clear(PyObject *m) {
  __pyx_mstatetype *clear_module_state = __Pyx_PyModule_GetState(m);
  if (!clear_module_state) return 0;
  Py_CLEAR(clear_module_state->__pyx_d);
  Py_CLEAR(clear_module_state->__pyx_b);
  Py_CLEAR(clear_module_state->__pyx_cython_runtime);
  Py_CLEAR(clear_module_state->__pyx_empty_tuple);
  Py_CLEAR(clear_module_state->__pyx_empty_bytes);
  Py_CLEAR(clear_module_state->__pyx_empty_unicode);
  #ifdef __Pyx_CyFunction_USED
  Py_CLEAR(clear_module_state->__pyx_CyFunctionType);
  #endif
  #ifdef __Pyx_FusedFunction_USED
  Py_CLEAR(clear_module_state->__pyx_FusedFunctionType);
  #endif
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __Pyx_State_RemoveModule(NULL);
  #endif
  Py_CLEAR(clear_module_state->__pyx_ptype_7cpython_4type_type);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperAddr);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperAddr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperList);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperList);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperCycle);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperCycle);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperIcmpExt);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperIcmpExt);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperIcmpExts);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperIcmpExts);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTraceHop);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTraceHop);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTracePmtudNote);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTracePmtudNote);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTracePmtud);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTracePmtud);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTrace);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTrace);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperPingReply);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperPingReply);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperPing);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperPing);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTracelbReply);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTracelbReply);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTracelbProbe);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTracelbProbe);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTracelbProbeset);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTracelbProbeset);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTracelbNode);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTracelbNode);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTracelbLink);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTracelbLink);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTracelb);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTracelb);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperDealiasReply);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperDealiasReply);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperDealiasMidardiscRound);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperDealiasProbedef);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperDealiasProbedef);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperDealiasProbe);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperDealiasProbe);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperDealias);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperDealias);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperNeighbourdisc);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperNeighbourdisc);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTbitPkt);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTbitPkt);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTbit);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTbit);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperSting);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperSting);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperSniffPkt);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperSniffPkt);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperSniff);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperSniff);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHostMX);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHostMX);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHostSOA);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHostSOA);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHostTXT);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHostTXT);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHostOPTElem);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHostOPTElem);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHostOPT);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHostOPT);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHostSVCBParam);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHostSVCBParam);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHostSVCB);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHostSVCB);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHostRR);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHostRR);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHostQuery);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHostQuery);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHost);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHost);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHttpBuf);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHttpBuf);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperHttp);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperHttp);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperUdpprobeReply);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperUdpprobeReply);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperUdpprobeProbe);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperUdpprobeProbe);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperUdpprobe);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperUdpprobe);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperFile);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperFile);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperCtrl);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperCtrl);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperMux);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperMux);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperVp);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperVp);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperInst);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperInst);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper_ScamperTask);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper_ScamperTask);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct__notes);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct__notes);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_1_exceptions);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_2_responses);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_2_responses);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_3_do_trace);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_4_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_5_do_tracelb);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_6_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_7_do_ping);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_8_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_9_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_10_do_ally);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_11_genexpr);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_12_do_prefixscan);
  Py_CLEAR(clear_module_state->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr);
  Py_CLEAR(clear_module_state->__pyx_type_7scamper___pyx_scope_struct_13_genexpr);
  for (int i=0; i<17; ++i) { Py_CLEAR(clear_module_state->__pyx_tuple[i]); }
  for (int i=0; i<334; ++i) { Py_CLEAR(clear_module_state->__pyx_codeobj_tab[i]); }
  for (int i=0; i<1165; ++i) { Py_CLEAR(clear_module_state->__pyx_string_tab[i]); }
  Py_CLEAR(clear_module_state->__pyx_int_0);
  Py_CLEAR(clear_module_state->__pyx_int_1);
  Py_CLEAR(clear_module_state->__pyx_int_2);
  Py_CLEAR(clear_module_state->__pyx_int_3);
  Py_CLEAR(clear_module_state->__pyx_int_4);
  Py_CLEAR(clear_module_state->__pyx_int_5);
  Py_CLEAR(clear_module_state->__pyx_int_6);
  Py_CLEAR(clear_module_state->__pyx_int_7);
  Py_CLEAR(clear_module_state->__pyx_int_8);
  Py_CLEAR(clear_module_state->__pyx_int_9);
  Py_CLEAR(clear_module_state->__pyx_int_10);
  Py_CLEAR(clear_module_state->__pyx_int_11);
  Py_CLEAR(clear_module_state->__pyx_int_12);
  Py_CLEAR(clear_module_state->__pyx_int_13);
  Py_CLEAR(clear_module_state->__pyx_int_14);
  Py_CLEAR(clear_module_state->__pyx_int_15);
  Py_CLEAR(clear_module_state->__pyx_int_16);
  Py_CLEAR(clear_module_state->__pyx_int_20);
  Py_CLEAR(clear_module_state->__pyx_int_28);
  Py_CLEAR(clear_module_state->__pyx_int_43);
  Py_CLEAR(clear_module_state->__pyx_int_44);
  Py_CLEAR(clear_module_state->__pyx_int_46);
  Py_CLEAR(clear_module_state->__pyx_int_47);
  Py_CLEAR(clear_module_state->__pyx_int_48);
  Py_CLEAR(clear_module_state->__pyx_int_128);
  Py_CLEAR(clear_module_state->__pyx_int_255);
  Py_CLEAR(clear_module_state->__pyx_int_1000);
  Py_CLEAR(clear_module_state->__pyx_int_65535);
  Py_CLEAR(clear_module_state->__pyx_int_999999);
  return 0;
}
#endif
/* #### Code section: module_state_traverse ### */
#if CYTHON_USE_MODULE_STATE
static CYTHON_SMALL_CODE int __pyx_m_traverse(PyObject *m, visitproc visit, void *arg) {
  __pyx_mstatetype *traverse_module_state = __Pyx_PyModule_GetState(m);
  if (!traverse_module_state) return 0;
  Py_VISIT(traverse_module_state->__pyx_d);
  Py_VISIT(traverse_module_state->__pyx_b);
  Py_VISIT(traverse_module_state->__pyx_cython_runtime);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_tuple);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_bytes);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_empty_unicode);
  #ifdef __Pyx_CyFunction_USED
  Py_VISIT(traverse_module_state->__pyx_CyFunctionType);
  #endif
  #ifdef __Pyx_FusedFunction_USED
  Py_VISIT(traverse_module_state->__pyx_FusedFunctionType);
  #endif
  Py_VISIT(traverse_module_state->__pyx_ptype_7cpython_4type_type);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperAddr);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperAddr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperList);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperList);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperCycle);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperCycle);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperIcmpExt);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperIcmpExt);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperIcmpExts);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperIcmpExts);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTraceHop);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTraceHop);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTracePmtudNote);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTracePmtudNote);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTracePmtud);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTracePmtud);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTrace);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTrace);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperPingReply);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperPingReply);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperPing);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperPing);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTracelbReply);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTracelbReply);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTracelbProbe);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTracelbProbe);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTracelbProbeset);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTracelbProbeset);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTracelbNode);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTracelbNode);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTracelbLink);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTracelbLink);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTracelb);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTracelb);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperDealiasReply);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperDealiasReply);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperDealiasMidardiscRound);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperDealiasProbedef);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperDealiasProbedef);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperDealiasProbe);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperDealiasProbe);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperDealias);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperDealias);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperNeighbourdisc);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperNeighbourdisc);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTbitPkt);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTbitPkt);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTbit);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTbit);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperSting);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperSting);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperSniffPkt);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperSniffPkt);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperSniff);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperSniff);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHostMX);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHostMX);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHostSOA);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHostSOA);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHostTXT);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHostTXT);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHostOPTElem);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHostOPTElem);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHostOPT);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHostOPT);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHostSVCBParam);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHostSVCBParam);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHostSVCB);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHostSVCB);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHostRR);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHostRR);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHostQuery);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHostQuery);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHost);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHost);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHttpBuf);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHttpBuf);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperHttp);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperHttp);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperUdpprobeReply);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperUdpprobeReply);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperUdpprobeProbe);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperUdpprobeProbe);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperUdpprobe);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperUdpprobe);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperFile);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperFile);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperCtrl);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperCtrl);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperMux);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperMux);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperVp);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperVp);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperInst);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperInst);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper_ScamperTask);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper_ScamperTask);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct__notes);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct__notes);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_1_exceptions);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_2_responses);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_2_responses);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_3_do_trace);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_4_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_5_do_tracelb);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_6_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_7_do_ping);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_8_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_9_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_10_do_ally);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_11_genexpr);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_12_do_prefixscan);
  Py_VISIT(traverse_module_state->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr);
  Py_VISIT(traverse_module_state->__pyx_type_7scamper___pyx_scope_struct_13_genexpr);
  for (int i=0; i<17; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_tuple[i]); }
  for (int i=0; i<334; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_codeobj_tab[i]); }
  for (int i=0; i<1165; ++i) { __Pyx_VISIT_CONST(traverse_module_state->__pyx_string_tab[i]); }
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_0);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_1);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_2);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_3);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_4);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_5);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_6);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_7);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_8);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_9);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_10);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_11);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_12);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_13);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_14);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_15);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_16);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_20);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_28);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_43);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_44);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_46);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_47);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_48);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_128);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_255);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_1000);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_65535);
  __Pyx_VISIT_CONST(traverse_module_state->__pyx_int_999999);
  return 0;
}
#endif
/* #### Code section: module_code ### */

/* "scamper.pyx":396
 *     cdef cscamper_addr.scamper_addr_t *_c
 * 
 *     def __init__(self, addr):             # <<<<<<<<<<<<<<
 *         cdef cscamper_addr.scamper_addr_t *c = NULL
 *         cdef uint8_t buf[16]
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperAddr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_11ScamperAddr_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_addr = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_addr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 396, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 396, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 396, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, i); __PYX_ERR(0, 396, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 396, __pyx_L3_error)
    }
    __pyx_v_addr = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 396, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperAddr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr___init__(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self), __pyx_v_addr);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperAddr___init__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self, PyObject *__pyx_v_addr) {
  scamper_addr_t *__pyx_v_c;
  uint8_t __pyx_v_buf[16];
  int __pyx_v_at;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_b = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  char const *__pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  uint8_t __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":397
 * 
 *     def __init__(self, addr):
 *         cdef cscamper_addr.scamper_addr_t *c = NULL             # <<<<<<<<<<<<<<
 *         cdef uint8_t buf[16]
 *         cdef int at
*/
  __pyx_v_c = NULL;

  /* "scamper.pyx":400
 *         cdef uint8_t buf[16]
 *         cdef int at
 *         if isinstance(addr, str):             # <<<<<<<<<<<<<<
 *             c = cscamper_addr.scamper_addr_fromstr(0, addr.encode('UTF-8'))
 *         elif isinstance(addr, bytes):
*/
  __pyx_t_1 = PyUnicode_Check(__pyx_v_addr); 
  if (__pyx_t_1) {

    /* "scamper.pyx":401
 *         cdef int at
 *         if isinstance(addr, str):
 *             c = cscamper_addr.scamper_addr_fromstr(0, addr.encode('UTF-8'))             # <<<<<<<<<<<<<<
 *         elif isinstance(addr, bytes):
 *             if len(addr) == 4:
*/
    __pyx_t_3 = __pyx_v_addr;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_UTF_8};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 401, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 401, __pyx_L1_error)
    __pyx_v_c = scamper_addr_fromstr(0, __pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":400
 *         cdef uint8_t buf[16]
 *         cdef int at
 *         if isinstance(addr, str):             # <<<<<<<<<<<<<<
 *             c = cscamper_addr.scamper_addr_fromstr(0, addr.encode('UTF-8'))
 *         elif isinstance(addr, bytes):
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":402
 *         if isinstance(addr, str):
 *             c = cscamper_addr.scamper_addr_fromstr(0, addr.encode('UTF-8'))
 *         elif isinstance(addr, bytes):             # <<<<<<<<<<<<<<
 *             if len(addr) == 4:
 *                 at = 1
*/
  __pyx_t_1 = PyBytes_Check(__pyx_v_addr); 
  if (__pyx_t_1) {

    /* "scamper.pyx":403
 *             c = cscamper_addr.scamper_addr_fromstr(0, addr.encode('UTF-8'))
 *         elif isinstance(addr, bytes):
 *             if len(addr) == 4:             # <<<<<<<<<<<<<<
 *                 at = 1
 *             elif len(addr) == 16:
*/
    __pyx_t_6 = PyObject_Length(__pyx_v_addr); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 403, __pyx_L1_error)
    __pyx_t_1 = (__pyx_t_6 == 4);
    if (__pyx_t_1) {

      /* "scamper.pyx":404
 *         elif isinstance(addr, bytes):
 *             if len(addr) == 4:
 *                 at = 1             # <<<<<<<<<<<<<<
 *             elif len(addr) == 16:
 *                 at = 2
*/
      __pyx_v_at = 1;

      /* "scamper.pyx":403
 *             c = cscamper_addr.scamper_addr_fromstr(0, addr.encode('UTF-8'))
 *         elif isinstance(addr, bytes):
 *             if len(addr) == 4:             # <<<<<<<<<<<<<<
 *                 at = 1
 *             elif len(addr) == 16:
*/
      goto __pyx_L4;
    }

    /* "scamper.pyx":405
 *             if len(addr) == 4:
 *                 at = 1
 *             elif len(addr) == 16:             # <<<<<<<<<<<<<<
 *                 at = 2
 *             elif len(addr) == 6:
*/
    __pyx_t_6 = PyObject_Length(__pyx_v_addr); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 405, __pyx_L1_error)
    __pyx_t_1 = (__pyx_t_6 == 16);
    if (__pyx_t_1) {

      /* "scamper.pyx":406
 *                 at = 1
 *             elif len(addr) == 16:
 *                 at = 2             # <<<<<<<<<<<<<<
 *             elif len(addr) == 6:
 *                 at = 3
*/
      __pyx_v_at = 2;

      /* "scamper.pyx":405
 *             if len(addr) == 4:
 *                 at = 1
 *             elif len(addr) == 16:             # <<<<<<<<<<<<<<
 *                 at = 2
 *             elif len(addr) == 6:
*/
      goto __pyx_L4;
    }

    /* "scamper.pyx":407
 *             elif len(addr) == 16:
 *                 at = 2
 *             elif len(addr) == 6:             # <<<<<<<<<<<<<<
 *                 at = 3
 *             else:
*/
    __pyx_t_6 = PyObject_Length(__pyx_v_addr); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 407, __pyx_L1_error)
    __pyx_t_1 = (__pyx_t_6 == 6);
    if (likely(__pyx_t_1)) {

      /* "scamper.pyx":408
 *                 at = 2
 *             elif len(addr) == 6:
 *                 at = 3             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError("expected bytes array of 4/6/16 bytes")
*/
      __pyx_v_at = 3;

      /* "scamper.pyx":407
 *             elif len(addr) == 16:
 *                 at = 2
 *             elif len(addr) == 6:             # <<<<<<<<<<<<<<
 *                 at = 3
 *             else:
*/
      goto __pyx_L4;
    }

    /* "scamper.pyx":410
 *                 at = 3
 *             else:
 *                 raise ValueError("expected bytes array of 4/6/16 bytes")             # <<<<<<<<<<<<<<
 *             for i, b in enumerate(addr):
 *                 buf[i] = b
*/
    /*else*/ {
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_7 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_expected_bytes_array_of_4_6_16_b};
        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 410, __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_ERR(0, 410, __pyx_L1_error)
    }
    __pyx_L4:;

    /* "scamper.pyx":411
 *             else:
 *                 raise ValueError("expected bytes array of 4/6/16 bytes")
 *             for i, b in enumerate(addr):             # <<<<<<<<<<<<<<
 *                 buf[i] = b
 *             c = cscamper_addr.scamper_addr_alloc(at, buf)
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __pyx_t_2 = __pyx_mstate_global->__pyx_int_0;
    if (likely(PyList_CheckExact(__pyx_v_addr)) || PyTuple_CheckExact(__pyx_v_addr)) {
      __pyx_t_7 = __pyx_v_addr; __Pyx_INCREF(__pyx_t_7);
      __pyx_t_6 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_6 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_v_addr); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 411, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_8)) {
        if (likely(PyList_CheckExact(__pyx_t_7))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_7);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 411, __pyx_L1_error)
            #endif
            if (__pyx_t_6 >= __pyx_temp) break;
          }
          __pyx_t_3 = __Pyx_PyList_GetItemRef(__pyx_t_7, __pyx_t_6);
          ++__pyx_t_6;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_7);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 411, __pyx_L1_error)
            #endif
            if (__pyx_t_6 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_6));
          #else
          __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_7, __pyx_t_6);
          #endif
          ++__pyx_t_6;
        }
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 411, __pyx_L1_error)
      } else {
        __pyx_t_3 = __pyx_t_8(__pyx_t_7);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 411, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_XDECREF_SET(__pyx_v_b, __pyx_t_3);
      __pyx_t_3 = 0;
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
      __pyx_t_3 = __Pyx_PyLong_AddObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 411, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2);
      __pyx_t_2 = __pyx_t_3;
      __pyx_t_3 = 0;

      /* "scamper.pyx":412
 *                 raise ValueError("expected bytes array of 4/6/16 bytes")
 *             for i, b in enumerate(addr):
 *                 buf[i] = b             # <<<<<<<<<<<<<<
 *             c = cscamper_addr.scamper_addr_alloc(at, buf)
 *         if c == NULL:
*/
      __pyx_t_9 = __Pyx_PyLong_As_uint8_t(__pyx_v_b); if (unlikely((__pyx_t_9 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L1_error)
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 412, __pyx_L1_error)
      (__pyx_v_buf[__pyx_t_10]) = __pyx_t_9;

      /* "scamper.pyx":411
 *             else:
 *                 raise ValueError("expected bytes array of 4/6/16 bytes")
 *             for i, b in enumerate(addr):             # <<<<<<<<<<<<<<
 *                 buf[i] = b
 *             c = cscamper_addr.scamper_addr_alloc(at, buf)
*/
    }
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":413
 *             for i, b in enumerate(addr):
 *                 buf[i] = b
 *             c = cscamper_addr.scamper_addr_alloc(at, buf)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             raise ValueError("invalid address")
*/
    __pyx_v_c = scamper_addr_alloc(__pyx_v_at, __pyx_v_buf);

    /* "scamper.pyx":402
 *         if isinstance(addr, str):
 *             c = cscamper_addr.scamper_addr_fromstr(0, addr.encode('UTF-8'))
 *         elif isinstance(addr, bytes):             # <<<<<<<<<<<<<<
 *             if len(addr) == 4:
 *                 at = 1
*/
  }
  __pyx_L3:;

  /* "scamper.pyx":414
 *                 buf[i] = b
 *             c = cscamper_addr.scamper_addr_alloc(at, buf)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid address")
 *         self._c = c
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":415
 *             c = cscamper_addr.scamper_addr_alloc(at, buf)
 *         if c == NULL:
 *             raise ValueError("invalid address")             # <<<<<<<<<<<<<<
 *         self._c = c
 * 
*/
    __pyx_t_7 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_3 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_invalid_address};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 415, __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_ERR(0, 415, __pyx_L1_error)

    /* "scamper.pyx":414
 *                 buf[i] = b
 *             c = cscamper_addr.scamper_addr_alloc(at, buf)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid address")
 *         self._c = c
*/
  }

  /* "scamper.pyx":416
 *         if c == NULL:
 *             raise ValueError("invalid address")
 *         self._c = c             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __pyx_v_self->_c = __pyx_v_c;

  /* "scamper.pyx":396
 *     cdef cscamper_addr.scamper_addr_t *_c
 * 
 *     def __init__(self, addr):             # <<<<<<<<<<<<<<
 *         cdef cscamper_addr.scamper_addr_t *c = NULL
 *         cdef uint8_t buf[16]
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperAddr.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_b);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":418
 *         self._c = c
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         cscamper_addr.scamper_addr_tostr(self._c, buf, sizeof(buf))
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_3__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperAddr_3__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_2__str__(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_2__str__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":420
 *     def __str__(self):
 *         cdef char buf[128]
 *         cscamper_addr.scamper_addr_tostr(self._c, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_addr_tostr(__pyx_v_self->_c, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":421
 *         cdef char buf[128]
 *         cscamper_addr.scamper_addr_tostr(self._c, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 421, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":418
 *         self._c = c
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         cscamper_addr.scamper_addr_tostr(self._c, buf, sizeof(buf))
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperAddr.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":423
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         cscamper_addr.scamper_addr_tostr(self._c, buf, sizeof(buf))
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_5__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperAddr_5__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_4__repr__(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_4__repr__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "scamper.pyx":425
 *     def __repr__(self):
 *         cdef char buf[128]
 *         cscamper_addr.scamper_addr_tostr(self._c, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return "ScamperAddr('" + buf.decode('UTF-8', 'strict') + "')"
 * 
*/
  (void)(scamper_addr_tostr(__pyx_v_self->_c, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":426
 *         cdef char buf[128]
 *         cscamper_addr.scamper_addr_tostr(self._c, buf, sizeof(buf))
 *         return "ScamperAddr('" + buf.decode('UTF-8', 'strict') + "')"             # <<<<<<<<<<<<<<
 * 
 *     def __format__(self, format_spec):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 426, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_ScamperAddr, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":423
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         cscamper_addr.scamper_addr_tostr(self._c, buf, sizeof(buf))
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperAddr.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":428
 *         return "ScamperAddr('" + buf.decode('UTF-8', 'strict') + "')"
 * 
 *     def __format__(self, format_spec):             # <<<<<<<<<<<<<<
 *         return format(str(self), format_spec)
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_7__format__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperAddr_7__format__ = {"__format__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_7__format__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperAddr_7__format__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_format_spec = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__format__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_format_spec,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 428, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 428, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__format__", 0) < 0) __PYX_ERR(0, 428, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__format__", 1, 1, 1, i); __PYX_ERR(0, 428, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 428, __pyx_L3_error)
    }
    __pyx_v_format_spec = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__format__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 428, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperAddr.__format__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_6__format__(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self), __pyx_v_format_spec);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_6__format__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self, PyObject *__pyx_v_format_spec) {
  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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__format__", 0);

  /* "scamper.pyx":429
 * 
 *     def __format__(self, format_spec):
 *         return format(str(self), format_spec)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_format);
  __pyx_t_3 = __pyx_builtin_format; 
  __pyx_t_4 = __Pyx_PyObject_Unicode(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_4, __pyx_v_format_spec};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":428
 *         return "ScamperAddr('" + buf.decode('UTF-8', 'strict') + "')"
 * 
 *     def __format__(self, format_spec):             # <<<<<<<<<<<<<<
 *         return format(str(self), format_spec)
 * 
*/

  /* 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_AddTraceback("scamper.ScamperAddr.__format__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":431
 *         return format(str(self), format_spec)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_addr.scamper_addr_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_11ScamperAddr_9__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_11ScamperAddr_9__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_11ScamperAddr_8__dealloc__(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_11ScamperAddr_8__dealloc__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":432
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":433
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_addr.scamper_addr_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
*/
    scamper_addr_free(__pyx_v_self->_c);

    /* "scamper.pyx":432
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":431
 *         return format(str(self), format_spec)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_addr.scamper_addr_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":435
 *             cscamper_addr.scamper_addr_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if isinstance(other, ScamperAddr):
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, (<ScamperAddr>other)._c)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_11__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperAddr_11__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_10__richcmp__(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_10__richcmp__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  int __pyx_v_x;
  scamper_addr_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  char const *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__richcmp__", 0);

  /* "scamper.pyx":436
 * 
 *     def __richcmp__(self, other, int op):
 *         if isinstance(other, ScamperAddr):             # <<<<<<<<<<<<<<
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, (<ScamperAddr>other)._c)
 *         elif isinstance(other, str):
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr); 
  if (__pyx_t_1) {

    /* "scamper.pyx":437
 *     def __richcmp__(self, other, int op):
 *         if isinstance(other, ScamperAddr):
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, (<ScamperAddr>other)._c)             # <<<<<<<<<<<<<<
 *         elif isinstance(other, str):
 *             c = cscamper_addr.scamper_addr_fromstr(0, other.encode('UTF-8'))
*/
    __pyx_v_x = scamper_addr_human_cmp(__pyx_v_self->_c, ((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_other)->_c);

    /* "scamper.pyx":436
 * 
 *     def __richcmp__(self, other, int op):
 *         if isinstance(other, ScamperAddr):             # <<<<<<<<<<<<<<
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, (<ScamperAddr>other)._c)
 *         elif isinstance(other, str):
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":438
 *         if isinstance(other, ScamperAddr):
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, (<ScamperAddr>other)._c)
 *         elif isinstance(other, str):             # <<<<<<<<<<<<<<
 *             c = cscamper_addr.scamper_addr_fromstr(0, other.encode('UTF-8'))
 *             if c == NULL:
*/
  __pyx_t_1 = PyUnicode_Check(__pyx_v_other); 
  if (__pyx_t_1) {

    /* "scamper.pyx":439
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, (<ScamperAddr>other)._c)
 *         elif isinstance(other, str):
 *             c = cscamper_addr.scamper_addr_fromstr(0, other.encode('UTF-8'))             # <<<<<<<<<<<<<<
 *             if c == NULL:
 *                 return NotImplemented
*/
    __pyx_t_3 = __pyx_v_other;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_UTF_8};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 439, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) __PYX_ERR(0, 439, __pyx_L1_error)
    __pyx_v_c = scamper_addr_fromstr(0, __pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":440
 *         elif isinstance(other, str):
 *             c = cscamper_addr.scamper_addr_fromstr(0, other.encode('UTF-8'))
 *             if c == NULL:             # <<<<<<<<<<<<<<
 *                 return NotImplemented
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, c)
*/
    __pyx_t_1 = (__pyx_v_c == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":441
 *             c = cscamper_addr.scamper_addr_fromstr(0, other.encode('UTF-8'))
 *             if c == NULL:
 *                 return NotImplemented             # <<<<<<<<<<<<<<
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, c)
 *             cscamper_addr.scamper_addr_free(c)
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_builtin_NotImplemented);
      __pyx_r = __pyx_builtin_NotImplemented;
      goto __pyx_L0;

      /* "scamper.pyx":440
 *         elif isinstance(other, str):
 *             c = cscamper_addr.scamper_addr_fromstr(0, other.encode('UTF-8'))
 *             if c == NULL:             # <<<<<<<<<<<<<<
 *                 return NotImplemented
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, c)
*/
    }

    /* "scamper.pyx":442
 *             if c == NULL:
 *                 return NotImplemented
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, c)             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_free(c)
 *         else:
*/
    __pyx_v_x = scamper_addr_human_cmp(__pyx_v_self->_c, __pyx_v_c);

    /* "scamper.pyx":443
 *                 return NotImplemented
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, c)
 *             cscamper_addr.scamper_addr_free(c)             # <<<<<<<<<<<<<<
 *         else:
 *             return NotImplemented
*/
    scamper_addr_free(__pyx_v_c);

    /* "scamper.pyx":438
 *         if isinstance(other, ScamperAddr):
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, (<ScamperAddr>other)._c)
 *         elif isinstance(other, str):             # <<<<<<<<<<<<<<
 *             c = cscamper_addr.scamper_addr_fromstr(0, other.encode('UTF-8'))
 *             if c == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":445
 *             cscamper_addr.scamper_addr_free(c)
 *         else:
 *             return NotImplemented             # <<<<<<<<<<<<<<
 *         if op == Py_EQ:
 *             return x == 0
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;
  }
  __pyx_L3:;

  /* "scamper.pyx":446
 *         else:
 *             return NotImplemented
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return x == 0
 *         if op == Py_NE:
*/
  __pyx_t_1 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_1) {

    /* "scamper.pyx":447
 *             return NotImplemented
 *         if op == Py_EQ:
 *             return x == 0             # <<<<<<<<<<<<<<
 *         if op == Py_NE:
 *             return x != 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_x == 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":446
 *         else:
 *             return NotImplemented
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return x == 0
 *         if op == Py_NE:
*/
  }

  /* "scamper.pyx":448
 *         if op == Py_EQ:
 *             return x == 0
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return x != 0
 *         if op == Py_LT:
*/
  __pyx_t_1 = (__pyx_v_op == Py_NE);
  if (__pyx_t_1) {

    /* "scamper.pyx":449
 *             return x == 0
 *         if op == Py_NE:
 *             return x != 0             # <<<<<<<<<<<<<<
 *         if op == Py_LT:
 *             return x < 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_x != 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":448
 *         if op == Py_EQ:
 *             return x == 0
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return x != 0
 *         if op == Py_LT:
*/
  }

  /* "scamper.pyx":450
 *         if op == Py_NE:
 *             return x != 0
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return x < 0
 *         if op == Py_LE:
*/
  __pyx_t_1 = (__pyx_v_op == Py_LT);
  if (__pyx_t_1) {

    /* "scamper.pyx":451
 *             return x != 0
 *         if op == Py_LT:
 *             return x < 0             # <<<<<<<<<<<<<<
 *         if op == Py_LE:
 *             return x <= 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_x < 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":450
 *         if op == Py_NE:
 *             return x != 0
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return x < 0
 *         if op == Py_LE:
*/
  }

  /* "scamper.pyx":452
 *         if op == Py_LT:
 *             return x < 0
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return x <= 0
 *         if op == Py_GT:
*/
  __pyx_t_1 = (__pyx_v_op == Py_LE);
  if (__pyx_t_1) {

    /* "scamper.pyx":453
 *             return x < 0
 *         if op == Py_LE:
 *             return x <= 0             # <<<<<<<<<<<<<<
 *         if op == Py_GT:
 *             return x > 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_x <= 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":452
 *         if op == Py_LT:
 *             return x < 0
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return x <= 0
 *         if op == Py_GT:
*/
  }

  /* "scamper.pyx":454
 *         if op == Py_LE:
 *             return x <= 0
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return x > 0
 *         if op == Py_GE:
*/
  __pyx_t_1 = (__pyx_v_op == Py_GT);
  if (__pyx_t_1) {

    /* "scamper.pyx":455
 *             return x <= 0
 *         if op == Py_GT:
 *             return x > 0             # <<<<<<<<<<<<<<
 *         if op == Py_GE:
 *             return x >= 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_x > 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 455, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":454
 *         if op == Py_LE:
 *             return x <= 0
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return x > 0
 *         if op == Py_GE:
*/
  }

  /* "scamper.pyx":456
 *         if op == Py_GT:
 *             return x > 0
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return x >= 0
 *         return NotImplemented
*/
  __pyx_t_1 = (__pyx_v_op == Py_GE);
  if (__pyx_t_1) {

    /* "scamper.pyx":457
 *             return x > 0
 *         if op == Py_GE:
 *             return x >= 0             # <<<<<<<<<<<<<<
 *         return NotImplemented
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyBool_FromLong((__pyx_v_x >= 0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":456
 *         if op == Py_GT:
 *             return x > 0
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return x >= 0
 *         return NotImplemented
*/
  }

  /* "scamper.pyx":458
 *         if op == Py_GE:
 *             return x >= 0
 *         return NotImplemented             # <<<<<<<<<<<<<<
 * 
 *     def __hash__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_builtin_NotImplemented);
  __pyx_r = __pyx_builtin_NotImplemented;
  goto __pyx_L0;

  /* "scamper.pyx":435
 *             cscamper_addr.scamper_addr_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if isinstance(other, ScamperAddr):
 *             x = cscamper_addr.scamper_addr_human_cmp(self._c, (<ScamperAddr>other)._c)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperAddr.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":460
 *         return NotImplemented
 * 
 *     def __hash__(self):             # <<<<<<<<<<<<<<
 *         cdef const uint16_t *p16 = <const uint16_t *>cscamper_addr.scamper_addr_addr_get(self._c)
 *         cdef const uint32_t *p32 = <const uint32_t *>cscamper_addr.scamper_addr_addr_get(self._c)
*/

/* Python wrapper */
static Py_hash_t __pyx_pw_7scamper_11ScamperAddr_13__hash__(PyObject *__pyx_v_self); /*proto*/
static Py_hash_t __pyx_pw_7scamper_11ScamperAddr_13__hash__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_hash_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_12__hash__(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_hash_t __pyx_pf_7scamper_11ScamperAddr_12__hash__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self) {
  uint16_t const *__pyx_v_p16;
  uint32_t const *__pyx_v_p32;
  Py_hash_t __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_hash_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__hash__", 0);

  /* "scamper.pyx":461
 * 
 *     def __hash__(self):
 *         cdef const uint16_t *p16 = <const uint16_t *>cscamper_addr.scamper_addr_addr_get(self._c)             # <<<<<<<<<<<<<<
 *         cdef const uint32_t *p32 = <const uint32_t *>cscamper_addr.scamper_addr_addr_get(self._c)
 * 
*/
  __pyx_v_p16 = ((uint16_t const *)scamper_addr_addr_get(__pyx_v_self->_c));

  /* "scamper.pyx":462
 *     def __hash__(self):
 *         cdef const uint16_t *p16 = <const uint16_t *>cscamper_addr.scamper_addr_addr_get(self._c)
 *         cdef const uint32_t *p32 = <const uint32_t *>cscamper_addr.scamper_addr_addr_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *         if cscamper_addr.scamper_addr_isipv4(self._c):
*/
  __pyx_v_p32 = ((uint32_t const *)scamper_addr_addr_get(__pyx_v_self->_c));

  /* "scamper.pyx":464
 *         cdef const uint32_t *p32 = <const uint32_t *>cscamper_addr.scamper_addr_addr_get(self._c)
 * 
 *         if cscamper_addr.scamper_addr_isipv4(self._c):             # <<<<<<<<<<<<<<
 *             return hash((p32[0]))
 *         elif cscamper_addr.scamper_addr_isipv6(self._c):
*/
  __pyx_t_1 = scamper_addr_isipv4(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":465
 * 
 *         if cscamper_addr.scamper_addr_isipv4(self._c):
 *             return hash((p32[0]))             # <<<<<<<<<<<<<<
 *         elif cscamper_addr.scamper_addr_isipv6(self._c):
 *             return hash((p32[0], p32[1], p32[2], p32[3]))
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint32_t((__pyx_v_p32[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 465, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyObject_Hash(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_hash_t)-1))) __PYX_ERR(0, 465, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_3;
    goto __pyx_L0;

    /* "scamper.pyx":464
 *         cdef const uint32_t *p32 = <const uint32_t *>cscamper_addr.scamper_addr_addr_get(self._c)
 * 
 *         if cscamper_addr.scamper_addr_isipv4(self._c):             # <<<<<<<<<<<<<<
 *             return hash((p32[0]))
 *         elif cscamper_addr.scamper_addr_isipv6(self._c):
*/
  }

  /* "scamper.pyx":466
 *         if cscamper_addr.scamper_addr_isipv4(self._c):
 *             return hash((p32[0]))
 *         elif cscamper_addr.scamper_addr_isipv6(self._c):             # <<<<<<<<<<<<<<
 *             return hash((p32[0], p32[1], p32[2], p32[3]))
 *         elif cscamper_addr.scamper_addr_isethernet(self._c):
*/
  __pyx_t_1 = scamper_addr_isipv6(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":467
 *             return hash((p32[0]))
 *         elif cscamper_addr.scamper_addr_isipv6(self._c):
 *             return hash((p32[0], p32[1], p32[2], p32[3]))             # <<<<<<<<<<<<<<
 *         elif cscamper_addr.scamper_addr_isethernet(self._c):
 *             return hash((p16[0], p16[1], p16[2]))
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint32_t((__pyx_v_p32[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyLong_From_uint32_t((__pyx_v_p32[1])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_uint32_t((__pyx_v_p32[2])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyLong_From_uint32_t((__pyx_v_p32[3])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyTuple_New(4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 467, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_2);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_2) != (0)) __PYX_ERR(0, 467, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_4);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_4) != (0)) __PYX_ERR(0, 467, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_5) != (0)) __PYX_ERR(0, 467, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_7, 3, __pyx_t_6) != (0)) __PYX_ERR(0, 467, __pyx_L1_error);
    __pyx_t_2 = 0;
    __pyx_t_4 = 0;
    __pyx_t_5 = 0;
    __pyx_t_6 = 0;
    __pyx_t_3 = PyObject_Hash(__pyx_t_7); if (unlikely(__pyx_t_3 == ((Py_hash_t)-1))) __PYX_ERR(0, 467, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_r = __pyx_t_3;
    goto __pyx_L0;

    /* "scamper.pyx":466
 *         if cscamper_addr.scamper_addr_isipv4(self._c):
 *             return hash((p32[0]))
 *         elif cscamper_addr.scamper_addr_isipv6(self._c):             # <<<<<<<<<<<<<<
 *             return hash((p32[0], p32[1], p32[2], p32[3]))
 *         elif cscamper_addr.scamper_addr_isethernet(self._c):
*/
  }

  /* "scamper.pyx":468
 *         elif cscamper_addr.scamper_addr_isipv6(self._c):
 *             return hash((p32[0], p32[1], p32[2], p32[3]))
 *         elif cscamper_addr.scamper_addr_isethernet(self._c):             # <<<<<<<<<<<<<<
 *             return hash((p16[0], p16[1], p16[2]))
 *         elif cscamper_addr.scamper_addr_isfirewire(self._c):
*/
  __pyx_t_1 = scamper_addr_isethernet(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":469
 *             return hash((p32[0], p32[1], p32[2], p32[3]))
 *         elif cscamper_addr.scamper_addr_isethernet(self._c):
 *             return hash((p16[0], p16[1], p16[2]))             # <<<<<<<<<<<<<<
 *         elif cscamper_addr.scamper_addr_isfirewire(self._c):
 *             return hash((p32[0], p32[1]))
*/
    __pyx_t_7 = __Pyx_PyLong_From_uint16_t((__pyx_v_p16[0])); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_6 = __Pyx_PyLong_From_uint16_t((__pyx_v_p16[1])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyLong_From_uint16_t((__pyx_v_p16[2])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 469, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_7);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_7) != (0)) __PYX_ERR(0, 469, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_6);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_6) != (0)) __PYX_ERR(0, 469, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_t_5) != (0)) __PYX_ERR(0, 469, __pyx_L1_error);
    __pyx_t_7 = 0;
    __pyx_t_6 = 0;
    __pyx_t_5 = 0;
    __pyx_t_3 = PyObject_Hash(__pyx_t_4); if (unlikely(__pyx_t_3 == ((Py_hash_t)-1))) __PYX_ERR(0, 469, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_3;
    goto __pyx_L0;

    /* "scamper.pyx":468
 *         elif cscamper_addr.scamper_addr_isipv6(self._c):
 *             return hash((p32[0], p32[1], p32[2], p32[3]))
 *         elif cscamper_addr.scamper_addr_isethernet(self._c):             # <<<<<<<<<<<<<<
 *             return hash((p16[0], p16[1], p16[2]))
 *         elif cscamper_addr.scamper_addr_isfirewire(self._c):
*/
  }

  /* "scamper.pyx":470
 *         elif cscamper_addr.scamper_addr_isethernet(self._c):
 *             return hash((p16[0], p16[1], p16[2]))
 *         elif cscamper_addr.scamper_addr_isfirewire(self._c):             # <<<<<<<<<<<<<<
 *             return hash((p32[0], p32[1]))
 *         return 0
*/
  __pyx_t_1 = scamper_addr_isfirewire(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":471
 *             return hash((p16[0], p16[1], p16[2]))
 *         elif cscamper_addr.scamper_addr_isfirewire(self._c):
 *             return hash((p32[0], p32[1]))             # <<<<<<<<<<<<<<
 *         return 0
 * 
*/
    __pyx_t_4 = __Pyx_PyLong_From_uint32_t((__pyx_v_p32[0])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyLong_From_uint32_t((__pyx_v_p32[1])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_4);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4) != (0)) __PYX_ERR(0, 471, __pyx_L1_error);
    __Pyx_GIVEREF(__pyx_t_5);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_5) != (0)) __PYX_ERR(0, 471, __pyx_L1_error);
    __pyx_t_4 = 0;
    __pyx_t_5 = 0;
    __pyx_t_3 = PyObject_Hash(__pyx_t_6); if (unlikely(__pyx_t_3 == ((Py_hash_t)-1))) __PYX_ERR(0, 471, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_r = __pyx_t_3;
    goto __pyx_L0;

    /* "scamper.pyx":470
 *         elif cscamper_addr.scamper_addr_isethernet(self._c):
 *             return hash((p16[0], p16[1], p16[2]))
 *         elif cscamper_addr.scamper_addr_isfirewire(self._c):             # <<<<<<<<<<<<<<
 *             return hash((p32[0], p32[1]))
 *         return 0
*/
  }

  /* "scamper.pyx":472
 *         elif cscamper_addr.scamper_addr_isfirewire(self._c):
 *             return hash((p32[0], p32[1]))
 *         return 0             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_r = 0;
  goto __pyx_L0;

  /* "scamper.pyx":460
 *         return NotImplemented
 * 
 *     def __hash__(self):             # <<<<<<<<<<<<<<
 *         cdef const uint16_t *p16 = <const uint16_t *>cscamper_addr.scamper_addr_addr_get(self._c)
 *         cdef const uint32_t *p32 = <const uint32_t *>cscamper_addr.scamper_addr_addr_get(self._c)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperAddr.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":474
 *         return 0
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperAddr from_ptr(cscamper_addr.scamper_addr_t *ptr):
 *         cdef ScamperAddr addr
*/

static struct __pyx_obj_7scamper_ScamperAddr *__pyx_f_7scamper_11ScamperAddr_from_ptr(scamper_addr_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_addr = 0;
  struct __pyx_obj_7scamper_ScamperAddr *__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("from_ptr", 0);

  /* "scamper.pyx":477
 *     cdef ScamperAddr from_ptr(cscamper_addr.scamper_addr_t *ptr):
 *         cdef ScamperAddr addr
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         addr = ScamperAddr.__new__(ScamperAddr)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":478
 *         cdef ScamperAddr addr
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         addr = ScamperAddr.__new__(ScamperAddr)
 *         addr._c = cscamper_addr.scamper_addr_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperAddr *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":477
 *     cdef ScamperAddr from_ptr(cscamper_addr.scamper_addr_t *ptr):
 *         cdef ScamperAddr addr
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         addr = ScamperAddr.__new__(ScamperAddr)
*/
  }

  /* "scamper.pyx":479
 *         if ptr == NULL:
 *             return None
 *         addr = ScamperAddr.__new__(ScamperAddr)             # <<<<<<<<<<<<<<
 *         addr._c = cscamper_addr.scamper_addr_use(ptr)
 *         return addr
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperAddr(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 479, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_addr = ((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":480
 *             return None
 *         addr = ScamperAddr.__new__(ScamperAddr)
 *         addr._c = cscamper_addr.scamper_addr_use(ptr)             # <<<<<<<<<<<<<<
 *         return addr
 * 
*/
  __pyx_v_addr->_c = scamper_addr_use(__pyx_v_ptr);

  /* "scamper.pyx":481
 *         addr = ScamperAddr.__new__(ScamperAddr)
 *         addr._c = cscamper_addr.scamper_addr_use(ptr)
 *         return addr             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_addr);
  __pyx_r = __pyx_v_addr;
  goto __pyx_L0;

  /* "scamper.pyx":474
 *         return 0
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperAddr from_ptr(cscamper_addr.scamper_addr_t *ptr):
 *         cdef ScamperAddr addr
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperAddr.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_addr);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":483
 *         return addr
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def packed(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_6packed_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperAddr_6packed_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_6packed___get__(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_6packed___get__(struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self) {
  uint8_t const *__pyx_v_p;
  size_t __pyx_v_pl;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":491
 *         :rtype: bytes
 *         """
 *         cdef const uint8_t *p = <const uint8_t *>cscamper_addr.scamper_addr_addr_get(self._c)             # <<<<<<<<<<<<<<
 *         cdef size_t pl = cscamper_addr.scamper_addr_len_get(self._c)
 *         if p == NULL or pl == 0:
*/
  __pyx_v_p = ((uint8_t const *)scamper_addr_addr_get(__pyx_v_self->_c));

  /* "scamper.pyx":492
 *         """
 *         cdef const uint8_t *p = <const uint8_t *>cscamper_addr.scamper_addr_addr_get(self._c)
 *         cdef size_t pl = cscamper_addr.scamper_addr_len_get(self._c)             # <<<<<<<<<<<<<<
 *         if p == NULL or pl == 0:
 *             return None
*/
  __pyx_v_pl = scamper_addr_len_get(__pyx_v_self->_c);

  /* "scamper.pyx":493
 *         cdef const uint8_t *p = <const uint8_t *>cscamper_addr.scamper_addr_addr_get(self._c)
 *         cdef size_t pl = cscamper_addr.scamper_addr_len_get(self._c)
 *         if p == NULL or pl == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return p[:pl]
*/
  __pyx_t_2 = (__pyx_v_p == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_pl == 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":494
 *         cdef size_t pl = cscamper_addr.scamper_addr_len_get(self._c)
 *         if p == NULL or pl == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return p[:pl]
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":493
 *         cdef const uint8_t *p = <const uint8_t *>cscamper_addr.scamper_addr_addr_get(self._c)
 *         cdef size_t pl = cscamper_addr.scamper_addr_len_get(self._c)
 *         if p == NULL or pl == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return p[:pl]
*/
  }

  /* "scamper.pyx":495
 *         if p == NULL or pl == 0:
 *             return None
 *         return p[:pl]             # <<<<<<<<<<<<<<
 * 
 *     def is_linklocal(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_p) + 0, __pyx_v_pl - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":483
 *         return addr
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def packed(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperAddr.packed.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":497
 *         return p[:pl]
 * 
 *     def is_linklocal(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in link-local address prefix 169.254.0.0/16 or
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_15is_linklocal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperAddr_14is_linklocal, "\n        is the address in link-local address prefix 169.254.0.0/16 or\n        fe80::/10?\n\n        :returns: True if the address is in one of the link-local prefixes\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperAddr_15is_linklocal = {"is_linklocal", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_15is_linklocal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_14is_linklocal};
static PyObject *__pyx_pw_7scamper_11ScamperAddr_15is_linklocal(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_linklocal (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_linklocal", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_linklocal", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_14is_linklocal(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_14is_linklocal(struct __pyx_obj_7scamper_ScamperAddr *__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("is_linklocal", 0);

  /* "scamper.pyx":505
 *         :rtype: bool
 *         """
 *         return cscamper_addr.scamper_addr_islinklocal(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_rfc1918(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_addr_islinklocal(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 505, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":497
 *         return p[:pl]
 * 
 *     def is_linklocal(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in link-local address prefix 169.254.0.0/16 or
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperAddr.is_linklocal", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":507
 *         return cscamper_addr.scamper_addr_islinklocal(self._c)
 * 
 *     def is_rfc1918(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in a private address prefix 10.0.0.0/8,
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_17is_rfc1918(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperAddr_16is_rfc1918, "\n        is the address in a private address prefix 10.0.0.0/8,\n        172.16.0.0/12, or 192.168.0.0/16?\n\n        :returns: True if the address is in one of the private address prefixes\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperAddr_17is_rfc1918 = {"is_rfc1918", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_17is_rfc1918, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_16is_rfc1918};
static PyObject *__pyx_pw_7scamper_11ScamperAddr_17is_rfc1918(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_rfc1918 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_rfc1918", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_rfc1918", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_16is_rfc1918(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_16is_rfc1918(struct __pyx_obj_7scamper_ScamperAddr *__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("is_rfc1918", 0);

  /* "scamper.pyx":515
 *         :rtype: bool
 *         """
 *         return cscamper_addr.scamper_addr_isrfc1918(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_unicast(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_addr_isrfc1918(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":507
 *         return cscamper_addr.scamper_addr_islinklocal(self._c)
 * 
 *     def is_rfc1918(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in a private address prefix 10.0.0.0/8,
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperAddr.is_rfc1918", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":517
 *         return cscamper_addr.scamper_addr_isrfc1918(self._c)
 * 
 *     def is_unicast(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in the IPv6 unicast prefix 2000::/3?
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_19is_unicast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperAddr_18is_unicast, "\n        is the address in the IPv6 unicast prefix 2000::/3?\n\n        :returns: True if the address is in the unicast prefix\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperAddr_19is_unicast = {"is_unicast", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_19is_unicast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_18is_unicast};
static PyObject *__pyx_pw_7scamper_11ScamperAddr_19is_unicast(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_unicast (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_unicast", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_unicast", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_18is_unicast(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_18is_unicast(struct __pyx_obj_7scamper_ScamperAddr *__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("is_unicast", 0);

  /* "scamper.pyx":524
 *         :rtype: bool
 *         """
 *         return cscamper_addr.scamper_addr_isunicast(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_6to4(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_addr_isunicast(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 524, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":517
 *         return cscamper_addr.scamper_addr_isrfc1918(self._c)
 * 
 *     def is_unicast(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in the IPv6 unicast prefix 2000::/3?
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperAddr.is_unicast", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":526
 *         return cscamper_addr.scamper_addr_isunicast(self._c)
 * 
 *     def is_6to4(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in the IPv6 6to4 prefix 2002::/16?
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_21is_6to4(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperAddr_20is_6to4, "\n        is the address in the IPv6 6to4 prefix 2002::/16?\n\n        :returns: True if the address is in the 6to4 prefix\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperAddr_21is_6to4 = {"is_6to4", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_21is_6to4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_20is_6to4};
static PyObject *__pyx_pw_7scamper_11ScamperAddr_21is_6to4(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_6to4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_6to4", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_6to4", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_20is_6to4(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_20is_6to4(struct __pyx_obj_7scamper_ScamperAddr *__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("is_6to4", 0);

  /* "scamper.pyx":533
 *         :rtype: bool
 *         """
 *         return cscamper_addr.scamper_addr_is6to4(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_reserved(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_addr_is6to4(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":526
 *         return cscamper_addr.scamper_addr_isunicast(self._c)
 * 
 *     def is_6to4(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in the IPv6 6to4 prefix 2002::/16?
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperAddr.is_6to4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":535
 *         return cscamper_addr.scamper_addr_is6to4(self._c)
 * 
 *     def is_reserved(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in one of the reserved prefixes 0.0.0.0/8,
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_23is_reserved(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperAddr_22is_reserved, "\n        is the address in one of the reserved prefixes 0.0.0.0/8,\n        10.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16,\n        172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.88.99.0/24,\n        192.168.0.0/16, 198.18.0.0/15, 198.51.100.0/24, 203.0.113.0/24,\n        224.0.0.0/4, 240.0.0.0/4, 2002::/16, 2001::/32, 2001:2::/48,\n        2001:3::/32, 2001:4:112::/48, 2001:10::/28, 2001:20::/28,\n        or outside of 2000::/3?\n\n        :returns: True if the address is in one of these reserved prefixes\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperAddr_23is_reserved = {"is_reserved", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_23is_reserved, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_22is_reserved};
static PyObject *__pyx_pw_7scamper_11ScamperAddr_23is_reserved(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_reserved (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_reserved", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_reserved", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_22is_reserved(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_22is_reserved(struct __pyx_obj_7scamper_ScamperAddr *__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("is_reserved", 0);

  /* "scamper.pyx":548
 *         :rtype: bool
 *         """
 *         return cscamper_addr.scamper_addr_isreserved(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_ipv4(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_addr_isreserved(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 548, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":535
 *         return cscamper_addr.scamper_addr_is6to4(self._c)
 * 
 *     def is_reserved(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in one of the reserved prefixes 0.0.0.0/8,
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperAddr.is_reserved", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":550
 *         return cscamper_addr.scamper_addr_isreserved(self._c)
 * 
 *     def is_ipv4(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address an IPv4 address?
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_25is_ipv4(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperAddr_24is_ipv4, "\n        is the address an IPv4 address?\n\n        :returns: True if the address is an IPv4 address\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperAddr_25is_ipv4 = {"is_ipv4", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_25is_ipv4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_24is_ipv4};
static PyObject *__pyx_pw_7scamper_11ScamperAddr_25is_ipv4(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_ipv4 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_ipv4", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_ipv4", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_24is_ipv4(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_24is_ipv4(struct __pyx_obj_7scamper_ScamperAddr *__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("is_ipv4", 0);

  /* "scamper.pyx":557
 *         :rtype: bool
 *         """
 *         return cscamper_addr.scamper_addr_isipv4(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_ipv6(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_addr_isipv4(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 557, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":550
 *         return cscamper_addr.scamper_addr_isreserved(self._c)
 * 
 *     def is_ipv4(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address an IPv4 address?
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperAddr.is_ipv4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":559
 *         return cscamper_addr.scamper_addr_isipv4(self._c)
 * 
 *     def is_ipv6(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address an IPv6 address?
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_27is_ipv6(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperAddr_26is_ipv6, "\n        is the address an IPv6 address?\n\n        :returns: True if the address is an IPv6 address\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperAddr_27is_ipv6 = {"is_ipv6", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_27is_ipv6, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_26is_ipv6};
static PyObject *__pyx_pw_7scamper_11ScamperAddr_27is_ipv6(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_ipv6 (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_ipv6", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_ipv6", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_26is_ipv6(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_26is_ipv6(struct __pyx_obj_7scamper_ScamperAddr *__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("is_ipv6", 0);

  /* "scamper.pyx":566
 *         :rtype: bool
 *         """
 *         return cscamper_addr.scamper_addr_isipv6(self._c)             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_addr_isipv6(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":559
 *         return cscamper_addr.scamper_addr_isipv4(self._c)
 * 
 *     def is_ipv6(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address an IPv6 address?
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperAddr.is_ipv6", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_29__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperAddr_29__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_29__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperAddr_29__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_28__reduce_cython__(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_28__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperAddr.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperAddr_31__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperAddr_31__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_31__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperAddr_31__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperAddr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperAddr_30__setstate_cython__(((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperAddr_30__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperAddr.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":579
 *     cdef cscamper_list.scamper_list_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperList_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_11ScamperList_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_11ScamperList___init__(((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperList___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperList *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":580
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 580, __pyx_L1_error)

  /* "scamper.pyx":579
 *     cdef cscamper_list.scamper_list_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperList.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":582
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_list.scamper_list_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_11ScamperList_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_11ScamperList_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_11ScamperList_2__dealloc__(((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_11ScamperList_2__dealloc__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":583
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_list.scamper_list_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":584
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_list.scamper_list_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
*/
    scamper_list_free(__pyx_v_self->_c);

    /* "scamper.pyx":583
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_list.scamper_list_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":582
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_list.scamper_list_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":586
 *             cscamper_list.scamper_list_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperList):
 *             return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperList_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperList_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperList_4__richcmp__(((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperList_4__richcmp__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  int __pyx_v_x;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__richcmp__", 0);

  /* "scamper.pyx":587
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperList):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         x = cscamper_list.scamper_list_cmp(self._c, (<ScamperList>other)._c)
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperList); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "scamper.pyx":588
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperList):
 *             return NotImplemented             # <<<<<<<<<<<<<<
 *         x = cscamper_list.scamper_list_cmp(self._c, (<ScamperList>other)._c)
 *         if op == Py_EQ:
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;

    /* "scamper.pyx":587
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperList):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         x = cscamper_list.scamper_list_cmp(self._c, (<ScamperList>other)._c)
*/
  }

  /* "scamper.pyx":589
 *         if not isinstance(other, ScamperList):
 *             return NotImplemented
 *         x = cscamper_list.scamper_list_cmp(self._c, (<ScamperList>other)._c)             # <<<<<<<<<<<<<<
 *         if op == Py_EQ:
 *             return x == 0
*/
  __pyx_v_x = scamper_list_cmp(__pyx_v_self->_c, ((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_other)->_c);

  /* "scamper.pyx":590
 *             return NotImplemented
 *         x = cscamper_list.scamper_list_cmp(self._c, (<ScamperList>other)._c)
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return x == 0
 *         if op == Py_NE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_2) {

    /* "scamper.pyx":591
 *         x = cscamper_list.scamper_list_cmp(self._c, (<ScamperList>other)._c)
 *         if op == Py_EQ:
 *             return x == 0             # <<<<<<<<<<<<<<
 *         if op == Py_NE:
 *             return x != 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x == 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 591, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":590
 *             return NotImplemented
 *         x = cscamper_list.scamper_list_cmp(self._c, (<ScamperList>other)._c)
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return x == 0
 *         if op == Py_NE:
*/
  }

  /* "scamper.pyx":592
 *         if op == Py_EQ:
 *             return x == 0
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return x != 0
 *         if op == Py_LT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_NE);
  if (__pyx_t_2) {

    /* "scamper.pyx":593
 *             return x == 0
 *         if op == Py_NE:
 *             return x != 0             # <<<<<<<<<<<<<<
 *         if op == Py_LT:
 *             return x < 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x != 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 593, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":592
 *         if op == Py_EQ:
 *             return x == 0
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return x != 0
 *         if op == Py_LT:
*/
  }

  /* "scamper.pyx":594
 *         if op == Py_NE:
 *             return x != 0
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return x < 0
 *         if op == Py_LE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LT);
  if (__pyx_t_2) {

    /* "scamper.pyx":595
 *             return x != 0
 *         if op == Py_LT:
 *             return x < 0             # <<<<<<<<<<<<<<
 *         if op == Py_LE:
 *             return x <= 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x < 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 595, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":594
 *         if op == Py_NE:
 *             return x != 0
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return x < 0
 *         if op == Py_LE:
*/
  }

  /* "scamper.pyx":596
 *         if op == Py_LT:
 *             return x < 0
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return x <= 0
 *         if op == Py_GT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LE);
  if (__pyx_t_2) {

    /* "scamper.pyx":597
 *             return x < 0
 *         if op == Py_LE:
 *             return x <= 0             # <<<<<<<<<<<<<<
 *         if op == Py_GT:
 *             return x > 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x <= 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":596
 *         if op == Py_LT:
 *             return x < 0
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return x <= 0
 *         if op == Py_GT:
*/
  }

  /* "scamper.pyx":598
 *         if op == Py_LE:
 *             return x <= 0
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return x > 0
 *         if op == Py_GE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_GT);
  if (__pyx_t_2) {

    /* "scamper.pyx":599
 *             return x <= 0
 *         if op == Py_GT:
 *             return x > 0             # <<<<<<<<<<<<<<
 *         if op == Py_GE:
 *             return x >= 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x > 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 599, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":598
 *         if op == Py_LE:
 *             return x <= 0
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return x > 0
 *         if op == Py_GE:
*/
  }

  /* "scamper.pyx":600
 *         if op == Py_GT:
 *             return x > 0
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return x >= 0
 *         return NotImplemented
*/
  __pyx_t_2 = (__pyx_v_op == Py_GE);
  if (__pyx_t_2) {

    /* "scamper.pyx":601
 *             return x > 0
 *         if op == Py_GE:
 *             return x >= 0             # <<<<<<<<<<<<<<
 *         return NotImplemented
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x >= 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":600
 *         if op == Py_GT:
 *             return x > 0
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return x >= 0
 *         return NotImplemented
*/
  }

  /* "scamper.pyx":602
 *         if op == Py_GE:
 *             return x >= 0
 *         return NotImplemented             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_builtin_NotImplemented);
  __pyx_r = __pyx_builtin_NotImplemented;
  goto __pyx_L0;

  /* "scamper.pyx":586
 *             cscamper_list.scamper_list_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperList):
 *             return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperList.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":604
 *         return NotImplemented
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperList from_ptr(cscamper_list.scamper_list_t *ptr):
 *         cdef ScamperList l
*/

static struct __pyx_obj_7scamper_ScamperList *__pyx_f_7scamper_11ScamperList_from_ptr(scamper_list_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperList *__pyx_v_l = 0;
  struct __pyx_obj_7scamper_ScamperList *__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("from_ptr", 0);

  /* "scamper.pyx":607
 *     cdef ScamperList from_ptr(cscamper_list.scamper_list_t *ptr):
 *         cdef ScamperList l
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         l = ScamperList.__new__(ScamperList)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":608
 *         cdef ScamperList l
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         l = ScamperList.__new__(ScamperList)
 *         l._c = cscamper_list.scamper_list_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperList *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":607
 *     cdef ScamperList from_ptr(cscamper_list.scamper_list_t *ptr):
 *         cdef ScamperList l
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         l = ScamperList.__new__(ScamperList)
*/
  }

  /* "scamper.pyx":609
 *         if ptr == NULL:
 *             return None
 *         l = ScamperList.__new__(ScamperList)             # <<<<<<<<<<<<<<
 *         l._c = cscamper_list.scamper_list_use(ptr)
 *         return l
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperList(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperList), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 609, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_l = ((struct __pyx_obj_7scamper_ScamperList *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":610
 *             return None
 *         l = ScamperList.__new__(ScamperList)
 *         l._c = cscamper_list.scamper_list_use(ptr)             # <<<<<<<<<<<<<<
 *         return l
 * 
*/
  __pyx_v_l->_c = scamper_list_use(__pyx_v_ptr);

  /* "scamper.pyx":611
 *         l = ScamperList.__new__(ScamperList)
 *         l._c = cscamper_list.scamper_list_use(ptr)
 *         return l             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_l);
  __pyx_r = __pyx_v_l;
  goto __pyx_L0;

  /* "scamper.pyx":604
 *         return NotImplemented
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperList from_ptr(cscamper_list.scamper_list_t *ptr):
 *         cdef ScamperList l
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperList.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_l);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":613
 *         return l
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def id(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperList_2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperList_2id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperList_2id___get__(((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperList_2id___get__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":621
 *         :rtype: int
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_list.scamper_list_id_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":622
 *         """
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_list.scamper_list_id_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":621
 *         :rtype: int
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_list.scamper_list_id_get(self._c)
*/
  }

  /* "scamper.pyx":623
 *         if self._c == NULL:
 *             return None
 *         return cscamper_list.scamper_list_id_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_list_id_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":613
 *         return l
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def id(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperList.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":625
 *         return cscamper_list.scamper_list_id_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperList_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperList_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperList_4name___get__(((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperList_4name___get__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self) {
  char const *__pyx_v_c_name;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":633
 *         :rtype: string
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_name = cscamper_list.scamper_list_name_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":634
 *         """
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c_name = cscamper_list.scamper_list_name_get(self._c)
 *         if c_name == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":633
 *         :rtype: string
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_name = cscamper_list.scamper_list_name_get(self._c)
*/
  }

  /* "scamper.pyx":635
 *         if self._c == NULL:
 *             return None
 *         c_name = cscamper_list.scamper_list_name_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_name == NULL:
 *             return None
*/
  __pyx_v_c_name = scamper_list_name_get(__pyx_v_self->_c);

  /* "scamper.pyx":636
 *             return None
 *         c_name = cscamper_list.scamper_list_name_get(self._c)
 *         if c_name == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_name.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c_name == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":637
 *         c_name = cscamper_list.scamper_list_name_get(self._c)
 *         if c_name == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c_name.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":636
 *             return None
 *         c_name = cscamper_list.scamper_list_name_get(self._c)
 *         if c_name == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_name.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":638
 *         if c_name == NULL:
 *             return None
 *         return c_name.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_name); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 638, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_name, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":625
 *         return cscamper_list.scamper_list_id_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperList.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":640
 *         return c_name.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def descr(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperList_5descr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperList_5descr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperList_5descr___get__(((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperList_5descr___get__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self) {
  char const *__pyx_v_c_descr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":648
 *         :rtype: string
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_descr = cscamper_list.scamper_list_descr_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":649
 *         """
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c_descr = cscamper_list.scamper_list_descr_get(self._c)
 *         if c_descr == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":648
 *         :rtype: string
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_descr = cscamper_list.scamper_list_descr_get(self._c)
*/
  }

  /* "scamper.pyx":650
 *         if self._c == NULL:
 *             return None
 *         c_descr = cscamper_list.scamper_list_descr_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_descr == NULL:
 *             return None
*/
  __pyx_v_c_descr = scamper_list_descr_get(__pyx_v_self->_c);

  /* "scamper.pyx":651
 *             return None
 *         c_descr = cscamper_list.scamper_list_descr_get(self._c)
 *         if c_descr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_descr.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c_descr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":652
 *         c_descr = cscamper_list.scamper_list_descr_get(self._c)
 *         if c_descr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c_descr.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":651
 *             return None
 *         c_descr = cscamper_list.scamper_list_descr_get(self._c)
 *         if c_descr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_descr.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":653
 *         if c_descr == NULL:
 *             return None
 *         return c_descr.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_descr); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 653, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_descr, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":640
 *         return c_name.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def descr(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperList.descr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":655
 *         return c_descr.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def monitor(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperList_7monitor_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperList_7monitor_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperList_7monitor___get__(((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperList_7monitor___get__(struct __pyx_obj_7scamper_ScamperList *__pyx_v_self) {
  char const *__pyx_v_c_monitor;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":664
 *         :rtype: string
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_monitor = cscamper_list.scamper_list_monitor_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":665
 *         """
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c_monitor = cscamper_list.scamper_list_monitor_get(self._c)
 *         if c_monitor == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":664
 *         :rtype: string
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_monitor = cscamper_list.scamper_list_monitor_get(self._c)
*/
  }

  /* "scamper.pyx":666
 *         if self._c == NULL:
 *             return None
 *         c_monitor = cscamper_list.scamper_list_monitor_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_monitor == NULL:
 *             return None
*/
  __pyx_v_c_monitor = scamper_list_monitor_get(__pyx_v_self->_c);

  /* "scamper.pyx":667
 *             return None
 *         c_monitor = cscamper_list.scamper_list_monitor_get(self._c)
 *         if c_monitor == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_monitor.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c_monitor == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":668
 *         c_monitor = cscamper_list.scamper_list_monitor_get(self._c)
 *         if c_monitor == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c_monitor.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":667
 *             return None
 *         c_monitor = cscamper_list.scamper_list_monitor_get(self._c)
 *         if c_monitor == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_monitor.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":669
 *         if c_monitor == NULL:
 *             return None
 *         return c_monitor.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_monitor); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 669, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_monitor, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 669, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":655
 *         return c_descr.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def monitor(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperList.monitor.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperList_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperList_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperList_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperList_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperList_6__reduce_cython__(((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperList_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperList *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperList.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperList_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperList_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperList_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperList_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperList.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperList_8__setstate_cython__(((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperList_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperList *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperList.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":684
 *     cdef uint16_t _type
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_12ScamperCycle_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_12ScamperCycle_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_12ScamperCycle___init__(((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_12ScamperCycle___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":685
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 685, __pyx_L1_error)

  /* "scamper.pyx":684
 *     cdef uint16_t _type
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperCycle.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":687
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_list.scamper_cycle_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_12ScamperCycle_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_12ScamperCycle_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_12ScamperCycle_2__dealloc__(((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_12ScamperCycle_2__dealloc__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":688
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_list.scamper_cycle_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":689
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_list.scamper_cycle_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
*/
    scamper_cycle_free(__pyx_v_self->_c);

    /* "scamper.pyx":688
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_list.scamper_cycle_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":687
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_list.scamper_cycle_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":691
 *             cscamper_list.scamper_cycle_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperCycle):
 *             return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperCycle_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperCycle_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperCycle_4__richcmp__(((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperCycle_4__richcmp__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  int __pyx_v_x;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__richcmp__", 0);

  /* "scamper.pyx":692
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperCycle):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         x = cscamper_list.scamper_cycle_cmp(self._c, (<ScamperCycle>other)._c)
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperCycle); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "scamper.pyx":693
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperCycle):
 *             return NotImplemented             # <<<<<<<<<<<<<<
 *         x = cscamper_list.scamper_cycle_cmp(self._c, (<ScamperCycle>other)._c)
 *         if op == Py_EQ:
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;

    /* "scamper.pyx":692
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperCycle):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         x = cscamper_list.scamper_cycle_cmp(self._c, (<ScamperCycle>other)._c)
*/
  }

  /* "scamper.pyx":694
 *         if not isinstance(other, ScamperCycle):
 *             return NotImplemented
 *         x = cscamper_list.scamper_cycle_cmp(self._c, (<ScamperCycle>other)._c)             # <<<<<<<<<<<<<<
 *         if op == Py_EQ:
 *             return x == 0
*/
  __pyx_v_x = scamper_cycle_cmp(__pyx_v_self->_c, ((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_other)->_c);

  /* "scamper.pyx":695
 *             return NotImplemented
 *         x = cscamper_list.scamper_cycle_cmp(self._c, (<ScamperCycle>other)._c)
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return x == 0
 *         if op == Py_NE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_2) {

    /* "scamper.pyx":696
 *         x = cscamper_list.scamper_cycle_cmp(self._c, (<ScamperCycle>other)._c)
 *         if op == Py_EQ:
 *             return x == 0             # <<<<<<<<<<<<<<
 *         if op == Py_NE:
 *             return x != 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x == 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 696, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":695
 *             return NotImplemented
 *         x = cscamper_list.scamper_cycle_cmp(self._c, (<ScamperCycle>other)._c)
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return x == 0
 *         if op == Py_NE:
*/
  }

  /* "scamper.pyx":697
 *         if op == Py_EQ:
 *             return x == 0
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return x != 0
 *         if op == Py_LT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_NE);
  if (__pyx_t_2) {

    /* "scamper.pyx":698
 *             return x == 0
 *         if op == Py_NE:
 *             return x != 0             # <<<<<<<<<<<<<<
 *         if op == Py_LT:
 *             return x < 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x != 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 698, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":697
 *         if op == Py_EQ:
 *             return x == 0
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return x != 0
 *         if op == Py_LT:
*/
  }

  /* "scamper.pyx":699
 *         if op == Py_NE:
 *             return x != 0
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return x < 0
 *         if op == Py_LE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LT);
  if (__pyx_t_2) {

    /* "scamper.pyx":700
 *             return x != 0
 *         if op == Py_LT:
 *             return x < 0             # <<<<<<<<<<<<<<
 *         if op == Py_LE:
 *             return x <= 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x < 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 700, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":699
 *         if op == Py_NE:
 *             return x != 0
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return x < 0
 *         if op == Py_LE:
*/
  }

  /* "scamper.pyx":701
 *         if op == Py_LT:
 *             return x < 0
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return x <= 0
 *         if op == Py_GT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LE);
  if (__pyx_t_2) {

    /* "scamper.pyx":702
 *             return x < 0
 *         if op == Py_LE:
 *             return x <= 0             # <<<<<<<<<<<<<<
 *         if op == Py_GT:
 *             return x > 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x <= 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 702, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":701
 *         if op == Py_LT:
 *             return x < 0
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return x <= 0
 *         if op == Py_GT:
*/
  }

  /* "scamper.pyx":703
 *         if op == Py_LE:
 *             return x <= 0
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return x > 0
 *         if op == Py_GE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_GT);
  if (__pyx_t_2) {

    /* "scamper.pyx":704
 *             return x <= 0
 *         if op == Py_GT:
 *             return x > 0             # <<<<<<<<<<<<<<
 *         if op == Py_GE:
 *             return x >= 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x > 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 704, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":703
 *         if op == Py_LE:
 *             return x <= 0
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return x > 0
 *         if op == Py_GE:
*/
  }

  /* "scamper.pyx":705
 *         if op == Py_GT:
 *             return x > 0
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return x >= 0
 *         return NotImplemented
*/
  __pyx_t_2 = (__pyx_v_op == Py_GE);
  if (__pyx_t_2) {

    /* "scamper.pyx":706
 *             return x > 0
 *         if op == Py_GE:
 *             return x >= 0             # <<<<<<<<<<<<<<
 *         return NotImplemented
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x >= 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 706, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":705
 *         if op == Py_GT:
 *             return x > 0
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return x >= 0
 *         return NotImplemented
*/
  }

  /* "scamper.pyx":707
 *         if op == Py_GE:
 *             return x >= 0
 *         return NotImplemented             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_builtin_NotImplemented);
  __pyx_r = __pyx_builtin_NotImplemented;
  goto __pyx_L0;

  /* "scamper.pyx":691
 *             cscamper_list.scamper_cycle_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperCycle):
 *             return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperCycle.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":709
 *         return NotImplemented
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperCycle from_ptr(cscamper_list.scamper_cycle_t *ptr, uint16_t t):
 *         cdef ScamperCycle cycle
*/

static struct __pyx_obj_7scamper_ScamperCycle *__pyx_f_7scamper_12ScamperCycle_from_ptr(scamper_cycle_t *__pyx_v_ptr, uint16_t __pyx_v_t) {
  struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_cycle = 0;
  struct __pyx_obj_7scamper_ScamperCycle *__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("from_ptr", 0);

  /* "scamper.pyx":712
 *     cdef ScamperCycle from_ptr(cscamper_list.scamper_cycle_t *ptr, uint16_t t):
 *         cdef ScamperCycle cycle
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         cycle = ScamperCycle.__new__(ScamperCycle)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":713
 *         cdef ScamperCycle cycle
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         cycle = ScamperCycle.__new__(ScamperCycle)
 *         cycle._type = t
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperCycle *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":712
 *     cdef ScamperCycle from_ptr(cscamper_list.scamper_cycle_t *ptr, uint16_t t):
 *         cdef ScamperCycle cycle
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         cycle = ScamperCycle.__new__(ScamperCycle)
*/
  }

  /* "scamper.pyx":714
 *         if ptr == NULL:
 *             return None
 *         cycle = ScamperCycle.__new__(ScamperCycle)             # <<<<<<<<<<<<<<
 *         cycle._type = t
 *         cycle._c = cscamper_list.scamper_cycle_use(ptr)
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperCycle(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCycle), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 714, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_cycle = ((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":715
 *             return None
 *         cycle = ScamperCycle.__new__(ScamperCycle)
 *         cycle._type = t             # <<<<<<<<<<<<<<
 *         cycle._c = cscamper_list.scamper_cycle_use(ptr)
 *         return cycle
*/
  __pyx_v_cycle->_type = __pyx_v_t;

  /* "scamper.pyx":716
 *         cycle = ScamperCycle.__new__(ScamperCycle)
 *         cycle._type = t
 *         cycle._c = cscamper_list.scamper_cycle_use(ptr)             # <<<<<<<<<<<<<<
 *         return cycle
 * 
*/
  __pyx_v_cycle->_c = scamper_cycle_use(__pyx_v_ptr);

  /* "scamper.pyx":717
 *         cycle._type = t
 *         cycle._c = cscamper_list.scamper_cycle_use(ptr)
 *         return cycle             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_cycle);
  __pyx_r = __pyx_v_cycle;
  goto __pyx_L0;

  /* "scamper.pyx":709
 *         return NotImplemented
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperCycle from_ptr(cscamper_list.scamper_cycle_t *ptr, uint16_t t):
 *         cdef ScamperCycle cycle
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperCycle.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_cycle);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":719
 *         return cycle
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def id(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperCycle_2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperCycle_2id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperCycle_2id___get__(((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperCycle_2id___get__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":727
 *         :rtype: int
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_list.scamper_cycle_id_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":728
 *         """
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_list.scamper_cycle_id_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":727
 *         :rtype: int
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_list.scamper_cycle_id_get(self._c)
*/
  }

  /* "scamper.pyx":729
 *         if self._c == NULL:
 *             return None
 *         return cscamper_list.scamper_cycle_id_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_cycle_id_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 729, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":719
 *         return cycle
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def id(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperCycle.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":731
 *         return cscamper_list.scamper_cycle_id_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperCycle_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperCycle_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperCycle_5start___get__(((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperCycle_5start___get__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self) {
  time_t __pyx_v_c_start;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":739
 *         :rtype: datetime
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_start = cscamper_list.scamper_cycle_start_time_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":740
 *         """
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c_start = cscamper_list.scamper_cycle_start_time_get(self._c)
 *         if c_start == 0:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":739
 *         :rtype: datetime
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_start = cscamper_list.scamper_cycle_start_time_get(self._c)
*/
  }

  /* "scamper.pyx":741
 *         if self._c == NULL:
 *             return None
 *         c_start = cscamper_list.scamper_cycle_start_time_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_start == 0:
 *             return None
*/
  __pyx_v_c_start = scamper_cycle_start_time_get(__pyx_v_self->_c);

  /* "scamper.pyx":742
 *             return None
 *         c_start = cscamper_list.scamper_cycle_start_time_get(self._c)
 *         if c_start == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c_start)
*/
  __pyx_t_1 = (__pyx_v_c_start == 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":743
 *         c_start = cscamper_list.scamper_cycle_start_time_get(self._c)
 *         if c_start == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c_start)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], 0,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":742
 *             return None
 *         c_start = cscamper_list.scamper_cycle_start_time_get(self._c)
 *         if c_start == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c_start)
*/
  }

  /* "scamper.pyx":744
 *         if c_start == 0:
 *             return None
 *         t = time.gmtime(c_start)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], 0,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c_start); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 744, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":745
 *             return None
 *         t = time.gmtime(c_start)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], 0,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 745, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "scamper.pyx":746
 *         t = time.gmtime(c_start)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], 0,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 746, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_mstate_global->__pyx_int_0};
    __pyx_t_13 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_12, __pyx_t_13, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 745, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_13);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":731
 *         return cscamper_list.scamper_cycle_id_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("scamper.ScamperCycle.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":748
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperCycle_4stop_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperCycle_4stop_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperCycle_4stop___get__(((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperCycle_4stop___get__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self) {
  time_t __pyx_v_c_stop;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":756
 *         :rtype: datetime
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_stop = cscamper_list.scamper_cycle_stop_time_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":757
 *         """
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c_stop = cscamper_list.scamper_cycle_stop_time_get(self._c)
 *         if c_stop == 0:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":756
 *         :rtype: datetime
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_stop = cscamper_list.scamper_cycle_stop_time_get(self._c)
*/
  }

  /* "scamper.pyx":758
 *         if self._c == NULL:
 *             return None
 *         c_stop = cscamper_list.scamper_cycle_stop_time_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_stop == 0:
 *             return None
*/
  __pyx_v_c_stop = scamper_cycle_stop_time_get(__pyx_v_self->_c);

  /* "scamper.pyx":759
 *             return None
 *         c_stop = cscamper_list.scamper_cycle_stop_time_get(self._c)
 *         if c_stop == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c_stop)
*/
  __pyx_t_1 = (__pyx_v_c_stop == 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":760
 *         c_stop = cscamper_list.scamper_cycle_stop_time_get(self._c)
 *         if c_stop == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c_stop)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], 999999,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":759
 *             return None
 *         c_stop = cscamper_list.scamper_cycle_stop_time_get(self._c)
 *         if c_stop == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c_stop)
*/
  }

  /* "scamper.pyx":761
 *         if c_stop == 0:
 *             return None
 *         t = time.gmtime(c_stop)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], 999999,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c_stop); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 761, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":762
 *             return None
 *         t = time.gmtime(c_stop)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], 999999,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 762, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);

  /* "scamper.pyx":763
 *         t = time.gmtime(c_stop)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], 999999,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 763, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_mstate_global->__pyx_int_999999};
    __pyx_t_13 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_13);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_12, __pyx_t_13, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 762, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_13);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 762, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":748
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_AddTraceback("scamper.ScamperCycle.stop.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":765
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def hostname(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperCycle_8hostname_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperCycle_8hostname_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperCycle_8hostname___get__(((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperCycle_8hostname___get__(struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self) {
  char const *__pyx_v_c_hostname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":774
 *         :rtype: string
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_hostname = cscamper_list.scamper_cycle_hostname_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":775
 *         """
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c_hostname = cscamper_list.scamper_cycle_hostname_get(self._c)
 *         if c_hostname == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":774
 *         :rtype: string
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c_hostname = cscamper_list.scamper_cycle_hostname_get(self._c)
*/
  }

  /* "scamper.pyx":776
 *         if self._c == NULL:
 *             return None
 *         c_hostname = cscamper_list.scamper_cycle_hostname_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_hostname == NULL:
 *             return None
*/
  __pyx_v_c_hostname = scamper_cycle_hostname_get(__pyx_v_self->_c);

  /* "scamper.pyx":777
 *             return None
 *         c_hostname = cscamper_list.scamper_cycle_hostname_get(self._c)
 *         if c_hostname == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_hostname.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c_hostname == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":778
 *         c_hostname = cscamper_list.scamper_cycle_hostname_get(self._c)
 *         if c_hostname == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c_hostname.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":777
 *             return None
 *         c_hostname = cscamper_list.scamper_cycle_hostname_get(self._c)
 *         if c_hostname == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_hostname.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":779
 *         if c_hostname == NULL:
 *             return None
 *         return c_hostname.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_hostname); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 779, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_hostname, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":765
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def hostname(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperCycle.hostname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperCycle_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_12ScamperCycle_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperCycle_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_12ScamperCycle_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperCycle_6__reduce_cython__(((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperCycle_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCycle.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperCycle_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_12ScamperCycle_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperCycle_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_12ScamperCycle_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCycle.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_12ScamperCycle_8__setstate_cython__(((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperCycle_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCycle *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCycle.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":790
 *     accessor methods for an MPLS ICMP extension
 *     """
 *     def __init__(self, ext, i):             # <<<<<<<<<<<<<<
 *         """
 *         :param ScamperIcmpExt ext: the extension to wrap
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_30ScamperIcmpMplsLabelStackEntry___init__, "\n        :param ScamperIcmpExt ext: the extension to wrap\n        :param int i: the entry in the stack\n        ");
static PyMethodDef __pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_30ScamperIcmpMplsLabelStackEntry___init__};
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_ext = 0;
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_ext,&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 790, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 790, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 790, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 790, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 790, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 790, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 790, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 790, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 790, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_ext = values[1];
    __pyx_v_i = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 790, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry___init__(__pyx_self, __pyx_v_self, __pyx_v_ext, __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_ext, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":795
 *         :param int i: the entry in the stack
 *         """
 *         self._ext = ext             # <<<<<<<<<<<<<<
 *         self._i = i
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2, __pyx_v_ext) < 0) __PYX_ERR(0, 795, __pyx_L1_error)

  /* "scamper.pyx":796
 *         """
 *         self._ext = ext
 *         self._i = i             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_v_i) < 0) __PYX_ERR(0, 796, __pyx_L1_error)

  /* "scamper.pyx":790
 *     accessor methods for an MPLS ICMP extension
 *     """
 *     def __init__(self, ext, i):             # <<<<<<<<<<<<<<
 *         """
 *         :param ScamperIcmpExt ext: the extension to wrap
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":798
 *         self._i = i
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         label = self._ext.mpls_label(self._i)
 *         exp = self._ext.mpls_exp(self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_3__str__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_3__str__ = {"__str__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_3__str__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_3__str__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 798, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 798, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__str__", 0) < 0) __PYX_ERR(0, 798, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__str__", 1, 1, 1, i); __PYX_ERR(0, 798, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 798, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__str__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 798, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_2__str__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_2__str__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_label = NULL;
  PyObject *__pyx_v_exp = NULL;
  PyObject *__pyx_v_ttl = NULL;
  PyObject *__pyx_v_s = 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;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6[8];
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":799
 * 
 *     def __str__(self):
 *         label = self._ext.mpls_label(self._i)             # <<<<<<<<<<<<<<
 *         exp = self._ext.mpls_exp(self._i)
 *         ttl = self._ext.mpls_ttl(self._i)
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 799, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_mpls_label, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 799, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_label = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":800
 *     def __str__(self):
 *         label = self._ext.mpls_label(self._i)
 *         exp = self._ext.mpls_exp(self._i)             # <<<<<<<<<<<<<<
 *         ttl = self._ext.mpls_ttl(self._i)
 *         s = self._ext.mpls_s(self._i)
*/
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_2};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_mpls_exp, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 800, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_exp = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":801
 *         label = self._ext.mpls_label(self._i)
 *         exp = self._ext.mpls_exp(self._i)
 *         ttl = self._ext.mpls_ttl(self._i)             # <<<<<<<<<<<<<<
 *         s = self._ext.mpls_s(self._i)
 *         return "MPLS Label=%d Exp=%d TTL=%d S=%d" % (label, exp, ttl, s)
*/
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __pyx_t_2;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_3};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_mpls_ttl, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__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;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_ttl = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":802
 *         exp = self._ext.mpls_exp(self._i)
 *         ttl = self._ext.mpls_ttl(self._i)
 *         s = self._ext.mpls_s(self._i)             # <<<<<<<<<<<<<<
 *         return "MPLS Label=%d Exp=%d TTL=%d S=%d" % (label, exp, ttl, s)
 * 
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_mpls_s, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 802, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_s = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":803
 *         ttl = self._ext.mpls_ttl(self._i)
 *         s = self._ext.mpls_s(self._i)
 *         return "MPLS Label=%d Exp=%d TTL=%d S=%d" % (label, exp, ttl, s)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_v_label), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_v_exp), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_v_ttl), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_v_s), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6[0] = __pyx_mstate_global->__pyx_kp_u_MPLS_Label;
  __pyx_t_6[1] = __pyx_t_1;
  __pyx_t_6[2] = __pyx_mstate_global->__pyx_kp_u_Exp;
  __pyx_t_6[3] = __pyx_t_3;
  __pyx_t_6[4] = __pyx_mstate_global->__pyx_kp_u_TTL;
  __pyx_t_6[5] = __pyx_t_4;
  __pyx_t_6[6] = __pyx_mstate_global->__pyx_kp_u_S;
  __pyx_t_6[7] = __pyx_t_2;
  __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_6, 8, 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 5 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2));
  if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":798
 *         self._i = i
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         label = self._ext.mpls_label(self._i)
 *         exp = self._ext.mpls_exp(self._i)
*/

  /* 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_7);
  __Pyx_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_label);
  __Pyx_XDECREF(__pyx_v_exp);
  __Pyx_XDECREF(__pyx_v_ttl);
  __Pyx_XDECREF(__pyx_v_s);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":805
 *         return "MPLS Label=%d Exp=%d TTL=%d S=%d" % (label, exp, ttl, s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def label(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_5label(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_30ScamperIcmpMplsLabelStackEntry_4label, "\n        the MPLS label for this stack entry\n\n        :returns: the MPLS label\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_5label = {"label", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_5label, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_30ScamperIcmpMplsLabelStackEntry_4label};
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_5label(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("label (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 805, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 805, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "label", 0) < 0) __PYX_ERR(0, 805, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("label", 1, 1, 1, i); __PYX_ERR(0, 805, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 805, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("label", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 805, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.label", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_4label(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_4label(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("label", 0);

  /* "scamper.pyx":813
 *         :rtype: int
 *         """
 *         return self._ext.mpls_label(self._i)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 813, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_mpls_label, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 813, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":805
 *         return "MPLS Label=%d Exp=%d TTL=%d S=%d" % (label, exp, ttl, s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def label(self):
 *         """
*/

  /* 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_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.label", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":815
 *         return self._ext.mpls_label(self._i)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def exp(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_7exp(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_30ScamperIcmpMplsLabelStackEntry_6exp, "\n        the MPLS exp bits for this stack entry\n\n        :returns: the MPLS exp bits\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_7exp = {"exp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_7exp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_30ScamperIcmpMplsLabelStackEntry_6exp};
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_7exp(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 815, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 815, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "exp", 0) < 0) __PYX_ERR(0, 815, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("exp", 1, 1, 1, i); __PYX_ERR(0, 815, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 815, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("exp", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 815, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_6exp(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_6exp(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("exp", 0);

  /* "scamper.pyx":823
 *         :rtype: int
 *         """
 *         return self._ext.mpls_exp(self._i)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_mpls_exp, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 823, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":815
 *         return self._ext.mpls_label(self._i)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def exp(self):
 *         """
*/

  /* 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_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":825
 *         return self._ext.mpls_exp(self._i)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def s(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_9s(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_30ScamperIcmpMplsLabelStackEntry_8s, "\n        the MPLS bottom-of-stack (S) bit for this stack entry\n\n        :returns: the MPLS S bit\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_9s = {"s", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_9s, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_30ScamperIcmpMplsLabelStackEntry_8s};
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_9s(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("s (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 825, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 825, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "s", 0) < 0) __PYX_ERR(0, 825, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("s", 1, 1, 1, i); __PYX_ERR(0, 825, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 825, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("s", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 825, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.s", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_8s(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_8s(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("s", 0);

  /* "scamper.pyx":833
 *         :rtype: int
 *         """
 *         return self._ext.mpls_s(self._i)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 833, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_mpls_s, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 833, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":825
 *         return self._ext.mpls_exp(self._i)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def s(self):
 *         """
*/

  /* 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_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.s", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":835
 *         return self._ext.mpls_s(self._i)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_11ttl(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_30ScamperIcmpMplsLabelStackEntry_10ttl, "\n        the MPLS TTL for this stack entry\n\n        :returns: the MPLS TTL value\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_11ttl = {"ttl", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_11ttl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_30ScamperIcmpMplsLabelStackEntry_10ttl};
static PyObject *__pyx_pw_7scamper_30ScamperIcmpMplsLabelStackEntry_11ttl(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ttl (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 835, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 835, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ttl", 0) < 0) __PYX_ERR(0, 835, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("ttl", 1, 1, 1, i); __PYX_ERR(0, 835, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 835, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ttl", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 835, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.ttl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_10ttl(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_30ScamperIcmpMplsLabelStackEntry_10ttl(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ttl", 0);

  /* "scamper.pyx":843
 *         :rtype: int
 *         """
 *         return self._ext.mpls_ttl(self._i)             # <<<<<<<<<<<<<<
 * 
 * class _ScamperIcmpMplsLabelStackIterator:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_mpls_ttl, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 843, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":835
 *         return self._ext.mpls_s(self._i)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

  /* 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_AddTraceback("scamper.ScamperIcmpMplsLabelStackEntry.ttl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":846
 * 
 * class _ScamperIcmpMplsLabelStackIterator:
 *     def __init__(self, ext):             # <<<<<<<<<<<<<<
 *         self._ext = ext
 *         self._i = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_34_ScamperIcmpMplsLabelStackIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_34_ScamperIcmpMplsLabelStackIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_34_ScamperIcmpMplsLabelStackIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_34_ScamperIcmpMplsLabelStackIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_ext = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_ext,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 846, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 846, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 846, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 846, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 846, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 846, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 846, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_ext = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 846, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperIcmpMplsLabelStackIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_34_ScamperIcmpMplsLabelStackIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_ext);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_34_ScamperIcmpMplsLabelStackIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_ext) {
  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("__init__", 0);

  /* "scamper.pyx":847
 * class _ScamperIcmpMplsLabelStackIterator:
 *     def __init__(self, ext):
 *         self._ext = ext             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         self._c = ext.mpls_count
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2, __pyx_v_ext) < 0) __PYX_ERR(0, 847, __pyx_L1_error)

  /* "scamper.pyx":848
 *     def __init__(self, ext):
 *         self._ext = ext
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         self._c = ext.mpls_count
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 848, __pyx_L1_error)

  /* "scamper.pyx":849
 *         self._ext = ext
 *         self._i = 0
 *         self._c = ext.mpls_count             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_ext, __pyx_mstate_global->__pyx_n_u_mpls_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 849, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c, __pyx_t_1) < 0) __PYX_ERR(0, 849, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":846
 * 
 * class _ScamperIcmpMplsLabelStackIterator:
 *     def __init__(self, ext):             # <<<<<<<<<<<<<<
 *         self._ext = ext
 *         self._i = 0
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper._ScamperIcmpMplsLabelStackIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":851
 *         self._c = ext.mpls_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_34_ScamperIcmpMplsLabelStackIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_34_ScamperIcmpMplsLabelStackIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_34_ScamperIcmpMplsLabelStackIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_34_ScamperIcmpMplsLabelStackIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 851, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 851, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 851, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 851, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 851, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 851, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperIcmpMplsLabelStackIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_34_ScamperIcmpMplsLabelStackIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_34_ScamperIcmpMplsLabelStackIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":852
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":851
 *         self._c = ext.mpls_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":854
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             mpls = self._ext.mpls_lse(self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_34_ScamperIcmpMplsLabelStackIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_34_ScamperIcmpMplsLabelStackIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_34_ScamperIcmpMplsLabelStackIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_34_ScamperIcmpMplsLabelStackIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 854, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 854, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 854, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 854, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 854, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperIcmpMplsLabelStackIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_34_ScamperIcmpMplsLabelStackIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_34_ScamperIcmpMplsLabelStackIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_mpls = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":855
 * 
 *     def __next__(self):
 *         if self._i < self._c:             # <<<<<<<<<<<<<<
 *             mpls = self._ext.mpls_lse(self._i)
 *             self._i += 1
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 855, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 855, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":856
 *     def __next__(self):
 *         if self._i < self._c:
 *             mpls = self._ext.mpls_lse(self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             return mpls
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ext_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 856, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 856, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_mpls_lse, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 856, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_mpls = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":857
 *         if self._i < self._c:
 *             mpls = self._ext.mpls_lse(self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             return mpls
 *         raise StopIteration
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 857, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 857, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_t_1) < 0) __PYX_ERR(0, 857, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":858
 *             mpls = self._ext.mpls_lse(self._i)
 *             self._i += 1
 *             return mpls             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_mpls);
    __pyx_r = __pyx_v_mpls;
    goto __pyx_L0;

    /* "scamper.pyx":855
 * 
 *     def __next__(self):
 *         if self._i < self._c:             # <<<<<<<<<<<<<<
 *             mpls = self._ext.mpls_lse(self._i)
 *             self._i += 1
*/
  }

  /* "scamper.pyx":859
 *             self._i += 1
 *             return mpls
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperIcmpExt:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 859, __pyx_L1_error)

  /* "scamper.pyx":854
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             mpls = self._ext.mpls_lse(self._i)
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperIcmpMplsLabelStackIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mpls);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":868
 *     cdef cscamper_icmpext.scamper_icmpext_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperIcmpExt_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_14ScamperIcmpExt_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt___init__(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperIcmpExt___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":869
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 869, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 869, __pyx_L1_error)

  /* "scamper.pyx":868
 *     cdef cscamper_icmpext.scamper_icmpext_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":871
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_icmpext.scamper_icmpext_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_14ScamperIcmpExt_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_14ScamperIcmpExt_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_14ScamperIcmpExt_2__dealloc__(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_14ScamperIcmpExt_2__dealloc__(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":872
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_icmpext.scamper_icmpext_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":873
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_icmpext.scamper_icmpext_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
*/
    scamper_icmpext_free(__pyx_v_self->_c);

    /* "scamper.pyx":872
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_icmpext.scamper_icmpext_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":871
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_icmpext.scamper_icmpext_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":875
 *             cscamper_icmpext.scamper_icmpext_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperIcmpExt):
 *             return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_4__richcmp__(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_4__richcmp__(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  int __pyx_v_x;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__richcmp__", 0);

  /* "scamper.pyx":876
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperIcmpExt):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         x = cscamper_icmpext.scamper_icmpext_cmp(self._c, (<ScamperIcmpExt>other)._c)
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExt); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "scamper.pyx":877
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperIcmpExt):
 *             return NotImplemented             # <<<<<<<<<<<<<<
 *         x = cscamper_icmpext.scamper_icmpext_cmp(self._c, (<ScamperIcmpExt>other)._c)
 *         if op == Py_EQ:
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;

    /* "scamper.pyx":876
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperIcmpExt):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         x = cscamper_icmpext.scamper_icmpext_cmp(self._c, (<ScamperIcmpExt>other)._c)
*/
  }

  /* "scamper.pyx":878
 *         if not isinstance(other, ScamperIcmpExt):
 *             return NotImplemented
 *         x = cscamper_icmpext.scamper_icmpext_cmp(self._c, (<ScamperIcmpExt>other)._c)             # <<<<<<<<<<<<<<
 *         if op == Py_EQ:
 *             return x == 0
*/
  __pyx_v_x = scamper_icmpext_cmp(__pyx_v_self->_c, ((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_other)->_c);

  /* "scamper.pyx":879
 *             return NotImplemented
 *         x = cscamper_icmpext.scamper_icmpext_cmp(self._c, (<ScamperIcmpExt>other)._c)
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return x == 0
 *         if op == Py_NE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_2) {

    /* "scamper.pyx":880
 *         x = cscamper_icmpext.scamper_icmpext_cmp(self._c, (<ScamperIcmpExt>other)._c)
 *         if op == Py_EQ:
 *             return x == 0             # <<<<<<<<<<<<<<
 *         if op == Py_NE:
 *             return x != 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x == 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 880, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":879
 *             return NotImplemented
 *         x = cscamper_icmpext.scamper_icmpext_cmp(self._c, (<ScamperIcmpExt>other)._c)
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return x == 0
 *         if op == Py_NE:
*/
  }

  /* "scamper.pyx":881
 *         if op == Py_EQ:
 *             return x == 0
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return x != 0
 *         if op == Py_LT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_NE);
  if (__pyx_t_2) {

    /* "scamper.pyx":882
 *             return x == 0
 *         if op == Py_NE:
 *             return x != 0             # <<<<<<<<<<<<<<
 *         if op == Py_LT:
 *             return x < 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x != 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":881
 *         if op == Py_EQ:
 *             return x == 0
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return x != 0
 *         if op == Py_LT:
*/
  }

  /* "scamper.pyx":883
 *         if op == Py_NE:
 *             return x != 0
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return x < 0
 *         if op == Py_LE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LT);
  if (__pyx_t_2) {

    /* "scamper.pyx":884
 *             return x != 0
 *         if op == Py_LT:
 *             return x < 0             # <<<<<<<<<<<<<<
 *         if op == Py_LE:
 *             return x <= 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x < 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 884, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":883
 *         if op == Py_NE:
 *             return x != 0
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return x < 0
 *         if op == Py_LE:
*/
  }

  /* "scamper.pyx":885
 *         if op == Py_LT:
 *             return x < 0
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return x <= 0
 *         if op == Py_GT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LE);
  if (__pyx_t_2) {

    /* "scamper.pyx":886
 *             return x < 0
 *         if op == Py_LE:
 *             return x <= 0             # <<<<<<<<<<<<<<
 *         if op == Py_GT:
 *             return x > 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x <= 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 886, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":885
 *         if op == Py_LT:
 *             return x < 0
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return x <= 0
 *         if op == Py_GT:
*/
  }

  /* "scamper.pyx":887
 *         if op == Py_LE:
 *             return x <= 0
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return x > 0
 *         if op == Py_GE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_GT);
  if (__pyx_t_2) {

    /* "scamper.pyx":888
 *             return x <= 0
 *         if op == Py_GT:
 *             return x > 0             # <<<<<<<<<<<<<<
 *         if op == Py_GE:
 *             return x >= 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x > 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 888, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":887
 *         if op == Py_LE:
 *             return x <= 0
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return x > 0
 *         if op == Py_GE:
*/
  }

  /* "scamper.pyx":889
 *         if op == Py_GT:
 *             return x > 0
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return x >= 0
 *         return NotImplemented
*/
  __pyx_t_2 = (__pyx_v_op == Py_GE);
  if (__pyx_t_2) {

    /* "scamper.pyx":890
 *             return x > 0
 *         if op == Py_GE:
 *             return x >= 0             # <<<<<<<<<<<<<<
 *         return NotImplemented
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x >= 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 890, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":889
 *         if op == Py_GT:
 *             return x > 0
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return x >= 0
 *         return NotImplemented
*/
  }

  /* "scamper.pyx":891
 *         if op == Py_GE:
 *             return x >= 0
 *         return NotImplemented             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_builtin_NotImplemented);
  __pyx_r = __pyx_builtin_NotImplemented;
  goto __pyx_L0;

  /* "scamper.pyx":875
 *             cscamper_icmpext.scamper_icmpext_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperIcmpExt):
 *             return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":893
 *         return NotImplemented
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperIcmpExt from_ptr(cscamper_icmpext.scamper_icmpext_t *ptr):
 *         cdef ScamperIcmpExt ext = ScamperIcmpExt.__new__(ScamperIcmpExt)
*/

static struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_f_7scamper_14ScamperIcmpExt_from_ptr(scamper_icmpext_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_ext = 0;
  struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("from_ptr", 0);

  /* "scamper.pyx":895
 *     @staticmethod
 *     cdef ScamperIcmpExt from_ptr(cscamper_icmpext.scamper_icmpext_t *ptr):
 *         cdef ScamperIcmpExt ext = ScamperIcmpExt.__new__(ScamperIcmpExt)             # <<<<<<<<<<<<<<
 *         if ptr == NULL:
 *             return None
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperIcmpExt(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExt), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 895, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_ext = ((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":896
 *     cdef ScamperIcmpExt from_ptr(cscamper_icmpext.scamper_icmpext_t *ptr):
 *         cdef ScamperIcmpExt ext = ScamperIcmpExt.__new__(ScamperIcmpExt)
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ext._c = cscamper_icmpext.scamper_icmpext_use(ptr)
*/
  __pyx_t_2 = (__pyx_v_ptr == NULL);
  if (__pyx_t_2) {

    /* "scamper.pyx":897
 *         cdef ScamperIcmpExt ext = ScamperIcmpExt.__new__(ScamperIcmpExt)
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         ext._c = cscamper_icmpext.scamper_icmpext_use(ptr)
 *         return ext
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperIcmpExt *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":896
 *     cdef ScamperIcmpExt from_ptr(cscamper_icmpext.scamper_icmpext_t *ptr):
 *         cdef ScamperIcmpExt ext = ScamperIcmpExt.__new__(ScamperIcmpExt)
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ext._c = cscamper_icmpext.scamper_icmpext_use(ptr)
*/
  }

  /* "scamper.pyx":898
 *         if ptr == NULL:
 *             return None
 *         ext._c = cscamper_icmpext.scamper_icmpext_use(ptr)             # <<<<<<<<<<<<<<
 *         return ext
 * 
*/
  __pyx_v_ext->_c = scamper_icmpext_use(__pyx_v_ptr);

  /* "scamper.pyx":899
 *             return None
 *         ext._c = cscamper_icmpext.scamper_icmpext_use(ptr)
 *         return ext             # <<<<<<<<<<<<<<
 * 
 *     def is_mpls(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_ext);
  __pyx_r = __pyx_v_ext;
  goto __pyx_L0;

  /* "scamper.pyx":893
 *         return NotImplemented
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperIcmpExt from_ptr(cscamper_icmpext.scamper_icmpext_t *ptr):
 *         cdef ScamperIcmpExt ext = ScamperIcmpExt.__new__(ScamperIcmpExt)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ext);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":901
 *         return ext
 * 
 *     def is_mpls(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this ICMP extension is an MPLS
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_7is_mpls(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperIcmpExt_6is_mpls, "\n        get method to determine if this ICMP extension is an MPLS\n        extension\n\n        :returns: True if this extension is an MPLS extension\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperIcmpExt_7is_mpls = {"is_mpls", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_7is_mpls, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_6is_mpls};
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_7is_mpls(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_mpls (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_mpls", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_mpls", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_6is_mpls(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_6is_mpls(struct __pyx_obj_7scamper_ScamperIcmpExt *__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("is_mpls", 0);

  /* "scamper.pyx":909
 *         :rtype: bool
 *         """
 *         return cscamper_icmpext.scamper_icmpext_is_mpls(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_icmpext_is_mpls(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":901
 *         return ext
 * 
 *     def is_mpls(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this ICMP extension is an MPLS
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.is_mpls", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":911
 *         return cscamper_icmpext.scamper_icmpext_is_mpls(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mpls_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_10mpls_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_10mpls_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_10mpls_count___get__(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_10mpls_count___get__(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":919
 *         :rtype: int
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return 0
 *         return cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c)
*/
  __pyx_t_1 = (!scamper_icmpext_is_mpls(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":920
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return 0             # <<<<<<<<<<<<<<
 *         return cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __pyx_r = __pyx_mstate_global->__pyx_int_0;
    goto __pyx_L0;

    /* "scamper.pyx":919
 *         :rtype: int
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return 0
 *         return cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c)
*/
  }

  /* "scamper.pyx":921
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return 0
 *         return cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def mpls_lses(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_icmpext_mpls_count_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":911
 *         return cscamper_icmpext.scamper_icmpext_is_mpls(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mpls_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":923
 *         return cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c)
 * 
 *     def mpls_lses(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for the MPLS label stack entries
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_9mpls_lses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperIcmpExt_8mpls_lses, "\n        get method to obtain an iterator for the MPLS label stack entries\n\n        :returns: an iterator for the label stack entries, which contains        :class:`ScamperIcmpMplsLabelStackEntry` objects\n        :rtype: _ScamperIcmpMplsLabelStackIterator\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperIcmpExt_9mpls_lses = {"mpls_lses", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_9mpls_lses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_8mpls_lses};
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_9mpls_lses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mpls_lses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("mpls_lses", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("mpls_lses", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_8mpls_lses(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_8mpls_lses(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mpls_lses", 0);

  /* "scamper.pyx":931
 *         :rtype: _ScamperIcmpMplsLabelStackIterator
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return _ScamperIcmpMplsLabelStackIterator(self)
*/
  __pyx_t_1 = (!scamper_icmpext_is_mpls(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":932
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return _ScamperIcmpMplsLabelStackIterator(self)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":931
 *         :rtype: _ScamperIcmpMplsLabelStackIterator
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return _ScamperIcmpMplsLabelStackIterator(self)
*/
  }

  /* "scamper.pyx":933
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         return _ScamperIcmpMplsLabelStackIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     def mpls_lse(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackIterat); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 933, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":923
 *         return cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c)
 * 
 *     def mpls_lses(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for the MPLS label stack entries
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_lses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":935
 *         return _ScamperIcmpMplsLabelStackIterator(self)
 * 
 *     def mpls_lse(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_lse(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_11mpls_lse(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperIcmpExt_10mpls_lse, "\n        mpls_lse(i)\n        get method to obtain a specific label stack entry from an MPLS\n        label stack\n\n        :param int i: the stack entry of interest\n        :returns: the label stack entry\n        :rtype: ScamperIcmpMplsLabelStackEntry\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperIcmpExt_11mpls_lse = {"mpls_lse", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_11mpls_lse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_10mpls_lse};
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_11mpls_lse(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mpls_lse (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 935, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 935, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "mpls_lse", 0) < 0) __PYX_ERR(0, 935, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("mpls_lse", 1, 1, 1, i); __PYX_ERR(0, 935, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 935, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mpls_lse", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 935, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_lse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_10mpls_lse(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_10mpls_lse(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mpls_lse", 0);

  /* "scamper.pyx":945
 *         :rtype: ScamperIcmpMplsLabelStackEntry
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
*/
  __pyx_t_1 = (!scamper_icmpext_is_mpls(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":946
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":945
 *         :rtype: ScamperIcmpMplsLabelStackEntry
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
*/
  }

  /* "scamper.pyx":947
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return ScamperIcmpMplsLabelStackEntry(self, i)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_icmpext_mpls_count_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 947, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 947, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":948
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return ScamperIcmpMplsLabelStackEntry(self, i)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":947
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return ScamperIcmpMplsLabelStackEntry(self, i)
*/
  }

  /* "scamper.pyx":949
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None
 *         return ScamperIcmpMplsLabelStackEntry(self, i)             # <<<<<<<<<<<<<<
 * 
 *     def mpls_label(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self), __pyx_v_i};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 949, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":935
 *         return _ScamperIcmpMplsLabelStackIterator(self)
 * 
 *     def mpls_lse(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_lse(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_lse", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":951
 *         return ScamperIcmpMplsLabelStackEntry(self, i)
 * 
 *     def mpls_label(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_label(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_13mpls_label(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperIcmpExt_12mpls_label, "\n        mpls_label(i)\n        get method that returns the MPLS label for a specific stack entry\n\n        :param int i: the stack entry of interest\n        :returns: the MPLS label\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperIcmpExt_13mpls_label = {"mpls_label", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_13mpls_label, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_12mpls_label};
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_13mpls_label(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mpls_label (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 951, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 951, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "mpls_label", 0) < 0) __PYX_ERR(0, 951, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("mpls_label", 1, 1, 1, i); __PYX_ERR(0, 951, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 951, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mpls_label", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 951, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_12mpls_label(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_12mpls_label(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  uint16_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mpls_label", 0);

  /* "scamper.pyx":960
 *         :rtype: int
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
*/
  __pyx_t_1 = (!scamper_icmpext_is_mpls(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":961
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":960
 *         :rtype: int
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
*/
  }

  /* "scamper.pyx":962
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_label_get(self._c, i)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_icmpext_mpls_count_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 962, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 962, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":963
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_icmpext.scamper_icmpext_mpls_label_get(self._c, i)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":962
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_label_get(self._c, i)
*/
  }

  /* "scamper.pyx":964
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_label_get(self._c, i)             # <<<<<<<<<<<<<<
 * 
 *     def mpls_ttl(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_4 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 964, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyLong_From_uint32_t(scamper_icmpext_mpls_label_get(__pyx_v_self->_c, __pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 964, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":951
 *         return ScamperIcmpMplsLabelStackEntry(self, i)
 * 
 *     def mpls_label(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_label(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_label", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":966
 *         return cscamper_icmpext.scamper_icmpext_mpls_label_get(self._c, i)
 * 
 *     def mpls_ttl(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_ttl(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_15mpls_ttl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperIcmpExt_14mpls_ttl, "\n        mpls_ttl(i)\n        get method that returns the MPLS TTL for a specific stack entry\n\n        :param int i: the stack entry of interest\n        :returns: the MPLS TTL\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperIcmpExt_15mpls_ttl = {"mpls_ttl", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_15mpls_ttl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_14mpls_ttl};
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_15mpls_ttl(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mpls_ttl (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 966, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 966, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "mpls_ttl", 0) < 0) __PYX_ERR(0, 966, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("mpls_ttl", 1, 1, 1, i); __PYX_ERR(0, 966, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 966, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mpls_ttl", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 966, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_ttl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_14mpls_ttl(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_14mpls_ttl(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  uint16_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mpls_ttl", 0);

  /* "scamper.pyx":975
 *         :rtype: int
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
*/
  __pyx_t_1 = (!scamper_icmpext_is_mpls(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":976
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":975
 *         :rtype: int
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
*/
  }

  /* "scamper.pyx":977
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_ttl_get(self._c, i)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_icmpext_mpls_count_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 977, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":978
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_icmpext.scamper_icmpext_mpls_ttl_get(self._c, i)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":977
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_ttl_get(self._c, i)
*/
  }

  /* "scamper.pyx":979
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_ttl_get(self._c, i)             # <<<<<<<<<<<<<<
 * 
 *     def mpls_exp(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_4 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 979, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyLong_From_uint8_t(scamper_icmpext_mpls_ttl_get(__pyx_v_self->_c, __pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 979, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":966
 *         return cscamper_icmpext.scamper_icmpext_mpls_label_get(self._c, i)
 * 
 *     def mpls_ttl(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_ttl(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_ttl", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":981
 *         return cscamper_icmpext.scamper_icmpext_mpls_ttl_get(self._c, i)
 * 
 *     def mpls_exp(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_exp(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_17mpls_exp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperIcmpExt_16mpls_exp, "\n        mpls_exp(i)\n        get method that returns the MPLS exp bits for a specific stack entry\n\n        :param int i: the stack entry of interest\n        :returns: the MPLS exp bits\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperIcmpExt_17mpls_exp = {"mpls_exp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_17mpls_exp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_16mpls_exp};
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_17mpls_exp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mpls_exp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 981, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 981, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "mpls_exp", 0) < 0) __PYX_ERR(0, 981, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("mpls_exp", 1, 1, 1, i); __PYX_ERR(0, 981, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 981, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mpls_exp", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 981, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_16mpls_exp(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_16mpls_exp(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  uint16_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mpls_exp", 0);

  /* "scamper.pyx":990
 *         :rtype: int
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
*/
  __pyx_t_1 = (!scamper_icmpext_is_mpls(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":991
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":990
 *         :rtype: int
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
*/
  }

  /* "scamper.pyx":992
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_exp_get(self._c, i)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_icmpext_mpls_count_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 992, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":993
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_icmpext.scamper_icmpext_mpls_exp_get(self._c, i)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":992
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_exp_get(self._c, i)
*/
  }

  /* "scamper.pyx":994
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_exp_get(self._c, i)             # <<<<<<<<<<<<<<
 * 
 *     def mpls_s(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_4 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 994, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyLong_From_uint8_t(scamper_icmpext_mpls_exp_get(__pyx_v_self->_c, __pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 994, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":981
 *         return cscamper_icmpext.scamper_icmpext_mpls_ttl_get(self._c, i)
 * 
 *     def mpls_exp(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_exp(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":996
 *         return cscamper_icmpext.scamper_icmpext_mpls_exp_get(self._c, i)
 * 
 *     def mpls_s(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_s(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_19mpls_s(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperIcmpExt_18mpls_s, "\n        mpls_s(i)\n        get method that returns the MPLS bottom-of-stack (S) bit for a specific stack entry\n\n        :param int i: the stack entry of interest\n        :returns: the MPLS S bit\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperIcmpExt_19mpls_s = {"mpls_s", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_19mpls_s, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_18mpls_s};
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_19mpls_s(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mpls_s (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 996, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 996, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "mpls_s", 0) < 0) __PYX_ERR(0, 996, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("mpls_s", 1, 1, 1, i); __PYX_ERR(0, 996, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 996, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mpls_s", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 996, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_s", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_18mpls_s(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_18mpls_s(struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  uint16_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mpls_s", 0);

  /* "scamper.pyx":1005
 *         :rtype: int
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
*/
  __pyx_t_1 = (!scamper_icmpext_is_mpls(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":1006
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1005
 *         :rtype: int
 *         """
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
*/
  }

  /* "scamper.pyx":1007
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_s_get(self._c, i)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_icmpext_mpls_count_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_v_i, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1007, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1007, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":1008
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_icmpext.scamper_icmpext_mpls_s_get(self._c, i)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1007
 *         if not cscamper_icmpext.scamper_icmpext_is_mpls(self._c):
 *             return None
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_s_get(self._c, i)
*/
  }

  /* "scamper.pyx":1009
 *         if i >= cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c):
 *             return None
 *         return cscamper_icmpext.scamper_icmpext_mpls_s_get(self._c, i)             # <<<<<<<<<<<<<<
 * 
 * class _ScamperIcmpExtsIterator:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_4 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1009, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyLong_From_uint8_t(scamper_icmpext_mpls_s_get(__pyx_v_self->_c, __pyx_t_4)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":996
 *         return cscamper_icmpext.scamper_icmpext_mpls_exp_get(self._c, i)
 * 
 *     def mpls_s(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_s(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.mpls_s", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_21__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperIcmpExt_21__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_21__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_21__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_20__reduce_cython__(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_23__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperIcmpExt_23__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_23__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperIcmpExt_23__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperIcmpExt_22__setstate_cython__(((struct __pyx_obj_7scamper_ScamperIcmpExt *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperIcmpExt_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExt *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperIcmpExt.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1012
 * 
 * class _ScamperIcmpExtsIterator:
 *     def __init__(self, exts):             # <<<<<<<<<<<<<<
 *         self._exts = exts
 *         self._i = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_24_ScamperIcmpExtsIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_24_ScamperIcmpExtsIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_24_ScamperIcmpExtsIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_24_ScamperIcmpExtsIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_exts = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_exts,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1012, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1012, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1012, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 1012, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 1012, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1012, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1012, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_exts = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1012, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperIcmpExtsIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_24_ScamperIcmpExtsIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_exts);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_24_ScamperIcmpExtsIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_exts) {
  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("__init__", 0);

  /* "scamper.pyx":1013
 * class _ScamperIcmpExtsIterator:
 *     def __init__(self, exts):
 *         self._exts = exts             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         self._c = exts.ext_count
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_exts_2, __pyx_v_exts) < 0) __PYX_ERR(0, 1013, __pyx_L1_error)

  /* "scamper.pyx":1014
 *     def __init__(self, exts):
 *         self._exts = exts
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         self._c = exts.ext_count
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 1014, __pyx_L1_error)

  /* "scamper.pyx":1015
 *         self._exts = exts
 *         self._i = 0
 *         self._c = exts.ext_count             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_exts, __pyx_mstate_global->__pyx_n_u_ext_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c, __pyx_t_1) < 0) __PYX_ERR(0, 1015, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":1012
 * 
 * class _ScamperIcmpExtsIterator:
 *     def __init__(self, exts):             # <<<<<<<<<<<<<<
 *         self._exts = exts
 *         self._i = 0
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper._ScamperIcmpExtsIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1017
 *         self._c = exts.ext_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_24_ScamperIcmpExtsIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_24_ScamperIcmpExtsIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_24_ScamperIcmpExtsIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_24_ScamperIcmpExtsIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1017, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1017, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 1017, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 1017, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1017, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1017, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperIcmpExtsIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_24_ScamperIcmpExtsIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_24_ScamperIcmpExtsIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":1018
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":1017
 *         self._c = exts.ext_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1020
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             ext = self._exts.ext(self, self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_24_ScamperIcmpExtsIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_24_ScamperIcmpExtsIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_24_ScamperIcmpExtsIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_24_ScamperIcmpExtsIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1020, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1020, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 1020, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 1020, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1020, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1020, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperIcmpExtsIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_24_ScamperIcmpExtsIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_24_ScamperIcmpExtsIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_ext = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":1021
 * 
 *     def __next__(self):
 *         if self._i < self._c:             # <<<<<<<<<<<<<<
 *             ext = self._exts.ext(self, self._i)
 *             self._i += 1
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1021, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1021, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1021, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":1022
 *     def __next__(self):
 *         if self._i < self._c:
 *             ext = self._exts.ext(self, self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             return ext
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_exts_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_self, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_ext, __pyx_callargs+__pyx_t_6, (3-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1022, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_ext = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":1023
 *         if self._i < self._c:
 *             ext = self._exts.ext(self, self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             return ext
 *         raise StopIteration
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1023, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_t_1) < 0) __PYX_ERR(0, 1023, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":1024
 *             ext = self._exts.ext(self, self._i)
 *             self._i += 1
 *             return ext             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_ext);
    __pyx_r = __pyx_v_ext;
    goto __pyx_L0;

    /* "scamper.pyx":1021
 * 
 *     def __next__(self):
 *         if self._i < self._c:             # <<<<<<<<<<<<<<
 *             ext = self._exts.ext(self, self._i)
 *             self._i += 1
*/
  }

  /* "scamper.pyx":1025
 *             self._i += 1
 *             return ext
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperIcmpExts:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 1025, __pyx_L1_error)

  /* "scamper.pyx":1020
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             ext = self._exts.ext(self, self._i)
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperIcmpExtsIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ext);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1035
 *     cdef cscamper_icmpext.scamper_icmpexts_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_15ScamperIcmpExts_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_15ScamperIcmpExts_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_15ScamperIcmpExts___init__(((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_15ScamperIcmpExts___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":1036
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 1036, __pyx_L1_error)

  /* "scamper.pyx":1035
 *     cdef cscamper_icmpext.scamper_icmpexts_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1038
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_icmpext.scamper_icmpexts_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_15ScamperIcmpExts_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_15ScamperIcmpExts_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_15ScamperIcmpExts_2__dealloc__(((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_15ScamperIcmpExts_2__dealloc__(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":1039
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_icmpext.scamper_icmpexts_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1040
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_icmpext.scamper_icmpexts_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
*/
    scamper_icmpexts_free(__pyx_v_self->_c);

    /* "scamper.pyx":1039
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_icmpext.scamper_icmpexts_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":1038
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_icmpext.scamper_icmpexts_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":1042
 *             cscamper_icmpext.scamper_icmpexts_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperIcmpExts):
 *             return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperIcmpExts_4__richcmp__(((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_4__richcmp__(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  int __pyx_v_x;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__richcmp__", 0);

  /* "scamper.pyx":1043
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperIcmpExts):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         x = cscamper_icmpext.scamper_icmpexts_cmp(self._c, (<ScamperIcmpExts>other)._c)
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExts); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "scamper.pyx":1044
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperIcmpExts):
 *             return NotImplemented             # <<<<<<<<<<<<<<
 *         x = cscamper_icmpext.scamper_icmpexts_cmp(self._c, (<ScamperIcmpExts>other)._c)
 *         if op == Py_EQ:
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;

    /* "scamper.pyx":1043
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperIcmpExts):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         x = cscamper_icmpext.scamper_icmpexts_cmp(self._c, (<ScamperIcmpExts>other)._c)
*/
  }

  /* "scamper.pyx":1045
 *         if not isinstance(other, ScamperIcmpExts):
 *             return NotImplemented
 *         x = cscamper_icmpext.scamper_icmpexts_cmp(self._c, (<ScamperIcmpExts>other)._c)             # <<<<<<<<<<<<<<
 *         if op == Py_EQ:
 *             return x == 0
*/
  __pyx_v_x = scamper_icmpexts_cmp(__pyx_v_self->_c, ((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_v_other)->_c);

  /* "scamper.pyx":1046
 *             return NotImplemented
 *         x = cscamper_icmpext.scamper_icmpexts_cmp(self._c, (<ScamperIcmpExts>other)._c)
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return x == 0
 *         if op == Py_NE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_2) {

    /* "scamper.pyx":1047
 *         x = cscamper_icmpext.scamper_icmpexts_cmp(self._c, (<ScamperIcmpExts>other)._c)
 *         if op == Py_EQ:
 *             return x == 0             # <<<<<<<<<<<<<<
 *         if op == Py_NE:
 *             return x != 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x == 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1047, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":1046
 *             return NotImplemented
 *         x = cscamper_icmpext.scamper_icmpexts_cmp(self._c, (<ScamperIcmpExts>other)._c)
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return x == 0
 *         if op == Py_NE:
*/
  }

  /* "scamper.pyx":1048
 *         if op == Py_EQ:
 *             return x == 0
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return x != 0
 *         if op == Py_LT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_NE);
  if (__pyx_t_2) {

    /* "scamper.pyx":1049
 *             return x == 0
 *         if op == Py_NE:
 *             return x != 0             # <<<<<<<<<<<<<<
 *         if op == Py_LT:
 *             return x < 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x != 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1049, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":1048
 *         if op == Py_EQ:
 *             return x == 0
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return x != 0
 *         if op == Py_LT:
*/
  }

  /* "scamper.pyx":1050
 *         if op == Py_NE:
 *             return x != 0
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return x < 0
 *         if op == Py_LE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LT);
  if (__pyx_t_2) {

    /* "scamper.pyx":1051
 *             return x != 0
 *         if op == Py_LT:
 *             return x < 0             # <<<<<<<<<<<<<<
 *         if op == Py_LE:
 *             return x <= 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x < 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":1050
 *         if op == Py_NE:
 *             return x != 0
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return x < 0
 *         if op == Py_LE:
*/
  }

  /* "scamper.pyx":1052
 *         if op == Py_LT:
 *             return x < 0
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return x <= 0
 *         if op == Py_GT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LE);
  if (__pyx_t_2) {

    /* "scamper.pyx":1053
 *             return x < 0
 *         if op == Py_LE:
 *             return x <= 0             # <<<<<<<<<<<<<<
 *         if op == Py_GT:
 *             return x > 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x <= 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":1052
 *         if op == Py_LT:
 *             return x < 0
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return x <= 0
 *         if op == Py_GT:
*/
  }

  /* "scamper.pyx":1054
 *         if op == Py_LE:
 *             return x <= 0
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return x > 0
 *         if op == Py_GE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_GT);
  if (__pyx_t_2) {

    /* "scamper.pyx":1055
 *             return x <= 0
 *         if op == Py_GT:
 *             return x > 0             # <<<<<<<<<<<<<<
 *         if op == Py_GE:
 *             return x >= 0
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x > 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1055, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":1054
 *         if op == Py_LE:
 *             return x <= 0
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return x > 0
 *         if op == Py_GE:
*/
  }

  /* "scamper.pyx":1056
 *         if op == Py_GT:
 *             return x > 0
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return x >= 0
 *         return NotImplemented
*/
  __pyx_t_2 = (__pyx_v_op == Py_GE);
  if (__pyx_t_2) {

    /* "scamper.pyx":1057
 *             return x > 0
 *         if op == Py_GE:
 *             return x >= 0             # <<<<<<<<<<<<<<
 *         return NotImplemented
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_x >= 0)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1057, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":1056
 *         if op == Py_GT:
 *             return x > 0
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return x >= 0
 *         return NotImplemented
*/
  }

  /* "scamper.pyx":1058
 *         if op == Py_GE:
 *             return x >= 0
 *         return NotImplemented             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_builtin_NotImplemented);
  __pyx_r = __pyx_builtin_NotImplemented;
  goto __pyx_L0;

  /* "scamper.pyx":1042
 *             cscamper_icmpext.scamper_icmpexts_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperIcmpExts):
 *             return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1060
 *         return NotImplemented
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperIcmpExts from_ptr(cscamper_icmpext.scamper_icmpexts_t *ptr):
 *         cdef ScamperIcmpExts ext = ScamperIcmpExts.__new__(ScamperIcmpExts)
*/

static struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_f_7scamper_15ScamperIcmpExts_from_ptr(scamper_icmpexts_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_ext = 0;
  struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("from_ptr", 0);

  /* "scamper.pyx":1062
 *     @staticmethod
 *     cdef ScamperIcmpExts from_ptr(cscamper_icmpext.scamper_icmpexts_t *ptr):
 *         cdef ScamperIcmpExts ext = ScamperIcmpExts.__new__(ScamperIcmpExts)             # <<<<<<<<<<<<<<
 *         if ptr == NULL:
 *             return None
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperIcmpExts(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExts), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1062, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_ext = ((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":1063
 *     cdef ScamperIcmpExts from_ptr(cscamper_icmpext.scamper_icmpexts_t *ptr):
 *         cdef ScamperIcmpExts ext = ScamperIcmpExts.__new__(ScamperIcmpExts)
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ext._c = cscamper_icmpext.scamper_icmpexts_use(ptr)
*/
  __pyx_t_2 = (__pyx_v_ptr == NULL);
  if (__pyx_t_2) {

    /* "scamper.pyx":1064
 *         cdef ScamperIcmpExts ext = ScamperIcmpExts.__new__(ScamperIcmpExts)
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         ext._c = cscamper_icmpext.scamper_icmpexts_use(ptr)
 *         return ext
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperIcmpExts *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1063
 *     cdef ScamperIcmpExts from_ptr(cscamper_icmpext.scamper_icmpexts_t *ptr):
 *         cdef ScamperIcmpExts ext = ScamperIcmpExts.__new__(ScamperIcmpExts)
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ext._c = cscamper_icmpext.scamper_icmpexts_use(ptr)
*/
  }

  /* "scamper.pyx":1065
 *         if ptr == NULL:
 *             return None
 *         ext._c = cscamper_icmpext.scamper_icmpexts_use(ptr)             # <<<<<<<<<<<<<<
 *         return ext
 * 
*/
  __pyx_v_ext->_c = scamper_icmpexts_use(__pyx_v_ptr);

  /* "scamper.pyx":1066
 *             return None
 *         ext._c = cscamper_icmpext.scamper_icmpexts_use(ptr)
 *         return ext             # <<<<<<<<<<<<<<
 * 
 *     def ext_count(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_ext);
  __pyx_r = __pyx_v_ext;
  goto __pyx_L0;

  /* "scamper.pyx":1060
 *         return NotImplemented
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperIcmpExts from_ptr(cscamper_icmpext.scamper_icmpexts_t *ptr):
 *         cdef ScamperIcmpExts ext = ScamperIcmpExts.__new__(ScamperIcmpExts)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ext);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1068
 *         return ext
 * 
 *     def ext_count(self):             # <<<<<<<<<<<<<<
 *         return cscamper_icmpext.scamper_icmpexts_count_get(self._c)
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_7ext_count(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperIcmpExts_7ext_count = {"ext_count", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperIcmpExts_7ext_count, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_7ext_count(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ext_count (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("ext_count", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("ext_count", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperIcmpExts_6ext_count(((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_6ext_count(struct __pyx_obj_7scamper_ScamperIcmpExts *__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("ext_count", 0);

  /* "scamper.pyx":1069
 * 
 *     def ext_count(self):
 *         return cscamper_icmpext.scamper_icmpexts_count_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def ext(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_icmpexts_count_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1069, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1068
 *         return ext
 * 
 *     def ext_count(self):             # <<<<<<<<<<<<<<
 *         return cscamper_icmpext.scamper_icmpexts_count_get(self._c)
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.ext_count", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1071
 *         return cscamper_icmpext.scamper_icmpexts_count_get(self._c)
 * 
 *     def ext(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ext(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_9ext(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperIcmpExts_8ext, "\n        ext(i)\n        get method to obtain a specific ICMP extension, starting at zero.\n\n        :returns: the nominated extension\n        :rtype: ScamperIcmpExt\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperIcmpExts_9ext = {"ext", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperIcmpExts_9ext, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperIcmpExts_8ext};
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_9ext(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ext (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1071, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1071, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ext", 0) < 0) __PYX_ERR(0, 1071, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("ext", 1, 1, 1, i); __PYX_ERR(0, 1071, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1071, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ext", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1071, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.ext", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_15ScamperIcmpExts_8ext(((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_8ext(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_icmpext_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ext", 0);

  /* "scamper.pyx":1079
 *         :rtype: ScamperIcmpExt
 *         """
 *         c = cscamper_icmpext.scamper_icmpexts_ext_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperIcmpExt.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1079, __pyx_L1_error)
  __pyx_v_c = scamper_icmpexts_ext_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":1080
 *         """
 *         c = cscamper_icmpext.scamper_icmpexts_ext_get(self._c, i)
 *         return ScamperIcmpExt.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     def exts(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_14ScamperIcmpExt_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1080, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1071
 *         return cscamper_icmpext.scamper_icmpexts_count_get(self._c)
 * 
 *     def ext(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ext(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.ext", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1082
 *         return ScamperIcmpExt.from_ptr(c)
 * 
 *     def exts(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator over the ICMP extensions container.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_11exts(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperIcmpExts_10exts, "\n        get method to obtain an iterator over the ICMP extensions container.\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperIcmpExts_11exts = {"exts", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperIcmpExts_11exts, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperIcmpExts_10exts};
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_11exts(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exts (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("exts", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("exts", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperIcmpExts_10exts(((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_10exts(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("exts", 0);

  /* "scamper.pyx":1086
 *         get method to obtain an iterator over the ICMP extensions container.
 *         """
 *         return _ScamperIcmpExtsIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExtsIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1086, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1082
 *         return ScamperIcmpExt.from_ptr(c)
 * 
 *     def exts(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator over the ICMP extensions container.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.exts", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1088
 *         return _ScamperIcmpExtsIterator(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mpls(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_4mpls_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_4mpls_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperIcmpExts_4mpls___get__(((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_4mpls___get__(struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self) {
  uint16_t __pyx_v_extc;
  uint16_t __pyx_v_i;
  scamper_icmpext_t *__pyx_v_ext;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  uint16_t __pyx_t_2;
  uint16_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1097
 *         :rtype: ScamperIcmpExt
 *         """
 *         extc = cscamper_icmpext.scamper_icmpexts_count_get(self._c)             # <<<<<<<<<<<<<<
 *         for i in range(extc):
 *             ext = cscamper_icmpext.scamper_icmpexts_ext_get(self._c, i)
*/
  __pyx_v_extc = scamper_icmpexts_count_get(__pyx_v_self->_c);

  /* "scamper.pyx":1098
 *         """
 *         extc = cscamper_icmpext.scamper_icmpexts_count_get(self._c)
 *         for i in range(extc):             # <<<<<<<<<<<<<<
 *             ext = cscamper_icmpext.scamper_icmpexts_ext_get(self._c, i)
 *             if cscamper_icmpext.scamper_icmpext_is_mpls(ext):
*/
  __pyx_t_1 = __pyx_v_extc;
  __pyx_t_2 = __pyx_t_1;
  for (__pyx_t_3 = 0; __pyx_t_3 < __pyx_t_2; __pyx_t_3+=1) {
    __pyx_v_i = __pyx_t_3;

    /* "scamper.pyx":1099
 *         extc = cscamper_icmpext.scamper_icmpexts_count_get(self._c)
 *         for i in range(extc):
 *             ext = cscamper_icmpext.scamper_icmpexts_ext_get(self._c, i)             # <<<<<<<<<<<<<<
 *             if cscamper_icmpext.scamper_icmpext_is_mpls(ext):
 *                 return ScamperIcmpExt.from_ptr(ext)
*/
    __pyx_v_ext = scamper_icmpexts_ext_get(__pyx_v_self->_c, __pyx_v_i);

    /* "scamper.pyx":1100
 *         for i in range(extc):
 *             ext = cscamper_icmpext.scamper_icmpexts_ext_get(self._c, i)
 *             if cscamper_icmpext.scamper_icmpext_is_mpls(ext):             # <<<<<<<<<<<<<<
 *                 return ScamperIcmpExt.from_ptr(ext)
 *         return None
*/
    __pyx_t_4 = scamper_icmpext_is_mpls(__pyx_v_ext);
    if (__pyx_t_4) {

      /* "scamper.pyx":1101
 *             ext = cscamper_icmpext.scamper_icmpexts_ext_get(self._c, i)
 *             if cscamper_icmpext.scamper_icmpext_is_mpls(ext):
 *                 return ScamperIcmpExt.from_ptr(ext)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_5 = ((PyObject *)__pyx_f_7scamper_14ScamperIcmpExt_from_ptr(__pyx_v_ext)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1101, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_r = __pyx_t_5;
      __pyx_t_5 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":1100
 *         for i in range(extc):
 *             ext = cscamper_icmpext.scamper_icmpexts_ext_get(self._c, i)
 *             if cscamper_icmpext.scamper_icmpext_is_mpls(ext):             # <<<<<<<<<<<<<<
 *                 return ScamperIcmpExt.from_ptr(ext)
 *         return None
*/
    }
  }

  /* "scamper.pyx":1102
 *             if cscamper_icmpext.scamper_icmpext_is_mpls(ext):
 *                 return ScamperIcmpExt.from_ptr(ext)
 *         return None             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":1088
 *         return _ScamperIcmpExtsIterator(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mpls(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.mpls.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperIcmpExts_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperIcmpExts_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperIcmpExts_12__reduce_cython__(((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperIcmpExts_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperIcmpExts_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperIcmpExts_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_15ScamperIcmpExts_14__setstate_cython__(((struct __pyx_obj_7scamper_ScamperIcmpExts *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperIcmpExts_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperIcmpExts *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperIcmpExts.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1117
 *     cdef uint32_t _t_flags
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_15ScamperTraceHop_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_15ScamperTraceHop_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop___init__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_15ScamperTraceHop___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":1118
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1118, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 1118, __pyx_L1_error)

  /* "scamper.pyx":1117
 *     cdef uint32_t _t_flags
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1120
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cscamper_trace.scamper_trace_probe_free(self._p)
 *         cscamper_trace.scamper_trace_reply_free(self._r)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_15ScamperTraceHop_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_15ScamperTraceHop_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_15ScamperTraceHop_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_15ScamperTraceHop_2__dealloc__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {

  /* "scamper.pyx":1121
 * 
 *     def __dealloc__(self):
 *         cscamper_trace.scamper_trace_probe_free(self._p)             # <<<<<<<<<<<<<<
 *         cscamper_trace.scamper_trace_reply_free(self._r)
 * 
*/
  scamper_trace_probe_free(__pyx_v_self->_p);

  /* "scamper.pyx":1122
 *     def __dealloc__(self):
 *         cscamper_trace.scamper_trace_probe_free(self._p)
 *         cscamper_trace.scamper_trace_reply_free(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  scamper_trace_reply_free(__pyx_v_self->_r);

  /* "scamper.pyx":1120
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         cscamper_trace.scamper_trace_probe_free(self._p)
 *         cscamper_trace.scamper_trace_reply_free(self._r)
*/

  /* function exit code */
}

/* "scamper.pyx":1124
 *         cscamper_trace.scamper_trace_reply_free(self._r)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         if self._r == NULL:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_4__str__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_4__str__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  scamper_addr_t *__pyx_v_c_a;
  struct timeval const *__pyx_v_c_rtt;
  char const *__pyx_v_c_name;
  PyObject *__pyx_v_usec = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8[7];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":1126
 *     def __str__(self):
 *         cdef char buf[128]
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return "*"
 *         c_a = cscamper_trace.scamper_trace_reply_addr_get(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1127
 *         cdef char buf[128]
 *         if self._r == NULL:
 *             return "*"             # <<<<<<<<<<<<<<
 *         c_a = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         c_rtt = cscamper_trace.scamper_trace_reply_rtt_get(self._r)
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__2);
    __pyx_r = __pyx_mstate_global->__pyx_kp_u__2;
    goto __pyx_L0;

    /* "scamper.pyx":1126
 *     def __str__(self):
 *         cdef char buf[128]
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return "*"
 *         c_a = cscamper_trace.scamper_trace_reply_addr_get(self._r)
*/
  }

  /* "scamper.pyx":1128
 *         if self._r == NULL:
 *             return "*"
 *         c_a = cscamper_trace.scamper_trace_reply_addr_get(self._r)             # <<<<<<<<<<<<<<
 *         c_rtt = cscamper_trace.scamper_trace_reply_rtt_get(self._r)
 *         c_name = cscamper_trace.scamper_trace_reply_name_get(self._r)
*/
  __pyx_v_c_a = scamper_trace_reply_addr_get(__pyx_v_self->_r);

  /* "scamper.pyx":1129
 *             return "*"
 *         c_a = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         c_rtt = cscamper_trace.scamper_trace_reply_rtt_get(self._r)             # <<<<<<<<<<<<<<
 *         c_name = cscamper_trace.scamper_trace_reply_name_get(self._r)
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)
*/
  __pyx_v_c_rtt = scamper_trace_reply_rtt_get(__pyx_v_self->_r);

  /* "scamper.pyx":1130
 *         c_a = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         c_rtt = cscamper_trace.scamper_trace_reply_rtt_get(self._r)
 *         c_name = cscamper_trace.scamper_trace_reply_name_get(self._r)             # <<<<<<<<<<<<<<
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))
*/
  __pyx_v_c_name = scamper_trace_reply_name_get(__pyx_v_self->_r);

  /* "scamper.pyx":1131
 *         c_rtt = cscamper_trace.scamper_trace_reply_rtt_get(self._r)
 *         c_name = cscamper_trace.scamper_trace_reply_name_get(self._r)
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)             # <<<<<<<<<<<<<<
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))
 *         return "%s%s %d.%03d ms" % (
*/
  __pyx_t_2 = __Pyx_PyLong_From_suseconds_t(((__pyx_v_c_rtt->tv_sec * 0xF4240) + __pyx_v_c_rtt->tv_usec)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_usec = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":1132
 *         c_name = cscamper_trace.scamper_trace_reply_name_get(self._r)
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return "%s%s %d.%03d ms" % (
 *             c_name.decode('UTF-8', 'strict') + " " if c_name != NULL else "",
*/
  (void)(scamper_addr_tostr(__pyx_v_c_a, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":1133
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))
 *         return "%s%s %d.%03d ms" % (             # <<<<<<<<<<<<<<
 *             c_name.decode('UTF-8', 'strict') + " " if c_name != NULL else "",
 *             buf.decode('UTF-8', 'strict'), usec / 1000, usec % 1000)
*/
  __Pyx_XDECREF(__pyx_r);

  /* "scamper.pyx":1134
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))
 *         return "%s%s %d.%03d ms" % (
 *             c_name.decode('UTF-8', 'strict') + " " if c_name != NULL else "",             # <<<<<<<<<<<<<<
 *             buf.decode('UTF-8', 'strict'), usec / 1000, usec % 1000)
 * 
*/
  __pyx_t_1 = (__pyx_v_c_name != NULL);
  if (__pyx_t_1) {
    __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_c_name); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1134, __pyx_L1_error)
    __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_c_name, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u__3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_2 = __pyx_t_5;
    __pyx_t_5 = 0;
  } else {
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__4);
    __pyx_t_2 = __pyx_mstate_global->__pyx_kp_u__4;
  }
  __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1135
 *         return "%s%s %d.%03d ms" % (
 *             c_name.decode('UTF-8', 'strict') + " " if c_name != NULL else "",
 *             buf.decode('UTF-8', 'strict'), usec / 1000, usec % 1000)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1135, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyLong_TrueDivideObjC(__pyx_v_usec, __pyx_mstate_global->__pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_4), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_RemainderObjC(__pyx_v_usec, __pyx_mstate_global->__pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_4), __pyx_mstate_global->__pyx_kp_u_03d); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_8[0] = __pyx_t_5;
  __pyx_t_8[1] = __pyx_t_2;
  __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u__3;
  __pyx_t_8[3] = __pyx_t_6;
  __pyx_t_8[4] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_8[5] = __pyx_t_7;
  __pyx_t_8[6] = __pyx_mstate_global->__pyx_kp_u_ms;

  /* "scamper.pyx":1133
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))
 *         return "%s%s %d.%03d ms" % (             # <<<<<<<<<<<<<<
 *             c_name.decode('UTF-8', 'strict') + " " if c_name != NULL else "",
 *             buf.decode('UTF-8', 'strict'), usec / 1000, usec % 1000)
*/
  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_8, 7, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 3, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7));
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1124
 *         cscamper_trace.scamper_trace_reply_free(self._r)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         if self._r == NULL:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_usec);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1137
 *             buf.decode('UTF-8', 'strict'), usec / 1000, usec % 1000)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTraceHop from_ptr(cscamper_trace.scamper_trace_probe_t *p,
 *                                   cscamper_trace.scamper_trace_reply_t *r,
*/

static struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_f_7scamper_15ScamperTraceHop_from_ptr(scamper_trace_probe_t *__pyx_v_p, scamper_trace_reply_t *__pyx_v_r, uint32_t __pyx_v_t_flags) {
  struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_hop = 0;
  struct __pyx_obj_7scamper_ScamperTraceHop *__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("from_ptr", 0);

  /* "scamper.pyx":1142
 *                                   uint32_t t_flags):
 *         cdef ScamperTraceHop hop
 *         if r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         hop = ScamperTraceHop.__new__(ScamperTraceHop)
*/
  __pyx_t_1 = (__pyx_v_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1143
 *         cdef ScamperTraceHop hop
 *         if r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         hop = ScamperTraceHop.__new__(ScamperTraceHop)
 *         hop._p = cscamper_trace.scamper_trace_probe_use(p)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperTraceHop *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1142
 *                                   uint32_t t_flags):
 *         cdef ScamperTraceHop hop
 *         if r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         hop = ScamperTraceHop.__new__(ScamperTraceHop)
*/
  }

  /* "scamper.pyx":1144
 *         if r == NULL:
 *             return None
 *         hop = ScamperTraceHop.__new__(ScamperTraceHop)             # <<<<<<<<<<<<<<
 *         hop._p = cscamper_trace.scamper_trace_probe_use(p)
 *         hop._r = cscamper_trace.scamper_trace_reply_use(r)
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTraceHop(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTraceHop), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1144, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_hop = ((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":1145
 *             return None
 *         hop = ScamperTraceHop.__new__(ScamperTraceHop)
 *         hop._p = cscamper_trace.scamper_trace_probe_use(p)             # <<<<<<<<<<<<<<
 *         hop._r = cscamper_trace.scamper_trace_reply_use(r)
 *         hop._t_flags = t_flags
*/
  __pyx_v_hop->_p = scamper_trace_probe_use(__pyx_v_p);

  /* "scamper.pyx":1146
 *         hop = ScamperTraceHop.__new__(ScamperTraceHop)
 *         hop._p = cscamper_trace.scamper_trace_probe_use(p)
 *         hop._r = cscamper_trace.scamper_trace_reply_use(r)             # <<<<<<<<<<<<<<
 *         hop._t_flags = t_flags
 *         return hop
*/
  __pyx_v_hop->_r = scamper_trace_reply_use(__pyx_v_r);

  /* "scamper.pyx":1147
 *         hop._p = cscamper_trace.scamper_trace_probe_use(p)
 *         hop._r = cscamper_trace.scamper_trace_reply_use(r)
 *         hop._t_flags = t_flags             # <<<<<<<<<<<<<<
 *         return hop
 * 
*/
  __pyx_v_hop->_t_flags = __pyx_v_t_flags;

  /* "scamper.pyx":1148
 *         hop._r = cscamper_trace.scamper_trace_reply_use(r)
 *         hop._t_flags = t_flags
 *         return hop             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_hop);
  __pyx_r = __pyx_v_hop;
  goto __pyx_L0;

  /* "scamper.pyx":1137
 *             buf.decode('UTF-8', 'strict'), usec / 1000, usec % 1000)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTraceHop from_ptr(cscamper_trace.scamper_trace_probe_t *p,
 *                                   cscamper_trace.scamper_trace_reply_t *r,
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_hop);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1150
 *         return hop
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_3src___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_3src___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":1158
 *         :rtype: ScamperAddr
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_addr_get(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1159
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         return ScamperAddr.from_ptr(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1158
 *         :rtype: ScamperAddr
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_addr_get(self._r)
*/
  }

  /* "scamper.pyx":1160
 *         if self._r == NULL:
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_addr_get(self._r)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_trace_reply_addr_get(__pyx_v_self->_r);

  /* "scamper.pyx":1161
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         return ScamperAddr.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1161, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1150
 *         return hop
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1163
 *         return ScamperAddr.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_4name___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_4name___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  char const *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1172
 *         :rtype: string
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_name_get(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1173
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c = cscamper_trace.scamper_trace_reply_name_get(self._r)
 *         if c == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1172
 *         :rtype: string
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_name_get(self._r)
*/
  }

  /* "scamper.pyx":1174
 *         if self._r == NULL:
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_name_get(self._r)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_trace_reply_name_get(__pyx_v_self->_r);

  /* "scamper.pyx":1175
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_name_get(self._r)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1176
 *         c = cscamper_trace.scamper_trace_reply_name_get(self._r)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1175
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_name_get(self._r)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":1177
 *         if c == NULL:
 *             return None
 *         return c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1177, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1163
 *         return ScamperAddr.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1179
 *         return c.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_2tx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_2tx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_2tx___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_2tx___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1187
 *         :rtype: datetime
 *         """
 *         if self._p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_trace.scamper_trace_probe_tx_get(self._p)
*/
  __pyx_t_1 = (__pyx_v_self->_p == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1188
 *         """
 *         if self._p == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c = cscamper_trace.scamper_trace_probe_tx_get(self._p)
 *         if c == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1187
 *         :rtype: datetime
 *         """
 *         if self._p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_trace.scamper_trace_probe_tx_get(self._p)
*/
  }

  /* "scamper.pyx":1189
 *         if self._p == NULL:
 *             return None
 *         c = cscamper_trace.scamper_trace_probe_tx_get(self._p)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_trace_probe_tx_get(__pyx_v_self->_p);

  /* "scamper.pyx":1190
 *             return None
 *         c = cscamper_trace.scamper_trace_probe_tx_get(self._p)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1191
 *         c = cscamper_trace.scamper_trace_probe_tx_get(self._p)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1190
 *             return None
 *         c = cscamper_trace.scamper_trace_probe_tx_get(self._p)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":1192
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1192, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1192, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":1193
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":1194
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 1193, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1179
 *         return c.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.tx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1196
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_3rtt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_3rtt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_3rtt___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_3rtt___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1204
 *         :rtype: timedelta
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_rtt_get(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1205
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c = cscamper_trace.scamper_trace_reply_rtt_get(self._r)
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1204
 *         :rtype: timedelta
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_rtt_get(self._r)
*/
  }

  /* "scamper.pyx":1206
 *         if self._r == NULL:
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_rtt_get(self._r)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
*/
  __pyx_v_c = scamper_trace_reply_rtt_get(__pyx_v_self->_r);

  /* "scamper.pyx":1207
 *             return None
 *         c = cscamper_trace.scamper_trace_reply_rtt_get(self._r)
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_3, NULL};
    __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_4, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 1207, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_6, __pyx_t_8, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 1207, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_5, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1196
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.rtt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1209
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_7attempt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_7attempt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_7attempt___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_7attempt___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":1218
 *         :rtype: int
 *         """
 *         if self._p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_probe_id_get(self._p)
*/
  __pyx_t_1 = (__pyx_v_self->_p == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1219
 *         """
 *         if self._p == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_probe_id_get(self._p)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1218
 *         :rtype: int
 *         """
 *         if self._p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_probe_id_get(self._p)
*/
  }

  /* "scamper.pyx":1220
 *         if self._p == NULL:
 *             return None
 *         return cscamper_trace.scamper_trace_probe_id_get(self._p)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_trace_probe_id_get(__pyx_v_self->_p)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1209
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.attempt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1222
 *         return cscamper_trace.scamper_trace_probe_id_get(self._p)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9probe_ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9probe_ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_9probe_ttl___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9probe_ttl___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":1230
 *         :rtype: int
 *         """
 *         if self._p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_probe_ttl_get(self._p)
*/
  __pyx_t_1 = (__pyx_v_self->_p == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1231
 *         """
 *         if self._p == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_probe_ttl_get(self._p)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1230
 *         :rtype: int
 *         """
 *         if self._p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_probe_ttl_get(self._p)
*/
  }

  /* "scamper.pyx":1232
 *         if self._p == NULL:
 *             return None
 *         return cscamper_trace.scamper_trace_probe_ttl_get(self._p)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_trace_probe_ttl_get(__pyx_v_self->_p)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1222
 *         return cscamper_trace.scamper_trace_probe_id_get(self._p)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.probe_ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1234
 *         return cscamper_trace.scamper_trace_probe_ttl_get(self._p)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_size(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10probe_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10probe_size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_10probe_size___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10probe_size___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":1242
 *         :rtype: int
 *         """
 *         if self._p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_probe_size_get(self._p)
*/
  __pyx_t_1 = (__pyx_v_self->_p == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1243
 *         """
 *         if self._p == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_probe_size_get(self._p)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1242
 *         :rtype: int
 *         """
 *         if self._p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_probe_size_get(self._p)
*/
  }

  /* "scamper.pyx":1244
 *         if self._p == NULL:
 *             return None
 *         return cscamper_trace.scamper_trace_probe_size_get(self._p)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_trace_probe_size_get(__pyx_v_self->_p)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1234
 *         return cscamper_trace.scamper_trace_probe_ttl_get(self._p)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_size(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.probe_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1246
 *         return cscamper_trace.scamper_trace_probe_size_get(self._p)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9reply_ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9reply_ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_9reply_ttl___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9reply_ttl___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  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("__get__", 0);

  /* "scamper.pyx":1255
 *         :rtype: int
 *         """
 *         if (self._r == NULL or             # <<<<<<<<<<<<<<
 *             (cscamper_trace.scamper_trace_reply_flags_get(self._r) &
 *              SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL) == 0):
*/
  __pyx_t_2 = (__pyx_v_self->_r == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }

  /* "scamper.pyx":1256
 *         """
 *         if (self._r == NULL or
 *             (cscamper_trace.scamper_trace_reply_flags_get(self._r) &             # <<<<<<<<<<<<<<
 *              SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL) == 0):
 *             return None
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint32_t(scamper_trace_reply_flags_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "scamper.pyx":1257
 *         if (self._r == NULL or
 *             (cscamper_trace.scamper_trace_reply_flags_get(self._r) &
 *              SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL) == 0):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_ttl_get(self._r)
*/
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_TRACE_REPLY_FLAG_REPLY_T); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1257, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);

  /* "scamper.pyx":1256
 *         """
 *         if (self._r == NULL or
 *             (cscamper_trace.scamper_trace_reply_flags_get(self._r) &             # <<<<<<<<<<<<<<
 *              SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL) == 0):
 *             return None
*/
  __pyx_t_5 = PyNumber_And(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "scamper.pyx":1257
 *         if (self._r == NULL or
 *             (cscamper_trace.scamper_trace_reply_flags_get(self._r) &
 *              SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL) == 0):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_ttl_get(self._r)
*/
  __pyx_t_2 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_5, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 1257, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;

  /* "scamper.pyx":1255
 *         :rtype: int
 *         """
 *         if (self._r == NULL or             # <<<<<<<<<<<<<<
 *             (cscamper_trace.scamper_trace_reply_flags_get(self._r) &
 *              SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL) == 0):
*/
  if (__pyx_t_1) {

    /* "scamper.pyx":1258
 *             (cscamper_trace.scamper_trace_reply_flags_get(self._r) &
 *              SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL) == 0):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_ttl_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1255
 *         :rtype: int
 *         """
 *         if (self._r == NULL or             # <<<<<<<<<<<<<<
 *             (cscamper_trace.scamper_trace_reply_flags_get(self._r) &
 *              SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL) == 0):
*/
  }

  /* "scamper.pyx":1259
 *              SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL) == 0):
 *             return None
 *         return cscamper_trace.scamper_trace_reply_ttl_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyLong_From_uint8_t(scamper_trace_reply_ttl_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1259, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1246
 *         return cscamper_trace.scamper_trace_probe_size_get(self._p)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.reply_ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1261
 *         return cscamper_trace.scamper_trace_reply_ttl_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_tos(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9reply_tos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9reply_tos_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_9reply_tos___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9reply_tos___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  scamper_addr_t *__pyx_v_sa;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":1270
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1271
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1270
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
*/
  }

  /* "scamper.pyx":1272
 *         if self._r == NULL:
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)             # <<<<<<<<<<<<<<
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
 *             return None
*/
  __pyx_v_sa = scamper_trace_reply_addr_get(__pyx_v_self->_r);

  /* "scamper.pyx":1273
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_tos_get(self._r)
*/
  __pyx_t_2 = (__pyx_v_sa == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (!scamper_addr_isipv4(__pyx_v_sa));
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":1274
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_tos_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1273
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_tos_get(self._r)
*/
  }

  /* "scamper.pyx":1275
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
 *             return None
 *         return cscamper_trace.scamper_trace_reply_tos_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyLong_From_uint8_t(scamper_trace_reply_tos_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1261
 *         return cscamper_trace.scamper_trace_reply_ttl_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_tos(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.reply_tos.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1277
 *         return cscamper_trace.scamper_trace_reply_tos_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_type(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9icmp_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9icmp_type_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_9icmp_type___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9icmp_type___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":1286
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1287
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1286
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):
*/
  }

  /* "scamper.pyx":1288
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_type_get(self._r)
*/
  __pyx_t_1 = (!scamper_trace_reply_is_icmp(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":1289
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_icmp_type_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1288
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_type_get(self._r)
*/
  }

  /* "scamper.pyx":1290
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_type_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_trace_reply_icmp_type_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1277
 *         return cscamper_trace.scamper_trace_reply_tos_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_type(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.icmp_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1292
 *         return cscamper_trace.scamper_trace_reply_icmp_type_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_code(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9icmp_code_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9icmp_code_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_9icmp_code___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9icmp_code___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":1301
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1302
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1301
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):
*/
  }

  /* "scamper.pyx":1303
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_code_get(self._r)
*/
  __pyx_t_1 = (!scamper_trace_reply_is_icmp(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":1304
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_icmp_code_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1303
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_code_get(self._r)
*/
  }

  /* "scamper.pyx":1305
 *         if not cscamper_trace.scamper_trace_reply_is_icmp(self._r):
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_code_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_trace_reply_icmp_code_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1292
 *         return cscamper_trace.scamper_trace_reply_icmp_type_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_code(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.icmp_code.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1307
 *         return cscamper_trace.scamper_trace_reply_icmp_code_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_size(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10reply_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10reply_size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_10reply_size___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10reply_size___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  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_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1315
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1316
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1315
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:
*/
  }

  /* "scamper.pyx":1317
 *         if self._r == NULL:
 *             return None
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_size_get(self._r)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->_t_flags); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SCAMPER_TRACE_FLAG_RXERR); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_And(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_1 = (__Pyx_PyLong_BoolNeObjC(__pyx_t_4, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1317, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":1318
 *             return None
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_size_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1317
 *         if self._r == NULL:
 *             return None
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_size_get(self._r)
*/
  }

  /* "scamper.pyx":1319
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:
 *             return None
 *         return cscamper_trace.scamper_trace_reply_size_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyLong_From_uint16_t(scamper_trace_reply_size_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1319, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1307
 *         return cscamper_trace.scamper_trace_reply_icmp_code_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_size(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.reply_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1321
 *         return cscamper_trace.scamper_trace_reply_size_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_ipid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10reply_ipid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10reply_ipid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_10reply_ipid___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10reply_ipid___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  scamper_addr_t *__pyx_v_sa;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  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("__get__", 0);

  /* "scamper.pyx":1330
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1331
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1330
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
*/
  }

  /* "scamper.pyx":1332
 *         if self._r == NULL:
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)             # <<<<<<<<<<<<<<
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
 *             return None
*/
  __pyx_v_sa = scamper_trace_reply_addr_get(__pyx_v_self->_r);

  /* "scamper.pyx":1333
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):             # <<<<<<<<<<<<<<
 *             return None
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:
*/
  __pyx_t_2 = (__pyx_v_sa == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (!scamper_addr_isipv4(__pyx_v_sa));
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":1334
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
 *             return None             # <<<<<<<<<<<<<<
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1333
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):             # <<<<<<<<<<<<<<
 *             return None
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:
*/
  }

  /* "scamper.pyx":1335
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
 *             return None
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_ipid_get(self._r)
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint32_t(__pyx_v_self->_t_flags); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_TRACE_FLAG_RXERR); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyNumber_And(__pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = (__Pyx_PyLong_BoolNeObjC(__pyx_t_5, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 1335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":1336
 *             return None
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_ipid_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1335
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
 *             return None
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_ipid_get(self._r)
*/
  }

  /* "scamper.pyx":1337
 *         if self._t_flags & SCAMPER_TRACE_FLAG_RXERR != 0:
 *             return None
 *         return cscamper_trace.scamper_trace_reply_ipid_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_tcp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = __Pyx_PyLong_From_uint16_t(scamper_trace_reply_ipid_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1337, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1321
 *         return cscamper_trace.scamper_trace_reply_size_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_ipid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.reply_ipid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1339
 *         return cscamper_trace.scamper_trace_reply_ipid_get(self._r)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a TCP packet.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_7is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperTraceHop_6is_tcp, "\n        get method to determine if the response was a TCP packet.\n\n        :returns: True if the response was a TCP packet.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperTraceHop_7is_tcp = {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_7is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_6is_tcp};
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_7is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tcp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tcp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tcp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_6is_tcp(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_6is_tcp(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("is_tcp", 0);

  /* "scamper.pyx":1346
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_tcp(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1347
 *         """
 *         if self._r == NULL:
 *             return False             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_is_tcp(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "scamper.pyx":1346
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_tcp(self._r)
*/
  }

  /* "scamper.pyx":1348
 *         if self._r == NULL:
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_tcp(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(scamper_trace_reply_is_tcp(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1348, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1339
 *         return cscamper_trace.scamper_trace_reply_ipid_get(self._r)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a TCP packet.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.is_tcp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1350
 *         return cscamper_trace.scamper_trace_reply_is_tcp(self._r)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a ICMP packet.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperTraceHop_8is_icmp, "\n        get method to determine if the response was a ICMP packet.\n\n        :returns: True if the response was an ICMP packet.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperTraceHop_9is_icmp = {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_9is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_8is_icmp};
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_8is_icmp(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_8is_icmp(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("is_icmp", 0);

  /* "scamper.pyx":1357
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1358
 *         """
 *         if self._r == NULL:
 *             return False             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_is_icmp(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "scamper.pyx":1357
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp(self._r)
*/
  }

  /* "scamper.pyx":1359
 *         if self._r == NULL:
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_q(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(scamper_trace_reply_is_icmp(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1359, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1350
 *         return cscamper_trace.scamper_trace_reply_is_tcp(self._r)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a ICMP packet.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.is_icmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1361
 *         return cscamper_trace.scamper_trace_reply_is_icmp(self._r)
 * 
 *     def is_icmp_q(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response had an ICMP quotation
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_11is_icmp_q(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperTraceHop_10is_icmp_q, "\n        get method to determine if the response had an ICMP quotation\n\n        :returns: True if the response had an ICMP quotation\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperTraceHop_11is_icmp_q = {"is_icmp_q", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_11is_icmp_q, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_10is_icmp_q};
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_11is_icmp_q(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_q (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_q", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_q", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_10is_icmp_q(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10is_icmp_q(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("is_icmp_q", 0);

  /* "scamper.pyx":1368
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_q(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1369
 *         """
 *         if self._r == NULL:
 *             return False             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_is_icmp_q(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "scamper.pyx":1368
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_q(self._r)
*/
  }

  /* "scamper.pyx":1370
 *         if self._r == NULL:
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_q(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_unreach_port(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(scamper_trace_reply_is_icmp_q(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1370, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1361
 *         return cscamper_trace.scamper_trace_reply_is_icmp(self._r)
 * 
 *     def is_icmp_q(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response had an ICMP quotation
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.is_icmp_q", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1372
 *         return cscamper_trace.scamper_trace_reply_is_icmp_q(self._r)
 * 
 *     def is_icmp_unreach_port(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP port unreachable
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_13is_icmp_unreach_port(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperTraceHop_12is_icmp_unreach_port, "\n        get method to determine if the response was an ICMP port unreachable\n        message\n\n        :returns: True if the response was an ICMP port unreachable\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperTraceHop_13is_icmp_unreach_port = {"is_icmp_unreach_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_13is_icmp_unreach_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_12is_icmp_unreach_port};
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_13is_icmp_unreach_port(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_unreach_port (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_unreach_port", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_unreach_port", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_12is_icmp_unreach_port(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_12is_icmp_unreach_port(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("is_icmp_unreach_port", 0);

  /* "scamper.pyx":1380
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_unreach_port(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1381
 *         """
 *         if self._r == NULL:
 *             return False             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_is_icmp_unreach_port(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "scamper.pyx":1380
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_unreach_port(self._r)
*/
  }

  /* "scamper.pyx":1382
 *         if self._r == NULL:
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_unreach_port(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_echo_reply(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(scamper_trace_reply_is_icmp_unreach_port(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1372
 *         return cscamper_trace.scamper_trace_reply_is_icmp_q(self._r)
 * 
 *     def is_icmp_unreach_port(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP port unreachable
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.is_icmp_unreach_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1384
 *         return cscamper_trace.scamper_trace_reply_is_icmp_unreach_port(self._r)
 * 
 *     def is_icmp_echo_reply(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP echo reply
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_15is_icmp_echo_reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperTraceHop_14is_icmp_echo_reply, "\n        get method to determine if the response was an ICMP echo reply\n\n        :returns: True if the response was an ICMP echo reply\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperTraceHop_15is_icmp_echo_reply = {"is_icmp_echo_reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_15is_icmp_echo_reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_14is_icmp_echo_reply};
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_15is_icmp_echo_reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_echo_reply (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_echo_reply", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_echo_reply", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_14is_icmp_echo_reply(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_14is_icmp_echo_reply(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("is_icmp_echo_reply", 0);

  /* "scamper.pyx":1391
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_echo_reply(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1392
 *         """
 *         if self._r == NULL:
 *             return False             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_is_icmp_echo_reply(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "scamper.pyx":1391
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_echo_reply(self._r)
*/
  }

  /* "scamper.pyx":1393
 *         if self._r == NULL:
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_echo_reply(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_ttl_exp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(scamper_trace_reply_is_icmp_echo_reply(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1384
 *         return cscamper_trace.scamper_trace_reply_is_icmp_unreach_port(self._r)
 * 
 *     def is_icmp_echo_reply(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP echo reply
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.is_icmp_echo_reply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1395
 *         return cscamper_trace.scamper_trace_reply_is_icmp_echo_reply(self._r)
 * 
 *     def is_icmp_ttl_exp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP TTL expired
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_17is_icmp_ttl_exp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperTraceHop_16is_icmp_ttl_exp, "\n        get method to determine if the response was an ICMP TTL expired\n        (time exceeded)\n\n        :returns: True if the response was an ICMP TTL expired message\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperTraceHop_17is_icmp_ttl_exp = {"is_icmp_ttl_exp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_17is_icmp_ttl_exp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_16is_icmp_ttl_exp};
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_17is_icmp_ttl_exp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_ttl_exp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_ttl_exp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_ttl_exp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_16is_icmp_ttl_exp(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_16is_icmp_ttl_exp(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("is_icmp_ttl_exp", 0);

  /* "scamper.pyx":1403
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ttl_exp(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1404
 *         """
 *         if self._r == NULL:
 *             return False             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ttl_exp(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "scamper.pyx":1403
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ttl_exp(self._r)
*/
  }

  /* "scamper.pyx":1405
 *         if self._r == NULL:
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ttl_exp(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_ptb(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(scamper_trace_reply_is_icmp_ttl_exp(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1395
 *         return cscamper_trace.scamper_trace_reply_is_icmp_echo_reply(self._r)
 * 
 *     def is_icmp_ttl_exp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP TTL expired
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.is_icmp_ttl_exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1407
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ttl_exp(self._r)
 * 
 *     def is_icmp_ptb(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP packet too
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_19is_icmp_ptb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperTraceHop_18is_icmp_ptb, "\n        get method to determine if the response was an ICMP packet too\n        big (fragmentation needed)\n\n        :returns: True if the response was an ICMP packet too big\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperTraceHop_19is_icmp_ptb = {"is_icmp_ptb", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_19is_icmp_ptb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_18is_icmp_ptb};
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_19is_icmp_ptb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_ptb (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_ptb", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_ptb", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_18is_icmp_ptb(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_18is_icmp_ptb(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("is_icmp_ptb", 0);

  /* "scamper.pyx":1415
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1416
 *         """
 *         if self._r == NULL:
 *             return False             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "scamper.pyx":1415
 *         :rtype: bool
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r)
*/
  }

  /* "scamper.pyx":1417
 *         if self._r == NULL:
 *             return False
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyBool_FromLong(scamper_trace_reply_is_icmp_ptb(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1417, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1407
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ttl_exp(self._r)
 * 
 *     def is_icmp_ptb(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP packet too
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.is_icmp_ptb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1419
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_nhmtu(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10icmp_nhmtu_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10icmp_nhmtu_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_10icmp_nhmtu___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10icmp_nhmtu___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":1428
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r):
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1429
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1428
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r):
*/
  }

  /* "scamper.pyx":1430
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_nhmtu_get(self._r)
*/
  __pyx_t_1 = (!scamper_trace_reply_is_icmp_ptb(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":1431
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_icmp_nhmtu_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1430
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_nhmtu_get(self._r)
*/
  }

  /* "scamper.pyx":1432
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r):
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_nhmtu_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_trace_reply_icmp_nhmtu_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1419
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ptb(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_nhmtu(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.icmp_nhmtu.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1434
 *         return cscamper_trace.scamper_trace_reply_icmp_nhmtu_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10icmp_q_ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10icmp_q_ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_10icmp_q_ttl___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10icmp_q_ttl___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":1443
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1444
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1443
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
*/
  }

  /* "scamper.pyx":1445
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ttl_get(self._r)
*/
  __pyx_t_1 = (!scamper_trace_reply_is_icmp_q(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":1446
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ttl_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1445
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ttl_get(self._r)
*/
  }

  /* "scamper.pyx":1447
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ttl_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_trace_reply_icmp_q_ttl_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1434
 *         return cscamper_trace.scamper_trace_reply_icmp_nhmtu_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.icmp_q_ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1449
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ttl_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_tos(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10icmp_q_tos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10icmp_q_tos_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_10icmp_q_tos___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10icmp_q_tos___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  scamper_addr_t *__pyx_v_sa;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":1458
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1459
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1458
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
*/
  }

  /* "scamper.pyx":1460
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
*/
  __pyx_t_1 = (!scamper_trace_reply_is_icmp_q(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":1461
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1460
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
*/
  }

  /* "scamper.pyx":1462
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)             # <<<<<<<<<<<<<<
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
 *             return None
*/
  __pyx_v_sa = scamper_trace_reply_addr_get(__pyx_v_self->_r);

  /* "scamper.pyx":1463
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_q_tos_get(self._r)
*/
  __pyx_t_2 = (__pyx_v_sa == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_2 = (!scamper_addr_isipv4(__pyx_v_sa));
  __pyx_t_1 = __pyx_t_2;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":1464
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_icmp_q_tos_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1463
 *             return None
 *         sa = cscamper_trace.scamper_trace_reply_addr_get(self._r)
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_q_tos_get(self._r)
*/
  }

  /* "scamper.pyx":1465
 *         if sa == NULL or not cscamper_addr.scamper_addr_isipv4(sa):
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_q_tos_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyLong_From_uint8_t(scamper_trace_reply_icmp_q_tos_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1449
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ttl_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_tos(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.icmp_q_tos.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1467
 *         return cscamper_trace.scamper_trace_reply_icmp_q_tos_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_ipl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10icmp_q_ipl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_10icmp_q_ipl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_10icmp_q_ipl___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_10icmp_q_ipl___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":1476
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1477
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1476
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
*/
  }

  /* "scamper.pyx":1478
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ipl_get(self._r)
*/
  __pyx_t_1 = (!scamper_trace_reply_is_icmp_q(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":1479
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ipl_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1478
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ipl_get(self._r)
*/
  }

  /* "scamper.pyx":1480
 *         if not cscamper_trace.scamper_trace_reply_is_icmp_q(self._r):
 *             return None
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ipl_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_trace_reply_icmp_q_ipl_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1480, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1467
 *         return cscamper_trace.scamper_trace_reply_icmp_q_tos_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_ipl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.icmp_q_ipl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1482
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ipl_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tcp_flags(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9tcp_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9tcp_flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_9tcp_flags___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9tcp_flags___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":1490
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_tcp(self._r):
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1491
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         if not cscamper_trace.scamper_trace_reply_is_tcp(self._r):
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1490
 *         :rtype: int
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_tcp(self._r):
*/
  }

  /* "scamper.pyx":1492
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_tcp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_tcp_flags_get(self._r)
*/
  __pyx_t_1 = (!scamper_trace_reply_is_tcp(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":1493
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_tcp(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_reply_tcp_flags_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1492
 *         if self._r == NULL:
 *             return None
 *         if not cscamper_trace.scamper_trace_reply_is_tcp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_trace.scamper_trace_reply_tcp_flags_get(self._r)
*/
  }

  /* "scamper.pyx":1494
 *         if not cscamper_trace.scamper_trace_reply_is_tcp(self._r):
 *             return None
 *         return cscamper_trace.scamper_trace_reply_tcp_flags_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_trace_reply_tcp_flags_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1482
 *         return cscamper_trace.scamper_trace_reply_icmp_q_ipl_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tcp_flags(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.tcp_flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1496
 *         return cscamper_trace.scamper_trace_reply_tcp_flags_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_exts(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9icmp_exts_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_9icmp_exts_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_9icmp_exts___get__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_9icmp_exts___get__(struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  scamper_icmpexts_t *__pyx_v_ext;
  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("__get__", 0);

  /* "scamper.pyx":1504
 *         :rtype: ScamperIcmpExts
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ext = cscamper_trace.scamper_trace_reply_icmp_exts_get(self._r)
*/
  __pyx_t_1 = (__pyx_v_self->_r == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1505
 *         """
 *         if self._r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         ext = cscamper_trace.scamper_trace_reply_icmp_exts_get(self._r)
 *         return ScamperIcmpExts.from_ptr(ext)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1504
 *         :rtype: ScamperIcmpExts
 *         """
 *         if self._r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ext = cscamper_trace.scamper_trace_reply_icmp_exts_get(self._r)
*/
  }

  /* "scamper.pyx":1506
 *         if self._r == NULL:
 *             return None
 *         ext = cscamper_trace.scamper_trace_reply_icmp_exts_get(self._r)             # <<<<<<<<<<<<<<
 *         return ScamperIcmpExts.from_ptr(ext)
 * 
*/
  __pyx_v_ext = scamper_trace_reply_icmp_exts_get(__pyx_v_self->_r);

  /* "scamper.pyx":1507
 *             return None
 *         ext = cscamper_trace.scamper_trace_reply_icmp_exts_get(self._r)
 *         return ScamperIcmpExts.from_ptr(ext)             # <<<<<<<<<<<<<<
 * 
 * class _ScamperTraceHopIterator:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_15ScamperIcmpExts_from_ptr(__pyx_v_ext)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1496
 *         return cscamper_trace.scamper_trace_reply_tcp_flags_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_exts(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTraceHop.icmp_exts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_21__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperTraceHop_21__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_21__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_21__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_20__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_20__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__p_self__r_cannot_be_conver, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTraceHop.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_23__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperTraceHop_23__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_23__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperTraceHop_23__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTraceHop.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_15ScamperTraceHop_22__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTraceHop *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperTraceHop_22__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTraceHop *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__p_self__r_cannot_be_conver, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTraceHop.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1510
 * 
 * class _ScamperTraceHopIterator:
 *     def __init__(self, trace):             # <<<<<<<<<<<<<<
 *         self._trace = trace
 *         self._index = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_24_ScamperTraceHopIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_24_ScamperTraceHopIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_24_ScamperTraceHopIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_24_ScamperTraceHopIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_trace = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_trace,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1510, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1510, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1510, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 1510, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 1510, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1510, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 1510, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_trace = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 1510, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperTraceHopIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_24_ScamperTraceHopIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_trace);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_24_ScamperTraceHopIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_trace) {
  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("__init__", 0);

  /* "scamper.pyx":1511
 * class _ScamperTraceHopIterator:
 *     def __init__(self, trace):
 *         self._trace = trace             # <<<<<<<<<<<<<<
 *         self._index = 0
 *         self._hopc = trace.stop_hop
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_trace_2, __pyx_v_trace) < 0) __PYX_ERR(0, 1511, __pyx_L1_error)

  /* "scamper.pyx":1512
 *     def __init__(self, trace):
 *         self._trace = trace
 *         self._index = 0             # <<<<<<<<<<<<<<
 *         self._hopc = trace.stop_hop
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 1512, __pyx_L1_error)

  /* "scamper.pyx":1513
 *         self._trace = trace
 *         self._index = 0
 *         self._hopc = trace.stop_hop             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace, __pyx_mstate_global->__pyx_n_u_stop_hop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_hopc, __pyx_t_1) < 0) __PYX_ERR(0, 1513, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":1510
 * 
 * class _ScamperTraceHopIterator:
 *     def __init__(self, trace):             # <<<<<<<<<<<<<<
 *         self._trace = trace
 *         self._index = 0
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper._ScamperTraceHopIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1515
 *         self._hopc = trace.stop_hop
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_24_ScamperTraceHopIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_24_ScamperTraceHopIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_24_ScamperTraceHopIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_24_ScamperTraceHopIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1515, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1515, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 1515, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 1515, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1515, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1515, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperTraceHopIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_24_ScamperTraceHopIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_24_ScamperTraceHopIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":1516
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":1515
 *         self._hopc = trace.stop_hop
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1518
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._index < self._hopc:
 *             hop = self._trace.hop(self._index)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_24_ScamperTraceHopIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_24_ScamperTraceHopIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_24_ScamperTraceHopIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_24_ScamperTraceHopIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1518, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1518, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 1518, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 1518, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1518, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1518, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperTraceHopIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_24_ScamperTraceHopIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_24_ScamperTraceHopIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_hop = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":1519
 * 
 *     def __next__(self):
 *         if self._index < self._hopc:             # <<<<<<<<<<<<<<
 *             hop = self._trace.hop(self._index)
 *             self._index += 1
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_hopc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1519, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 1519, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":1520
 *     def __next__(self):
 *         if self._index < self._hopc:
 *             hop = self._trace.hop(self._index)             # <<<<<<<<<<<<<<
 *             self._index += 1
 *             return hop
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_trace_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_hop, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1520, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_hop = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":1521
 *         if self._index < self._hopc:
 *             hop = self._trace.hop(self._index)
 *             self._index += 1             # <<<<<<<<<<<<<<
 *             return hop
 *         raise StopIteration
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1521, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_1) < 0) __PYX_ERR(0, 1521, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":1522
 *             hop = self._trace.hop(self._index)
 *             self._index += 1
 *             return hop             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_hop);
    __pyx_r = __pyx_v_hop;
    goto __pyx_L0;

    /* "scamper.pyx":1519
 * 
 *     def __next__(self):
 *         if self._index < self._hopc:             # <<<<<<<<<<<<<<
 *             hop = self._trace.hop(self._index)
 *             self._index += 1
*/
  }

  /* "scamper.pyx":1523
 *             self._index += 1
 *             return hop
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTracePmtudNote:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 1523, __pyx_L1_error)

  /* "scamper.pyx":1518
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._index < self._hopc:
 *             hop = self._trace.hop(self._index)
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperTraceHopIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_hop);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1534
 *     cdef uint8_t _dist
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_21ScamperTracePmtudNote_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_21ScamperTracePmtudNote_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_21ScamperTracePmtudNote___init__(((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_21ScamperTracePmtudNote___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":1535
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1535, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 1535, __pyx_L1_error)

  /* "scamper.pyx":1534
 *     cdef uint8_t _dist
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracePmtudNote.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1537
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_trace.scamper_trace_pmtud_note_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_21ScamperTracePmtudNote_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_21ScamperTracePmtudNote_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_21ScamperTracePmtudNote_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_21ScamperTracePmtudNote_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":1538
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_pmtud_note_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1539
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_trace.scamper_trace_pmtud_note_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_trace_pmtud_note_free(__pyx_v_self->_c);

    /* "scamper.pyx":1538
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_pmtud_note_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":1537
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_trace.scamper_trace_pmtud_note_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":1541
 *             cscamper_trace.scamper_trace_pmtud_note_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracePmtudNote from_ptr(cscamper_trace.scamper_trace_pmtud_note_t *ptr, uint8_t dist, uint32_t t_flags):
 *         cdef ScamperTracePmtudNote n
*/

static struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_f_7scamper_21ScamperTracePmtudNote_from_ptr(scamper_trace_pmtud_note_t *__pyx_v_ptr, uint8_t __pyx_v_dist, uint32_t __pyx_v_t_flags) {
  struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_n = 0;
  struct __pyx_obj_7scamper_ScamperTracePmtudNote *__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("from_ptr", 0);

  /* "scamper.pyx":1544
 *     cdef ScamperTracePmtudNote from_ptr(cscamper_trace.scamper_trace_pmtud_note_t *ptr, uint8_t dist, uint32_t t_flags):
 *         cdef ScamperTracePmtudNote n
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         n = ScamperTracePmtudNote.__new__(ScamperTracePmtudNote)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1545
 *         cdef ScamperTracePmtudNote n
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         n = ScamperTracePmtudNote.__new__(ScamperTracePmtudNote)
 *         n._c = cscamper_trace.scamper_trace_pmtud_note_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1544
 *     cdef ScamperTracePmtudNote from_ptr(cscamper_trace.scamper_trace_pmtud_note_t *ptr, uint8_t dist, uint32_t t_flags):
 *         cdef ScamperTracePmtudNote n
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         n = ScamperTracePmtudNote.__new__(ScamperTracePmtudNote)
*/
  }

  /* "scamper.pyx":1546
 *         if ptr == NULL:
 *             return None
 *         n = ScamperTracePmtudNote.__new__(ScamperTracePmtudNote)             # <<<<<<<<<<<<<<
 *         n._c = cscamper_trace.scamper_trace_pmtud_note_use(ptr)
 *         n._dist = dist
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTracePmtudNote(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracePmtudNote), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1546, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_n = ((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":1547
 *             return None
 *         n = ScamperTracePmtudNote.__new__(ScamperTracePmtudNote)
 *         n._c = cscamper_trace.scamper_trace_pmtud_note_use(ptr)             # <<<<<<<<<<<<<<
 *         n._dist = dist
 *         n._t_flags = t_flags
*/
  __pyx_v_n->_c = scamper_trace_pmtud_note_use(__pyx_v_ptr);

  /* "scamper.pyx":1548
 *         n = ScamperTracePmtudNote.__new__(ScamperTracePmtudNote)
 *         n._c = cscamper_trace.scamper_trace_pmtud_note_use(ptr)
 *         n._dist = dist             # <<<<<<<<<<<<<<
 *         n._t_flags = t_flags
 *         return n
*/
  __pyx_v_n->_dist = __pyx_v_dist;

  /* "scamper.pyx":1549
 *         n._c = cscamper_trace.scamper_trace_pmtud_note_use(ptr)
 *         n._dist = dist
 *         n._t_flags = t_flags             # <<<<<<<<<<<<<<
 *         return n
 * 
*/
  __pyx_v_n->_t_flags = __pyx_v_t_flags;

  /* "scamper.pyx":1550
 *         n._dist = dist
 *         n._t_flags = t_flags
 *         return n             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_n);
  __pyx_r = __pyx_v_n;
  goto __pyx_L0;

  /* "scamper.pyx":1541
 *             cscamper_trace.scamper_trace_pmtud_note_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracePmtudNote from_ptr(cscamper_trace.scamper_trace_pmtud_note_t *ptr, uint8_t dist, uint32_t t_flags):
 *         cdef ScamperTracePmtudNote n
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracePmtudNote.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_n);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1552
 *         return n
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def type_str(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_8type_str_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_8type_str_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_21ScamperTracePmtudNote_8type_str___get__(((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_8type_str___get__(struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1561
 *         """
 *         cdef char buf[128]
 *         cscamper_trace.scamper_trace_pmtud_note_type_tostr(self._c, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_trace_pmtud_note_type_tostr(__pyx_v_self->_c, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":1562
 *         cdef char buf[128]
 *         cscamper_trace.scamper_trace_pmtud_note_type_tostr(self._c, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1562, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1562, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1552
 *         return n
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def type_str(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracePmtudNote.type_str.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1564
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nhmtu(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_5nhmtu_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_5nhmtu_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_21ScamperTracePmtudNote_5nhmtu___get__(((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_5nhmtu___get__(struct __pyx_obj_7scamper_ScamperTracePmtudNote *__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("__get__", 0);

  /* "scamper.pyx":1572
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_pmtud_note_nhmtu_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_trace_pmtud_note_nhmtu_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1572, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1564
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nhmtu(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracePmtudNote.nhmtu.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1574
 *         return cscamper_trace.scamper_trace_pmtud_note_nhmtu_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def distance(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_8distance_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_8distance_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_21ScamperTracePmtudNote_8distance___get__(((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_8distance___get__(struct __pyx_obj_7scamper_ScamperTracePmtudNote *__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("__get__", 0);

  /* "scamper.pyx":1584
 *         :rtype: int
 *         """
 *         return self._dist             # <<<<<<<<<<<<<<
 * 
 *     def hop(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_self->_dist); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1584, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1574
 *         return cscamper_trace.scamper_trace_pmtud_note_nhmtu_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def distance(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracePmtudNote.distance.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1586
 *         return self._dist
 * 
 *     def hop(self):             # <<<<<<<<<<<<<<
 *         """
 *         method to obtain information about a PMTUD probe and response
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_5hop(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_21ScamperTracePmtudNote_4hop, "\n        method to obtain information about a PMTUD probe and response\n        associated with the note, if there is one.\n\n        :returns: information about the probe / response\n        :rtype: ScamperTraceHop\n        ");
static PyMethodDef __pyx_mdef_7scamper_21ScamperTracePmtudNote_5hop = {"hop", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_21ScamperTracePmtudNote_5hop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_21ScamperTracePmtudNote_4hop};
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_5hop(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hop (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("hop", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("hop", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_21ScamperTracePmtudNote_4hop(((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_4hop(struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self) {
  scamper_trace_probe_t *__pyx_v_probe;
  scamper_trace_reply_t *__pyx_v_reply;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("hop", 0);

  /* "scamper.pyx":1594
 *         :rtype: ScamperTraceHop
 *         """
 *         probe = cscamper_trace.scamper_trace_pmtud_note_probe_get(self._c)             # <<<<<<<<<<<<<<
 *         reply = cscamper_trace.scamper_trace_pmtud_note_reply_get(self._c)
 *         if probe == NULL or reply == NULL:
*/
  __pyx_v_probe = scamper_trace_pmtud_note_probe_get(__pyx_v_self->_c);

  /* "scamper.pyx":1595
 *         """
 *         probe = cscamper_trace.scamper_trace_pmtud_note_probe_get(self._c)
 *         reply = cscamper_trace.scamper_trace_pmtud_note_reply_get(self._c)             # <<<<<<<<<<<<<<
 *         if probe == NULL or reply == NULL:
 *             return None
*/
  __pyx_v_reply = scamper_trace_pmtud_note_reply_get(__pyx_v_self->_c);

  /* "scamper.pyx":1596
 *         probe = cscamper_trace.scamper_trace_pmtud_note_probe_get(self._c)
 *         reply = cscamper_trace.scamper_trace_pmtud_note_reply_get(self._c)
 *         if probe == NULL or reply == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return ScamperTraceHop.from_ptr(probe, reply, self._t_flags)
*/
  __pyx_t_2 = (__pyx_v_probe == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_reply == NULL);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":1597
 *         reply = cscamper_trace.scamper_trace_pmtud_note_reply_get(self._c)
 *         if probe == NULL or reply == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return ScamperTraceHop.from_ptr(probe, reply, self._t_flags)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1596
 *         probe = cscamper_trace.scamper_trace_pmtud_note_probe_get(self._c)
 *         reply = cscamper_trace.scamper_trace_pmtud_note_reply_get(self._c)
 *         if probe == NULL or reply == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return ScamperTraceHop.from_ptr(probe, reply, self._t_flags)
*/
  }

  /* "scamper.pyx":1598
 *         if probe == NULL or reply == NULL:
 *             return None
 *         return ScamperTraceHop.from_ptr(probe, reply, self._t_flags)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTracePmtud:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_15ScamperTraceHop_from_ptr(__pyx_v_probe, __pyx_v_reply, __pyx_v_self->_t_flags)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1598, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1586
 *         return self._dist
 * 
 *     def hop(self):             # <<<<<<<<<<<<<<
 *         """
 *         method to obtain information about a PMTUD probe and response
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracePmtudNote.hop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_21ScamperTracePmtudNote_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_21ScamperTracePmtudNote_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_21ScamperTracePmtudNote_6__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracePmtudNote.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_21ScamperTracePmtudNote_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_21ScamperTracePmtudNote_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_21ScamperTracePmtudNote_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracePmtudNote.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_21ScamperTracePmtudNote_8__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_21ScamperTracePmtudNote_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtudNote *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracePmtudNote.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1608
 *     cdef ScamperTrace _trace
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_17ScamperTracePmtud_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_17ScamperTracePmtud_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_17ScamperTracePmtud___init__(((struct __pyx_obj_7scamper_ScamperTracePmtud *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_17ScamperTracePmtud___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":1609
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 1609, __pyx_L1_error)

  /* "scamper.pyx":1608
 *     cdef ScamperTrace _trace
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracePmtud.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1611
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_trace.scamper_trace_pmtud_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_17ScamperTracePmtud_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_17ScamperTracePmtud_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_17ScamperTracePmtud_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTracePmtud *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_17ScamperTracePmtud_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":1612
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_pmtud_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1613
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_trace.scamper_trace_pmtud_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_trace_pmtud_free(__pyx_v_self->_c);

    /* "scamper.pyx":1612
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_pmtud_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":1611
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_trace.scamper_trace_pmtud_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":1615
 *             cscamper_trace.scamper_trace_pmtud_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracePmtud from_ptr(ScamperTrace trace):
 *         cdef ScamperTracePmtud p
*/

static struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_f_7scamper_17ScamperTracePmtud_from_ptr(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_trace) {
  struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_p = 0;
  scamper_trace_pmtud_t *__pyx_v_pmtud;
  struct __pyx_obj_7scamper_ScamperTracePmtud *__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("from_ptr", 0);

  /* "scamper.pyx":1618
 *     cdef ScamperTracePmtud from_ptr(ScamperTrace trace):
 *         cdef ScamperTracePmtud p
 *         pmtud = cscamper_trace.scamper_trace_pmtud_get(trace._c)             # <<<<<<<<<<<<<<
 *         if pmtud == NULL:
 *             return None
*/
  __pyx_v_pmtud = scamper_trace_pmtud_get(__pyx_v_trace->_c);

  /* "scamper.pyx":1619
 *         cdef ScamperTracePmtud p
 *         pmtud = cscamper_trace.scamper_trace_pmtud_get(trace._c)
 *         if pmtud == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         p = ScamperTracePmtud.__new__(ScamperTracePmtud)
*/
  __pyx_t_1 = (__pyx_v_pmtud == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1620
 *         pmtud = cscamper_trace.scamper_trace_pmtud_get(trace._c)
 *         if pmtud == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         p = ScamperTracePmtud.__new__(ScamperTracePmtud)
 *         p._c = cscamper_trace.scamper_trace_pmtud_use(pmtud)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperTracePmtud *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1619
 *         cdef ScamperTracePmtud p
 *         pmtud = cscamper_trace.scamper_trace_pmtud_get(trace._c)
 *         if pmtud == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         p = ScamperTracePmtud.__new__(ScamperTracePmtud)
*/
  }

  /* "scamper.pyx":1621
 *         if pmtud == NULL:
 *             return None
 *         p = ScamperTracePmtud.__new__(ScamperTracePmtud)             # <<<<<<<<<<<<<<
 *         p._c = cscamper_trace.scamper_trace_pmtud_use(pmtud)
 *         p._trace = trace
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTracePmtud(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracePmtud), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1621, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_p = ((struct __pyx_obj_7scamper_ScamperTracePmtud *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":1622
 *             return None
 *         p = ScamperTracePmtud.__new__(ScamperTracePmtud)
 *         p._c = cscamper_trace.scamper_trace_pmtud_use(pmtud)             # <<<<<<<<<<<<<<
 *         p._trace = trace
 *         return p
*/
  __pyx_v_p->_c = scamper_trace_pmtud_use(__pyx_v_pmtud);

  /* "scamper.pyx":1623
 *         p = ScamperTracePmtud.__new__(ScamperTracePmtud)
 *         p._c = cscamper_trace.scamper_trace_pmtud_use(pmtud)
 *         p._trace = trace             # <<<<<<<<<<<<<<
 *         return p
 * 
*/
  __Pyx_INCREF((PyObject *)__pyx_v_trace);
  __Pyx_GIVEREF((PyObject *)__pyx_v_trace);
  __Pyx_GOTREF((PyObject *)__pyx_v_p->_trace);
  __Pyx_DECREF((PyObject *)__pyx_v_p->_trace);
  __pyx_v_p->_trace = __pyx_v_trace;

  /* "scamper.pyx":1624
 *         p._c = cscamper_trace.scamper_trace_pmtud_use(pmtud)
 *         p._trace = trace
 *         return p             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_p);
  __pyx_r = __pyx_v_p;
  goto __pyx_L0;

  /* "scamper.pyx":1615
 *             cscamper_trace.scamper_trace_pmtud_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracePmtud from_ptr(ScamperTrace trace):
 *         cdef ScamperTracePmtud p
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracePmtud.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_p);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1626
 *         return p
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def path_mtu(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_8path_mtu_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_8path_mtu_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_17ScamperTracePmtud_8path_mtu___get__(((struct __pyx_obj_7scamper_ScamperTracePmtud *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_8path_mtu___get__(struct __pyx_obj_7scamper_ScamperTracePmtud *__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("__get__", 0);

  /* "scamper.pyx":1634
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_pmtud_pmtu_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_trace_pmtud_pmtu_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1626
 *         return p
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def path_mtu(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracePmtud.path_mtu.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1636
 *         return cscamper_trace.scamper_trace_pmtud_pmtu_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def if_mtu(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_6if_mtu_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_6if_mtu_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_17ScamperTracePmtud_6if_mtu___get__(((struct __pyx_obj_7scamper_ScamperTracePmtud *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_6if_mtu___get__(struct __pyx_obj_7scamper_ScamperTracePmtud *__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("__get__", 0);

  /* "scamper.pyx":1644
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_trace_pmtud_ifmtu_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1644, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1636
 *         return cscamper_trace.scamper_trace_pmtud_pmtu_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def if_mtu(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracePmtud.if_mtu.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1646
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def out_mtu(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_7out_mtu_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_7out_mtu_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_17ScamperTracePmtud_7out_mtu___get__(((struct __pyx_obj_7scamper_ScamperTracePmtud *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_7out_mtu___get__(struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self) {
  uint16_t __pyx_v_out_mtu;
  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("__get__", 0);

  /* "scamper.pyx":1654
 *         :rtype: int
 *         """
 *         out_mtu = cscamper_trace.scamper_trace_pmtud_outmtu_get(self._c)             # <<<<<<<<<<<<<<
 *         if out_mtu != 0:
 *             return out_mtu
*/
  __pyx_v_out_mtu = scamper_trace_pmtud_outmtu_get(__pyx_v_self->_c);

  /* "scamper.pyx":1655
 *         """
 *         out_mtu = cscamper_trace.scamper_trace_pmtud_outmtu_get(self._c)
 *         if out_mtu != 0:             # <<<<<<<<<<<<<<
 *             return out_mtu
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_out_mtu != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":1656
 *         out_mtu = cscamper_trace.scamper_trace_pmtud_outmtu_get(self._c)
 *         if out_mtu != 0:
 *             return out_mtu             # <<<<<<<<<<<<<<
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_out_mtu); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1656, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":1655
 *         """
 *         out_mtu = cscamper_trace.scamper_trace_pmtud_outmtu_get(self._c)
 *         if out_mtu != 0:             # <<<<<<<<<<<<<<
 *             return out_mtu
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)
*/
  }

  /* "scamper.pyx":1657
 *         if out_mtu != 0:
 *             return out_mtu
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def notes(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_trace_pmtud_ifmtu_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1646
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def out_mtu(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracePmtud.out_mtu.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7scamper_17ScamperTracePmtud_6generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "scamper.pyx":1659
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)
 * 
 *     def notes(self):             # <<<<<<<<<<<<<<
 *         """
 *         a generator that yields ScamperTracePmtudNote structures
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_5notes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_17ScamperTracePmtud_4notes, "\n        a generator that yields ScamperTracePmtudNote structures\n        ");
static PyMethodDef __pyx_mdef_7scamper_17ScamperTracePmtud_5notes = {"notes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_17ScamperTracePmtud_5notes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_17ScamperTracePmtud_4notes};
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_5notes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("notes (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("notes", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("notes", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_17ScamperTracePmtud_4notes(((struct __pyx_obj_7scamper_ScamperTracePmtud *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_4notes(struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self) {
  struct __pyx_obj_7scamper___pyx_scope_struct__notes *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("notes", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct__notes *)__pyx_tp_new_7scamper___pyx_scope_struct__notes(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct__notes, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct__notes *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 1659, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7scamper_17ScamperTracePmtud_6generator, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_notes, __pyx_mstate_global->__pyx_n_u_ScamperTracePmtud_notes, __pyx_mstate_global->__pyx_n_u_scamper); if (unlikely(!gen)) __PYX_ERR(0, 1659, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracePmtud.notes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7scamper_17ScamperTracePmtud_6generator(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7scamper___pyx_scope_struct__notes *__pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct__notes *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("notes", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L8_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 1659, __pyx_L1_error)
  }

  /* "scamper.pyx":1666
 *         cdef cscamper_trace.scamper_trace_pmtud_note_t *note
 * 
 *         nit = cscamper_trace.scamper_trace_pmtud_noteiter_alloc()             # <<<<<<<<<<<<<<
 *         if nit == NULL:
 *             return
*/
  __pyx_cur_scope->__pyx_v_nit = scamper_trace_pmtud_noteiter_alloc();

  /* "scamper.pyx":1667
 * 
 *         nit = cscamper_trace.scamper_trace_pmtud_noteiter_alloc()
 *         if nit == NULL:             # <<<<<<<<<<<<<<
 *             return
 * 
*/
  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_nit == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1668
 *         nit = cscamper_trace.scamper_trace_pmtud_noteiter_alloc()
 *         if nit == NULL:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         t_flags = cscamper_trace.scamper_trace_flags_get(self._trace._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1667
 * 
 *         nit = cscamper_trace.scamper_trace_pmtud_noteiter_alloc()
 *         if nit == NULL:             # <<<<<<<<<<<<<<
 *             return
 * 
*/
  }

  /* "scamper.pyx":1670
 *             return
 * 
 *         t_flags = cscamper_trace.scamper_trace_flags_get(self._trace._c)             # <<<<<<<<<<<<<<
 * 
 *         while 1:
*/
  __pyx_cur_scope->__pyx_v_t_flags = scamper_trace_flags_get(__pyx_cur_scope->__pyx_v_self->_trace->_c);

  /* "scamper.pyx":1672
 *         t_flags = cscamper_trace.scamper_trace_flags_get(self._trace._c)
 * 
 *         while 1:             # <<<<<<<<<<<<<<
 *             note = cscamper_trace.scamper_trace_pmtud_noteiter_next(self._trace._c, nit)
 *             if note == NULL:
*/
  while (1) {

    /* "scamper.pyx":1673
 * 
 *         while 1:
 *             note = cscamper_trace.scamper_trace_pmtud_noteiter_next(self._trace._c, nit)             # <<<<<<<<<<<<<<
 *             if note == NULL:
 *                 break
*/
    __pyx_cur_scope->__pyx_v_note = scamper_trace_pmtud_noteiter_next(__pyx_cur_scope->__pyx_v_self->_trace->_c, __pyx_cur_scope->__pyx_v_nit);

    /* "scamper.pyx":1674
 *         while 1:
 *             note = cscamper_trace.scamper_trace_pmtud_noteiter_next(self._trace._c, nit)
 *             if note == NULL:             # <<<<<<<<<<<<<<
 *                 break
 *             dist = cscamper_trace.scamper_trace_pmtud_noteiter_dist_get(self._trace._c, nit)
*/
    __pyx_t_1 = (__pyx_cur_scope->__pyx_v_note == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":1675
 *             note = cscamper_trace.scamper_trace_pmtud_noteiter_next(self._trace._c, nit)
 *             if note == NULL:
 *                 break             # <<<<<<<<<<<<<<
 *             dist = cscamper_trace.scamper_trace_pmtud_noteiter_dist_get(self._trace._c, nit)
 *             yield ScamperTracePmtudNote.from_ptr(note, dist, t_flags)
*/
      goto __pyx_L6_break;

      /* "scamper.pyx":1674
 *         while 1:
 *             note = cscamper_trace.scamper_trace_pmtud_noteiter_next(self._trace._c, nit)
 *             if note == NULL:             # <<<<<<<<<<<<<<
 *                 break
 *             dist = cscamper_trace.scamper_trace_pmtud_noteiter_dist_get(self._trace._c, nit)
*/
    }

    /* "scamper.pyx":1676
 *             if note == NULL:
 *                 break
 *             dist = cscamper_trace.scamper_trace_pmtud_noteiter_dist_get(self._trace._c, nit)             # <<<<<<<<<<<<<<
 *             yield ScamperTracePmtudNote.from_ptr(note, dist, t_flags)
 * 
*/
    __pyx_cur_scope->__pyx_v_dist = scamper_trace_pmtud_noteiter_dist_get(__pyx_cur_scope->__pyx_v_self->_trace->_c, __pyx_cur_scope->__pyx_v_nit);

    /* "scamper.pyx":1677
 *                 break
 *             dist = cscamper_trace.scamper_trace_pmtud_noteiter_dist_get(self._trace._c, nit)
 *             yield ScamperTracePmtudNote.from_ptr(note, dist, t_flags)             # <<<<<<<<<<<<<<
 * 
 *         cscamper_trace.scamper_trace_pmtud_noteiter_free(nit)
*/
    __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_21ScamperTracePmtudNote_from_ptr(__pyx_cur_scope->__pyx_v_note, __pyx_cur_scope->__pyx_v_dist, __pyx_cur_scope->__pyx_v_t_flags)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1677, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L8_resume_from_yield:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 1677, __pyx_L1_error)
  }
  __pyx_L6_break:;

  /* "scamper.pyx":1679
 *             yield ScamperTracePmtudNote.from_ptr(note, dist, t_flags)
 * 
 *         cscamper_trace.scamper_trace_pmtud_noteiter_free(nit)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTrace:
*/
  scamper_trace_pmtud_noteiter_free(__pyx_cur_scope->__pyx_v_nit);
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "scamper.pyx":1659
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)
 * 
 *     def notes(self):             # <<<<<<<<<<<<<<
 *         """
 *         a generator that yields ScamperTracePmtudNote structures
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("notes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_8__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_17ScamperTracePmtud_8__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_17ScamperTracePmtud_8__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_8__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_17ScamperTracePmtud_7__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTracePmtud *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_7__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracePmtud.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_10__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_17ScamperTracePmtud_10__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_17ScamperTracePmtud_10__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_17ScamperTracePmtud_10__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracePmtud.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_17ScamperTracePmtud_9__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTracePmtud *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_17ScamperTracePmtud_9__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracePmtud *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracePmtud.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1689
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_12ScamperTrace_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_12ScamperTrace_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace___init__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_12ScamperTrace___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":1690
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1690, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 1690, __pyx_L1_error)

  /* "scamper.pyx":1689
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1692
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_trace.scamper_trace_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_12ScamperTrace_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_12ScamperTrace_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_12ScamperTrace_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_12ScamperTrace_2__dealloc__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":1693
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1694
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_trace.scamper_trace_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    scamper_trace_free(__pyx_v_self->_c);

    /* "scamper.pyx":1693
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":1692
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_trace.scamper_trace_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":1696
 *             cscamper_trace.scamper_trace_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         c = cscamper_trace.scamper_trace_totext(self._c, NULL)
 *         if c == NULL:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_4__str__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_4__str__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":1697
 * 
 *     def __str__(self):
 *         c = cscamper_trace.scamper_trace_totext(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_trace_totext(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":1698
 *     def __str__(self):
 *         c = cscamper_trace.scamper_trace_totext(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1699
 *         c = cscamper_trace.scamper_trace_totext(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1698
 *     def __str__(self):
 *         c = cscamper_trace.scamper_trace_totext(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":1700
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1700, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":1701
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":1702
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":1696
 *             cscamper_trace.scamper_trace_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         c = cscamper_trace.scamper_trace_totext(self._c, NULL)
 *         if c == NULL:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1704
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTrace from_ptr(cscamper_trace.scamper_trace_t *ptr):
 *         cdef ScamperTrace trace = ScamperTrace.__new__(ScamperTrace)
*/

static struct __pyx_obj_7scamper_ScamperTrace *__pyx_f_7scamper_12ScamperTrace_from_ptr(scamper_trace_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_trace = 0;
  struct __pyx_obj_7scamper_ScamperTrace *__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("from_ptr", 0);

  /* "scamper.pyx":1706
 *     @staticmethod
 *     cdef ScamperTrace from_ptr(cscamper_trace.scamper_trace_t *ptr):
 *         cdef ScamperTrace trace = ScamperTrace.__new__(ScamperTrace)             # <<<<<<<<<<<<<<
 *         trace._c = ptr
 *         return trace
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTrace(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1706, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_trace = ((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":1707
 *     cdef ScamperTrace from_ptr(cscamper_trace.scamper_trace_t *ptr):
 *         cdef ScamperTrace trace = ScamperTrace.__new__(ScamperTrace)
 *         trace._c = ptr             # <<<<<<<<<<<<<<
 *         return trace
 * 
*/
  __pyx_v_trace->_c = __pyx_v_ptr;

  /* "scamper.pyx":1708
 *         cdef ScamperTrace trace = ScamperTrace.__new__(ScamperTrace)
 *         trace._c = ptr
 *         return trace             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_trace);
  __pyx_r = __pyx_v_trace;
  goto __pyx_L0;

  /* "scamper.pyx":1704
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTrace from_ptr(cscamper_trace.scamper_trace_t *ptr):
 *         cdef ScamperTrace trace = ScamperTrace.__new__(ScamperTrace)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_trace);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1710
 *         return trace
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_4inst___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_4inst___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1719
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":1710
 *         return trace
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1721
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_4list_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_4list_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_4list___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_4list___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  scamper_list_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":1729
 *         :rtype: ScamperList
 *         """
 *         c = cscamper_trace.scamper_trace_list_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperList.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_trace_list_get(__pyx_v_self->_c);

  /* "scamper.pyx":1730
 *         """
 *         c = cscamper_trace.scamper_trace_list_get(self._c)
 *         return ScamperList.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1730, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1721
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.list.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1732
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_5cycle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_5cycle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_5cycle___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_5cycle___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  scamper_cycle_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uint16_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1740
 *         :rtype: ScamperCycle
 *         """
 *         c = cscamper_trace.scamper_trace_cycle_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
*/
  __pyx_v_c = scamper_trace_cycle_get(__pyx_v_self->_c);

  /* "scamper.pyx":1741
 *         """
 *         c = cscamper_trace.scamper_trace_cycle_get(self._c)
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1741, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1732
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.cycle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1743
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_6userid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_6userid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_6userid___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_6userid___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":1751
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_userid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_trace_userid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1751, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1743
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.userid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1753
 *         return cscamper_trace.scamper_trace_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_5start___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_5start___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1761
 *         :rtype: datetime
 *         """
 *         c = cscamper_trace.scamper_trace_start_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_trace_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":1762
 *         """
 *         c = cscamper_trace.scamper_trace_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1763
 *         c = cscamper_trace.scamper_trace_start_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1762
 *         """
 *         c = cscamper_trace.scamper_trace_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":1764
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1764, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":1765
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":1766
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     def to_json(self):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 1766, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 1765, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 1765, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1765, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1753
 *         return cscamper_trace.scamper_trace_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperTrace.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1768
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this traceroute measurement.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_7to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_6to_json, "\n        get method to obtain a JSON rendering of this traceroute measurement.\n\n        :returns: json representation\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_7to_json = {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_7to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_6to_json};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_7to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_json (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("to_json", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("to_json", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_6to_json(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_6to_json(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_json", 0);

  /* "scamper.pyx":1775
 *         :rtype: string
 *         """
 *         c = cscamper_trace.scamper_trace_tojson(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_trace_tojson(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":1776
 *         """
 *         c = cscamper_trace.scamper_trace_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":1777
 *         c = cscamper_trace.scamper_trace_tojson(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1776
 *         """
 *         c = cscamper_trace.scamper_trace_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":1778
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1778, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1778, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":1779
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":1780
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":1768
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this traceroute measurement.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.to_json", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1782
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop_reason(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_11stop_reason_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_11stop_reason_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_11stop_reason___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_11stop_reason___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_c;
  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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1790
 *         :rtype: ScamperTraceStop
 *         """
 *         c = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperTraceStop(c)
 * 
*/
  __pyx_v_c = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":1791
 *         """
 *         c = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         return ScamperTraceStop(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_uint8_t(__pyx_v_c); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1791, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1782
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop_reason(self):
 *         """
*/

  /* 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_AddTraceback("scamper.ScamperTrace.stop_reason.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1793
 *         return ScamperTraceStop(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop_reason_str(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_15stop_reason_str_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_15stop_reason_str_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_15stop_reason_str___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_15stop_reason_str___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1802
 *         """
 *         cdef char buf[128]
 *         cscamper_trace.scamper_trace_stop_tostr(self._c, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict').lower()
 * 
*/
  (void)(scamper_trace_stop_tostr(__pyx_v_self->_c, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":1803
 *         cdef char buf[128]
 *         cscamper_trace.scamper_trace_stop_tostr(self._c, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict').lower()             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1803, __pyx_L1_error)
  __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1803, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = __pyx_t_4;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1803, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1793
 *         return ScamperTraceStop(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop_reason_str(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperTrace.stop_reason_str.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1805
 *         return buf.decode('UTF-8', 'strict').lower()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_3src___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_3src___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":1813
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_trace.scamper_trace_src_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_trace_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":1814
 *         """
 *         c_a = cscamper_trace.scamper_trace_src_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1814, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1805
 *         return buf.decode('UTF-8', 'strict').lower()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1816
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_3dst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_3dst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_3dst___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_3dst___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":1824
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_trace.scamper_trace_dst_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_trace_dst_get(__pyx_v_self->_c);

  /* "scamper.pyx":1825
 *         """
 *         c_a = cscamper_trace.scamper_trace_dst_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1816
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.dst.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1827
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtr(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_3rtr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_3rtr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_3rtr___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_3rtr___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":1836
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_trace.scamper_trace_rtr_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_trace_rtr_get(__pyx_v_self->_c);

  /* "scamper.pyx":1837
 *         """
 *         c_a = cscamper_trace.scamper_trace_rtr_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     def hop(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1837, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1827
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtr(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.rtr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1839
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     def hop(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         hop(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_9hop(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_8hop, "\n        hop(i)\n        get method to obtain a hop at a specific distance, starting at zero.\n\n        :returns: the nominated hop\n        :rtype: ScamperTraceHop\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_9hop = {"hop", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_9hop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_8hop};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_9hop(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hop (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1839, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1839, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "hop", 0) < 0) __PYX_ERR(0, 1839, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("hop", 1, 1, 1, i); __PYX_ERR(0, 1839, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1839, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("hop", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 1839, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTrace.hop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_8hop(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_8hop(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_trace_hopiter_t *__pyx_v_hi;
  scamper_trace_reply_t *__pyx_v_r;
  scamper_trace_probe_t *__pyx_v_p;
  uint32_t __pyx_v_t_flags;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  uint8_t __pyx_t_8;
  uint8_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hop", 0);

  /* "scamper.pyx":1847
 *         :rtype: ScamperTraceHop
 *         """
 *         if i < 0 or i >= 255:             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid hop index: " + i)
 *         hi = cscamper_trace.scamper_trace_hopiter_alloc()
*/
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1847, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1847, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_i, __pyx_mstate_global->__pyx_int_255, Py_GE); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1847, __pyx_L1_error)
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 1847, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":1848
 *         """
 *         if i < 0 or i >= 255:
 *             raise ValueError("invalid hop index: " + i)             # <<<<<<<<<<<<<<
 *         hi = cscamper_trace.scamper_trace_hopiter_alloc()
 *         if hi == NULL:
*/
    __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_5 = __pyx_builtin_ValueError; 
    __pyx_t_6 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_invalid_hop_index, __pyx_v_i); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1848, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1848, __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_ERR(0, 1848, __pyx_L1_error)

    /* "scamper.pyx":1847
 *         :rtype: ScamperTraceHop
 *         """
 *         if i < 0 or i >= 255:             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid hop index: " + i)
 *         hi = cscamper_trace.scamper_trace_hopiter_alloc()
*/
  }

  /* "scamper.pyx":1849
 *         if i < 0 or i >= 255:
 *             raise ValueError("invalid hop index: " + i)
 *         hi = cscamper_trace.scamper_trace_hopiter_alloc()             # <<<<<<<<<<<<<<
 *         if hi == NULL:
 *             raise MemoryError("could not allocate hopiter")
*/
  __pyx_v_hi = scamper_trace_hopiter_alloc();

  /* "scamper.pyx":1850
 *             raise ValueError("invalid hop index: " + i)
 *         hi = cscamper_trace.scamper_trace_hopiter_alloc()
 *         if hi == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError("could not allocate hopiter")
 *         if cscamper_trace.scamper_trace_hopiter_ttl_set(hi, i+1, i+1) != 0:
*/
  __pyx_t_1 = (__pyx_v_hi == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":1851
 *         hi = cscamper_trace.scamper_trace_hopiter_alloc()
 *         if hi == NULL:
 *             raise MemoryError("could not allocate hopiter")             # <<<<<<<<<<<<<<
 *         if cscamper_trace.scamper_trace_hopiter_ttl_set(hi, i+1, i+1) != 0:
 *             cscamper_trace.scamper_trace_hopiter_free(hi)
*/
    __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_builtin_MemoryError);
    __pyx_t_6 = __pyx_builtin_MemoryError; 
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_could_not_allocate_hopiter};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1851, __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_ERR(0, 1851, __pyx_L1_error)

    /* "scamper.pyx":1850
 *             raise ValueError("invalid hop index: " + i)
 *         hi = cscamper_trace.scamper_trace_hopiter_alloc()
 *         if hi == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError("could not allocate hopiter")
 *         if cscamper_trace.scamper_trace_hopiter_ttl_set(hi, i+1, i+1) != 0:
*/
  }

  /* "scamper.pyx":1852
 *         if hi == NULL:
 *             raise MemoryError("could not allocate hopiter")
 *         if cscamper_trace.scamper_trace_hopiter_ttl_set(hi, i+1, i+1) != 0:             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_hopiter_free(hi)
 *             return None
*/
  __pyx_t_2 = __Pyx_PyLong_AddObjC(__pyx_v_i, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_8 = __Pyx_PyLong_As_uint8_t(__pyx_t_2); if (unlikely((__pyx_t_8 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1852, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyLong_AddObjC(__pyx_v_i, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_9 = __Pyx_PyLong_As_uint8_t(__pyx_t_2); if (unlikely((__pyx_t_9 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 1852, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = (scamper_trace_hopiter_ttl_set(__pyx_v_hi, __pyx_t_8, __pyx_t_9) != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":1853
 *             raise MemoryError("could not allocate hopiter")
 *         if cscamper_trace.scamper_trace_hopiter_ttl_set(hi, i+1, i+1) != 0:
 *             cscamper_trace.scamper_trace_hopiter_free(hi)             # <<<<<<<<<<<<<<
 *             return None
 *         r = cscamper_trace.scamper_trace_hopiter_next(self._c, hi)
*/
    scamper_trace_hopiter_free(__pyx_v_hi);

    /* "scamper.pyx":1854
 *         if cscamper_trace.scamper_trace_hopiter_ttl_set(hi, i+1, i+1) != 0:
 *             cscamper_trace.scamper_trace_hopiter_free(hi)
 *             return None             # <<<<<<<<<<<<<<
 *         r = cscamper_trace.scamper_trace_hopiter_next(self._c, hi)
 *         p = cscamper_trace.scamper_trace_hopiter_probe_get(hi)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1852
 *         if hi == NULL:
 *             raise MemoryError("could not allocate hopiter")
 *         if cscamper_trace.scamper_trace_hopiter_ttl_set(hi, i+1, i+1) != 0:             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_hopiter_free(hi)
 *             return None
*/
  }

  /* "scamper.pyx":1855
 *             cscamper_trace.scamper_trace_hopiter_free(hi)
 *             return None
 *         r = cscamper_trace.scamper_trace_hopiter_next(self._c, hi)             # <<<<<<<<<<<<<<
 *         p = cscamper_trace.scamper_trace_hopiter_probe_get(hi)
 *         cscamper_trace.scamper_trace_hopiter_free(hi)
*/
  __pyx_v_r = scamper_trace_hopiter_next(__pyx_v_self->_c, __pyx_v_hi);

  /* "scamper.pyx":1856
 *             return None
 *         r = cscamper_trace.scamper_trace_hopiter_next(self._c, hi)
 *         p = cscamper_trace.scamper_trace_hopiter_probe_get(hi)             # <<<<<<<<<<<<<<
 *         cscamper_trace.scamper_trace_hopiter_free(hi)
 *         if p == NULL or r == NULL:
*/
  __pyx_v_p = scamper_trace_hopiter_probe_get(__pyx_v_hi);

  /* "scamper.pyx":1857
 *         r = cscamper_trace.scamper_trace_hopiter_next(self._c, hi)
 *         p = cscamper_trace.scamper_trace_hopiter_probe_get(hi)
 *         cscamper_trace.scamper_trace_hopiter_free(hi)             # <<<<<<<<<<<<<<
 *         if p == NULL or r == NULL:
 *             return None
*/
  scamper_trace_hopiter_free(__pyx_v_hi);

  /* "scamper.pyx":1858
 *         p = cscamper_trace.scamper_trace_hopiter_probe_get(hi)
 *         cscamper_trace.scamper_trace_hopiter_free(hi)
 *         if p == NULL or r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t_flags = cscamper_trace.scamper_trace_flags_get(self._c)
*/
  __pyx_t_3 = (__pyx_v_p == NULL);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_1 = __pyx_t_3;
    goto __pyx_L9_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_r == NULL);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L9_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":1859
 *         cscamper_trace.scamper_trace_hopiter_free(hi)
 *         if p == NULL or r == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t_flags = cscamper_trace.scamper_trace_flags_get(self._c)
 *         return ScamperTraceHop.from_ptr(p, r, t_flags)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":1858
 *         p = cscamper_trace.scamper_trace_hopiter_probe_get(hi)
 *         cscamper_trace.scamper_trace_hopiter_free(hi)
 *         if p == NULL or r == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t_flags = cscamper_trace.scamper_trace_flags_get(self._c)
*/
  }

  /* "scamper.pyx":1860
 *         if p == NULL or r == NULL:
 *             return None
 *         t_flags = cscamper_trace.scamper_trace_flags_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperTraceHop.from_ptr(p, r, t_flags)
 * 
*/
  __pyx_v_t_flags = scamper_trace_flags_get(__pyx_v_self->_c);

  /* "scamper.pyx":1861
 *             return None
 *         t_flags = cscamper_trace.scamper_trace_flags_get(self._c)
 *         return ScamperTraceHop.from_ptr(p, r, t_flags)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_15ScamperTraceHop_from_ptr(__pyx_v_p, __pyx_v_r, __pyx_v_t_flags)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1861, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1839
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     def hop(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         hop(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("scamper.ScamperTrace.hop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1863
 *         return ScamperTraceHop.from_ptr(p, r, t_flags)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def hop_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_9hop_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_9hop_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_9hop_count___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_9hop_count___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":1872
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_hop_count_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_trace_hop_count_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1863
 *         return ScamperTraceHop.from_ptr(p, r, t_flags)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def hop_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.hop_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1874
 *         return cscamper_trace.scamper_trace_hop_count_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop_hop(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8stop_hop_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8stop_hop_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_8stop_hop___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_8stop_hop___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop_hop;
  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("__get__", 0);

  /* "scamper.pyx":1883
 *         :rtype: int
 *         """
 *         stop_hop = cscamper_trace.scamper_trace_stop_hop_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop_hop == 0:
 *             return cscamper_trace.scamper_trace_hop_count_get(self._c)
*/
  __pyx_v_stop_hop = scamper_trace_stop_hop_get(__pyx_v_self->_c);

  /* "scamper.pyx":1884
 *         """
 *         stop_hop = cscamper_trace.scamper_trace_stop_hop_get(self._c)
 *         if stop_hop == 0:             # <<<<<<<<<<<<<<
 *             return cscamper_trace.scamper_trace_hop_count_get(self._c)
 *         return stop_hop
*/
  __pyx_t_1 = (__pyx_v_stop_hop == 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":1885
 *         stop_hop = cscamper_trace.scamper_trace_stop_hop_get(self._c)
 *         if stop_hop == 0:
 *             return cscamper_trace.scamper_trace_hop_count_get(self._c)             # <<<<<<<<<<<<<<
 *         return stop_hop
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_trace_hop_count_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1885, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":1884
 *         """
 *         stop_hop = cscamper_trace.scamper_trace_stop_hop_get(self._c)
 *         if stop_hop == 0:             # <<<<<<<<<<<<<<
 *             return cscamper_trace.scamper_trace_hop_count_get(self._c)
 *         return stop_hop
*/
  }

  /* "scamper.pyx":1886
 *         if stop_hop == 0:
 *             return cscamper_trace.scamper_trace_hop_count_get(self._c)
 *         return stop_hop             # <<<<<<<<<<<<<<
 * 
 *     def hops(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop_hop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1874
 *         return cscamper_trace.scamper_trace_hop_count_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop_hop(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTrace.stop_hop.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1888
 *         return stop_hop
 * 
 *     def hops(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for recorded hops.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_11hops(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_10hops, "\n        get method to obtain an iterator for recorded hops.\n\n        :returns: an iterator\n        :rtype: _ScamperTraceHopIterator\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_11hops = {"hops", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_11hops, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_10hops};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_11hops(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("hops (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("hops", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("hops", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_10hops(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_10hops(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("hops", 0);

  /* "scamper.pyx":1895
 *         :rtype: _ScamperTraceHopIterator
 *         """
 *         return _ScamperTraceHopIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     def addrs(self, reserved=True):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperTraceHopIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1895, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1888
 *         return stop_hop
 * 
 *     def hops(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for recorded hops.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.hops", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1897
 *         return _ScamperTraceHopIterator(self)
 * 
 *     def addrs(self, reserved=True):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain unique addresses in traceroute hops.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_13addrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_12addrs, "\n        get method to obtain unique addresses in traceroute hops.\n\n        :returns: a list of unique addresses, according to selection.\n        :rtype: list[ScamperAddr]\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_13addrs = {"addrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_13addrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_12addrs};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_13addrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_reserved = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("addrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_reserved,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 1897, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1897, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "addrs", 0) < 0) __PYX_ERR(0, 1897, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_True));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 1897, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_True));
    }
    __pyx_v_reserved = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("addrs", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 1897, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTrace.addrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_12addrs(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self), __pyx_v_reserved);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_12addrs(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self, PyObject *__pyx_v_reserved) {
  PyObject *__pyx_v_addrs = NULL;
  PyObject *__pyx_v_hop = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("addrs", 0);

  /* "scamper.pyx":1904
 *         :rtype: list[ScamperAddr]
 *         """
 *         addrs = {}             # <<<<<<<<<<<<<<
 *         for hop in self.hops():
 *             if hop is None or (not reserved and hop.src.is_reserved()):
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1904, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_addrs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":1905
 *         """
 *         addrs = {}
 *         for hop in self.hops():             # <<<<<<<<<<<<<<
 *             if hop is None or (not reserved and hop.src.is_reserved()):
 *                 continue
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_hops, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1905, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1905, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1905, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1905, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_4);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 1905, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1905, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 1905, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_hop, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":1906
 *         addrs = {}
 *         for hop in self.hops():
 *             if hop is None or (not reserved and hop.src.is_reserved()):             # <<<<<<<<<<<<<<
 *                 continue
 *             addrs[hop.src] = 1
*/
    __pyx_t_7 = (__pyx_v_hop == Py_None);
    if (!__pyx_t_7) {
    } else {
      __pyx_t_6 = __pyx_t_7;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_reserved); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 1906, __pyx_L1_error)
    __pyx_t_8 = (!__pyx_t_7);
    if (__pyx_t_8) {
    } else {
      __pyx_t_6 = __pyx_t_8;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_v_hop, __pyx_mstate_global->__pyx_n_u_src); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1906, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_9 = __pyx_t_10;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_3 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_is_reserved, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1906, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 1906, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = __pyx_t_8;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_6) {

      /* "scamper.pyx":1907
 *         for hop in self.hops():
 *             if hop is None or (not reserved and hop.src.is_reserved()):
 *                 continue             # <<<<<<<<<<<<<<
 *             addrs[hop.src] = 1
 *         return list(addrs.keys())
*/
      goto __pyx_L3_continue;

      /* "scamper.pyx":1906
 *         addrs = {}
 *         for hop in self.hops():
 *             if hop is None or (not reserved and hop.src.is_reserved()):             # <<<<<<<<<<<<<<
 *                 continue
 *             addrs[hop.src] = 1
*/
    }

    /* "scamper.pyx":1908
 *             if hop is None or (not reserved and hop.src.is_reserved()):
 *                 continue
 *             addrs[hop.src] = 1             # <<<<<<<<<<<<<<
 *         return list(addrs.keys())
 * 
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_hop, __pyx_mstate_global->__pyx_n_u_src); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1908, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    if (unlikely((PyDict_SetItem(__pyx_v_addrs, __pyx_t_1, __pyx_mstate_global->__pyx_int_1) < 0))) __PYX_ERR(0, 1908, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":1905
 *         """
 *         addrs = {}
 *         for hop in self.hops():             # <<<<<<<<<<<<<<
 *             if hop is None or (not reserved and hop.src.is_reserved()):
 *                 continue
*/
    __pyx_L3_continue:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1909
 *                 continue
 *             addrs[hop.src] = 1
 *         return list(addrs.keys())             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_addrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PySequence_ListKeepNew(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1909, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1897
 *         return _ScamperTraceHopIterator(self)
 * 
 *     def addrs(self, reserved=True):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain unique addresses in traceroute hops.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("scamper.ScamperTrace.addrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_addrs);
  __Pyx_XDECREF(__pyx_v_hop);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1911
 *         return list(addrs.keys())
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempts(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8attempts_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8attempts_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_8attempts___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_8attempts___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":1920
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_attempts_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_trace_attempts_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1920, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1911
 *         return list(addrs.keys())
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempts(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.attempts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1922
 *         return cscamper_trace.scamper_trace_attempts_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def hoplimit(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8hoplimit_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8hoplimit_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_8hoplimit___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_8hoplimit___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":1930
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_hoplimit_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_trace_hoplimit_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1922
 *         return cscamper_trace.scamper_trace_attempts_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def hoplimit(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.hoplimit.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1932
 *         return cscamper_trace.scamper_trace_hoplimit_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def squeries(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8squeries_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8squeries_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_8squeries___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_8squeries___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":1941
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_squeries_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_trace_squeries_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1941, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1932
 *         return cscamper_trace.scamper_trace_hoplimit_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def squeries(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.squeries.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1943
 *         return cscamper_trace.scamper_trace_squeries_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def gaplimit(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8gaplimit_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8gaplimit_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_8gaplimit___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_8gaplimit___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":1952
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_gaplimit_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_trace_gaplimit_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1952, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1943
 *         return cscamper_trace.scamper_trace_squeries_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def gaplimit(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.gaplimit.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1954
 *         return cscamper_trace.scamper_trace_gaplimit_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def gapaction(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_9gapaction_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_9gapaction_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_9gapaction___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_9gapaction___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":1963
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_gapaction_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_trace_gapaction_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1954
 *         return cscamper_trace.scamper_trace_gaplimit_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def gapaction(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.gapaction.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1965
 *         return cscamper_trace.scamper_trace_gapaction_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def firsthop(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8firsthop_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_8firsthop_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_8firsthop___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_8firsthop___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":1974
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_firsthop_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_trace_firsthop_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1965
 *         return cscamper_trace.scamper_trace_gapaction_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def firsthop(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.firsthop.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1976
 *         return cscamper_trace.scamper_trace_firsthop_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tos(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_3tos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_3tos_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_3tos___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_3tos___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":1984
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_tos_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_trace_tos_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1984, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1976
 *         return cscamper_trace.scamper_trace_firsthop_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tos(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.tos.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1986
 *         return cscamper_trace.scamper_trace_tos_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_timeout(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_12wait_timeout_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_12wait_timeout_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_12wait_timeout___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_12wait_timeout___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  struct timeval const *__pyx_v_tv;
  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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":1995
 *         :rtype: timedelta
 *         """
 *         tv = cscamper_trace.scamper_trace_wait_timeout_get(self._c)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
*/
  __pyx_v_tv = scamper_trace_wait_timeout_get(__pyx_v_self->_c);

  /* "scamper.pyx":1996
 *         """
 *         tv = cscamper_trace.scamper_trace_wait_timeout_get(self._c)
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1996, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 1996, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 1996, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1996, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1986
 *         return cscamper_trace.scamper_trace_tos_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_timeout(self):
 *         """
*/

  /* 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_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperTrace.wait_timeout.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1998
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_probe(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_10wait_probe_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_10wait_probe_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_10wait_probe___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_10wait_probe___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  struct timeval const *__pyx_v_tv;
  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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2006
 *         :rtype: timedelta
 *         """
 *         tv = cscamper_trace.scamper_trace_wait_probe_get(self._c)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
*/
  __pyx_v_tv = scamper_trace_wait_probe_get(__pyx_v_self->_c);

  /* "scamper.pyx":2007
 *         """
 *         tv = cscamper_trace.scamper_trace_wait_probe_get(self._c)
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2007, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 2007, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 2007, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2007, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":1998
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_probe(self):
 *         """
*/

  /* 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_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperTrace.wait_probe.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2009
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def confidence(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_10confidence_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_10confidence_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_10confidence___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_10confidence___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":2018
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_confidence_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_trace_confidence_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2018, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2009
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def confidence(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.confidence.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2020
 *         return cscamper_trace.scamper_trace_confidence_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_size(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_10probe_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_10probe_size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_10probe_size___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_10probe_size___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":2028
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_size_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_trace_size_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2028, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2020
 *         return cscamper_trace.scamper_trace_confidence_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_size(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.probe_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2030
 *         return cscamper_trace.scamper_trace_size_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def payload(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_7payload_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_7payload_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_7payload___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_7payload___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t const *__pyx_v_data;
  uint16_t __pyx_v_length;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":2039
 *         """
 *         cdef const uint8_t *data
 *         data = cscamper_trace.scamper_trace_payload_get(self._c)             # <<<<<<<<<<<<<<
 *         length = cscamper_trace.scamper_trace_payload_len_get(self._c)
 *         if data == NULL or length == 0:
*/
  __pyx_v_data = scamper_trace_payload_get(__pyx_v_self->_c);

  /* "scamper.pyx":2040
 *         cdef const uint8_t *data
 *         data = cscamper_trace.scamper_trace_payload_get(self._c)
 *         length = cscamper_trace.scamper_trace_payload_len_get(self._c)             # <<<<<<<<<<<<<<
 *         if data == NULL or length == 0:
 *             return None
*/
  __pyx_v_length = scamper_trace_payload_len_get(__pyx_v_self->_c);

  /* "scamper.pyx":2041
 *         data = cscamper_trace.scamper_trace_payload_get(self._c)
 *         length = cscamper_trace.scamper_trace_payload_len_get(self._c)
 *         if data == NULL or length == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return data[:length]
*/
  __pyx_t_2 = (__pyx_v_data == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_length == 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":2042
 *         length = cscamper_trace.scamper_trace_payload_len_get(self._c)
 *         if data == NULL or length == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return data[:length]
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2041
 *         data = cscamper_trace.scamper_trace_payload_get(self._c)
 *         length = cscamper_trace.scamper_trace_payload_len_get(self._c)
 *         if data == NULL or length == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return data[:length]
*/
  }

  /* "scamper.pyx":2043
 *         if data == NULL or length == 0:
 *             return None
 *         return data[:length]             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_data) + 0, __pyx_v_length - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2030
 *         return cscamper_trace.scamper_trace_size_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def payload(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.payload.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2045
 *         return data[:length]
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_sport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_11probe_sport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_11probe_sport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_11probe_sport___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_11probe_sport___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":2054
 *         :rtype: int
 *         """
 *         if (cscamper_trace.scamper_trace_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):
 *             return cscamper_trace.scamper_trace_sport_get(self._c)
*/
  __pyx_t_2 = scamper_trace_type_is_udp(__pyx_v_self->_c);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }

  /* "scamper.pyx":2055
 *         """
 *         if (cscamper_trace.scamper_trace_type_is_udp(self._c) or
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):             # <<<<<<<<<<<<<<
 *             return cscamper_trace.scamper_trace_sport_get(self._c)
 *         return None
*/
  __pyx_t_2 = scamper_trace_type_is_tcp(__pyx_v_self->_c);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;

  /* "scamper.pyx":2054
 *         :rtype: int
 *         """
 *         if (cscamper_trace.scamper_trace_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):
 *             return cscamper_trace.scamper_trace_sport_get(self._c)
*/
  if (__pyx_t_1) {

    /* "scamper.pyx":2056
 *         if (cscamper_trace.scamper_trace_type_is_udp(self._c) or
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):
 *             return cscamper_trace.scamper_trace_sport_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_From_uint16_t(scamper_trace_sport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":2054
 *         :rtype: int
 *         """
 *         if (cscamper_trace.scamper_trace_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):
 *             return cscamper_trace.scamper_trace_sport_get(self._c)
*/
  }

  /* "scamper.pyx":2057
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):
 *             return cscamper_trace.scamper_trace_sport_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":2045
 *         return data[:length]
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_sport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.probe_sport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2059
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_dport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_11probe_dport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_11probe_dport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_11probe_dport___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_11probe_dport___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":2068
 *         :rtype: int
 *         """
 *         if (cscamper_trace.scamper_trace_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):
 *             return cscamper_trace.scamper_trace_dport_get(self._c)
*/
  __pyx_t_2 = scamper_trace_type_is_udp(__pyx_v_self->_c);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }

  /* "scamper.pyx":2069
 *         """
 *         if (cscamper_trace.scamper_trace_type_is_udp(self._c) or
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):             # <<<<<<<<<<<<<<
 *             return cscamper_trace.scamper_trace_dport_get(self._c)
 *         return None
*/
  __pyx_t_2 = scamper_trace_type_is_tcp(__pyx_v_self->_c);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;

  /* "scamper.pyx":2068
 *         :rtype: int
 *         """
 *         if (cscamper_trace.scamper_trace_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):
 *             return cscamper_trace.scamper_trace_dport_get(self._c)
*/
  if (__pyx_t_1) {

    /* "scamper.pyx":2070
 *         if (cscamper_trace.scamper_trace_type_is_udp(self._c) or
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):
 *             return cscamper_trace.scamper_trace_dport_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_From_uint16_t(scamper_trace_dport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2070, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":2068
 *         :rtype: int
 *         """
 *         if (cscamper_trace.scamper_trace_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):
 *             return cscamper_trace.scamper_trace_dport_get(self._c)
*/
  }

  /* "scamper.pyx":2071
 *             cscamper_trace.scamper_trace_type_is_tcp(self._c)):
 *             return cscamper_trace.scamper_trace_dport_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":2059
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_dport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.probe_dport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2073
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_icmp_sum(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_14probe_icmp_sum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_14probe_icmp_sum_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_14probe_icmp_sum___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_14probe_icmp_sum___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_trace_type;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  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("__get__", 0);

  /* "scamper.pyx":2082
 *         :rtype: int
 *         """
 *         trace_type = cscamper_trace.scamper_trace_type_get(self._c)             # <<<<<<<<<<<<<<
 *         if (trace_type == SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS and
 *             cscamper_trace.scamper_trace_flag_is_icmpcsumdp(self._c)):
*/
  __pyx_v_trace_type = scamper_trace_type_get(__pyx_v_self->_c);

  /* "scamper.pyx":2083
 *         """
 *         trace_type = cscamper_trace.scamper_trace_type_get(self._c)
 *         if (trace_type == SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS and             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_flag_is_icmpcsumdp(self._c)):
 *             return cscamper_trace.scamper_trace_dport_get(self._c)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(__pyx_v_trace_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SCAMPER_TRACE_TYPE_ICMP_ECHO_PAR); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 2083, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (__pyx_t_5) {
  } else {
    __pyx_t_1 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }

  /* "scamper.pyx":2084
 *         trace_type = cscamper_trace.scamper_trace_type_get(self._c)
 *         if (trace_type == SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS and
 *             cscamper_trace.scamper_trace_flag_is_icmpcsumdp(self._c)):             # <<<<<<<<<<<<<<
 *             return cscamper_trace.scamper_trace_dport_get(self._c)
 *         return None
*/
  __pyx_t_5 = scamper_trace_flag_is_icmpcsumdp(__pyx_v_self->_c);
  __pyx_t_1 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;

  /* "scamper.pyx":2083
 *         """
 *         trace_type = cscamper_trace.scamper_trace_type_get(self._c)
 *         if (trace_type == SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS and             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_flag_is_icmpcsumdp(self._c)):
 *             return cscamper_trace.scamper_trace_dport_get(self._c)
*/
  if (__pyx_t_1) {

    /* "scamper.pyx":2085
 *         if (trace_type == SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS and
 *             cscamper_trace.scamper_trace_flag_is_icmpcsumdp(self._c)):
 *             return cscamper_trace.scamper_trace_dport_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyLong_From_uint16_t(scamper_trace_dport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2085, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":2083
 *         """
 *         trace_type = cscamper_trace.scamper_trace_type_get(self._c)
 *         if (trace_type == SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS and             # <<<<<<<<<<<<<<
 *             cscamper_trace.scamper_trace_flag_is_icmpcsumdp(self._c)):
 *             return cscamper_trace.scamper_trace_dport_get(self._c)
*/
  }

  /* "scamper.pyx":2086
 *             cscamper_trace.scamper_trace_flag_is_icmpcsumdp(self._c)):
 *             return cscamper_trace.scamper_trace_dport_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":2073
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_icmp_sum(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperTrace.probe_icmp_sum.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2088
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def offset(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_6offset_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_6offset_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_6offset___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_6offset___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":2096
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_offset_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_trace_offset_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2096, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2088
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def offset(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.offset.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2098
 *         return cscamper_trace.scamper_trace_offset_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_11probe_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_11probe_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_11probe_count___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_11probe_count___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":2107
 *         :rtype: int
 *         """
 *         return cscamper_trace.scamper_trace_probec_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_trace_probec_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2107, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2098
 *         return cscamper_trace.scamper_trace_offset_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.probe_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2109
 *         return cscamper_trace.scamper_trace_probec_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def pmtud(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_5pmtud_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_5pmtud_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_5pmtud___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_5pmtud___get__(struct __pyx_obj_7scamper_ScamperTrace *__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("__get__", 0);

  /* "scamper.pyx":2118
 *         :rtype: ScamperTracePmtud
 *         """
 *         return ScamperTracePmtud.from_ptr(self)             # <<<<<<<<<<<<<<
 * 
 *     def is_udp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_17ScamperTracePmtud_from_ptr(__pyx_v_self)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2118, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2109
 *         return cscamper_trace.scamper_trace_probec_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def pmtud(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.pmtud.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2120
 *         return ScamperTracePmtud.from_ptr(self)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute used UDP probes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_15is_udp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_14is_udp, "\n        get method to determine if this traceroute used UDP probes.\n\n        :returns: True if this traceroute used UDP probes.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_15is_udp = {"is_udp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_15is_udp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_14is_udp};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_15is_udp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_udp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_udp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_udp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_14is_udp(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_14is_udp(struct __pyx_obj_7scamper_ScamperTrace *__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("is_udp", 0);

  /* "scamper.pyx":2127
 *         :rtype: bool
 *         """
 *         return cscamper_trace.scamper_trace_type_is_udp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_tcp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_trace_type_is_udp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2127, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2120
 *         return ScamperTracePmtud.from_ptr(self)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute used UDP probes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_udp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2129
 *         return cscamper_trace.scamper_trace_type_is_udp(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute used TCP probes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_17is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_16is_tcp, "\n        get method to determine if this traceroute used TCP probes.\n\n        :returns: True if this traceroute used TCP probes.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_17is_tcp = {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_17is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_16is_tcp};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_17is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tcp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tcp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tcp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_16is_tcp(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_16is_tcp(struct __pyx_obj_7scamper_ScamperTrace *__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("is_tcp", 0);

  /* "scamper.pyx":2136
 *         :rtype: bool
 *         """
 *         return cscamper_trace.scamper_trace_type_is_tcp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_trace_type_is_tcp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2129
 *         return cscamper_trace.scamper_trace_type_is_udp(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute used TCP probes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_tcp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2138
 *         return cscamper_trace.scamper_trace_type_is_tcp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute used ICMP probes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_19is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_18is_icmp, "\n        get method to determine if this traceroute used ICMP probes.\n\n        :returns: True if this traceroute used ICMP probes.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_19is_icmp = {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_19is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_18is_icmp};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_19is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_18is_icmp(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_18is_icmp(struct __pyx_obj_7scamper_ScamperTrace *__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("is_icmp", 0);

  /* "scamper.pyx":2145
 *         :rtype: bool
 *         """
 *         return cscamper_trace.scamper_trace_type_is_icmp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_stop_noreason(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_trace_type_is_icmp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2145, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2138
 *         return cscamper_trace.scamper_trace_type_is_tcp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute used ICMP probes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_icmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2147
 *         return cscamper_trace.scamper_trace_type_is_icmp(self._c)
 * 
 *     def is_stop_noreason(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute has no stop reason.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_21is_stop_noreason(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_20is_stop_noreason, "\n        get method to determine if this traceroute has no stop reason.\n\n        :returns: True if this traceroute has no stop reason.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_21is_stop_noreason = {"is_stop_noreason", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_21is_stop_noreason, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_20is_stop_noreason};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_21is_stop_noreason(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_stop_noreason (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_stop_noreason", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_stop_noreason", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_20is_stop_noreason(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_20is_stop_noreason(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_stop_noreason", 0);

  /* "scamper.pyx":2154
 *         :rtype: bool
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop == ScamperTraceStop.NoReason:
 *             return True
*/
  __pyx_v_stop = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":2155
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.NoReason:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NoReason); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2155, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2156
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.NoReason:
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":2155
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.NoReason:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":2157
 *         if stop == ScamperTraceStop.NoReason:
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def is_stop_completed(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":2147
 *         return cscamper_trace.scamper_trace_type_is_icmp(self._c)
 * 
 *     def is_stop_noreason(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute has no stop reason.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_stop_noreason", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2159
 *         return False
 * 
 *     def is_stop_completed(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_23is_stop_completed(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_22is_stop_completed, "\n        get method to determine if this traceroute stopped because\n        it reached the destination.\n\n        :returns: True if this traceroute reached the destination.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_23is_stop_completed = {"is_stop_completed", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_23is_stop_completed, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_22is_stop_completed};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_23is_stop_completed(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_stop_completed (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_stop_completed", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_stop_completed", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_22is_stop_completed(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_22is_stop_completed(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_stop_completed", 0);

  /* "scamper.pyx":2167
 *         :rtype: bool
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop == ScamperTraceStop.Completed:
 *             return True
*/
  __pyx_v_stop = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":2168
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Completed:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Completed); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2168, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2169
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Completed:
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":2168
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Completed:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":2170
 *         if stop == ScamperTraceStop.Completed:
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def is_stop_unreach(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":2159
 *         return False
 * 
 *     def is_stop_completed(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_stop_completed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2172
 *         return False
 * 
 *     def is_stop_unreach(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_25is_stop_unreach(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_24is_stop_unreach, "\n        get method to determine if this traceroute stopped because\n        it received an ICMP Destination Unreachable message.\n\n        :returns: True if this traceroute received an ICMP unreachable.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_25is_stop_unreach = {"is_stop_unreach", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_25is_stop_unreach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_24is_stop_unreach};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_25is_stop_unreach(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_stop_unreach (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_stop_unreach", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_stop_unreach", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_24is_stop_unreach(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_24is_stop_unreach(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_stop_unreach", 0);

  /* "scamper.pyx":2180
 *         :rtype: bool
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop == ScamperTraceStop.Unreach:
 *             return True
*/
  __pyx_v_stop = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":2181
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Unreach:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Unreach); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2181, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2181, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2182
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Unreach:
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":2181
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Unreach:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":2183
 *         if stop == ScamperTraceStop.Unreach:
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def is_stop_icmp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":2172
 *         return False
 * 
 *     def is_stop_unreach(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_stop_unreach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2185
 *         return False
 * 
 *     def is_stop_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_27is_stop_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_26is_stop_icmp, "\n        get method to determine if this traceroute stopped because\n        it received an ICMP message that was not a destination\n        unreachable.\n\n        :returns: True if this traceroute received an unexpected ICMP message.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_27is_stop_icmp = {"is_stop_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_27is_stop_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_26is_stop_icmp};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_27is_stop_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_stop_icmp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_stop_icmp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_stop_icmp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_26is_stop_icmp(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_26is_stop_icmp(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_stop_icmp", 0);

  /* "scamper.pyx":2194
 *         :rtype: bool
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop == ScamperTraceStop.ICMP:
 *             return True
*/
  __pyx_v_stop = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":2195
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.ICMP:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ICMP); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2195, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2195, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2196
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.ICMP:
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":2195
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.ICMP:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":2197
 *         if stop == ScamperTraceStop.ICMP:
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def is_stop_loop(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":2185
 *         return False
 * 
 *     def is_stop_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_stop_icmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2199
 *         return False
 * 
 *     def is_stop_loop(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_29is_stop_loop(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_28is_stop_loop, "\n        get method to determine if this traceroute stopped because\n        it encountered a loop.\n\n        :returns: True if this traceroute encountered a loop.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_29is_stop_loop = {"is_stop_loop", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_29is_stop_loop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_28is_stop_loop};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_29is_stop_loop(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_stop_loop (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_stop_loop", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_stop_loop", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_28is_stop_loop(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_28is_stop_loop(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_stop_loop", 0);

  /* "scamper.pyx":2207
 *         :rtype: bool
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop == ScamperTraceStop.Loop:
 *             return True
*/
  __pyx_v_stop = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":2208
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Loop:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Loop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2208, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2209
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Loop:
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":2208
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Loop:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":2210
 *         if stop == ScamperTraceStop.Loop:
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def is_stop_gaplimit(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":2199
 *         return False
 * 
 *     def is_stop_loop(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_stop_loop", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2212
 *         return False
 * 
 *     def is_stop_gaplimit(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_31is_stop_gaplimit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_30is_stop_gaplimit, "\n        get method to determine if this traceroute stopped because\n        it observed a consecutive series of unresponsive hops.\n\n        :returns: True if this traceroute reached the gaplimit.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_31is_stop_gaplimit = {"is_stop_gaplimit", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_31is_stop_gaplimit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_30is_stop_gaplimit};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_31is_stop_gaplimit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_stop_gaplimit (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_stop_gaplimit", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_stop_gaplimit", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_30is_stop_gaplimit(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_30is_stop_gaplimit(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_stop_gaplimit", 0);

  /* "scamper.pyx":2220
 *         :rtype: bool
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop == ScamperTraceStop.Gaplimit:
 *             return True
*/
  __pyx_v_stop = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":2221
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Gaplimit:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Gaplimit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2221, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2222
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Gaplimit:
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":2221
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Gaplimit:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":2223
 *         if stop == ScamperTraceStop.Gaplimit:
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def is_stop_error(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":2212
 *         return False
 * 
 *     def is_stop_gaplimit(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_stop_gaplimit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2225
 *         return False
 * 
 *     def is_stop_error(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_33is_stop_error(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_32is_stop_error, "\n        get method to determine if this traceroute stopped because\n        of an unexpected operating system error.\n\n        :returns: True if this traceroute encountered an error.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_33is_stop_error = {"is_stop_error", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_33is_stop_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_32is_stop_error};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_33is_stop_error(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_stop_error (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_stop_error", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_stop_error", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_32is_stop_error(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_32is_stop_error(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_stop_error", 0);

  /* "scamper.pyx":2233
 *         :rtype: bool
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop == ScamperTraceStop.Error:
 *             return True
*/
  __pyx_v_stop = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":2234
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Error:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Error); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2234, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2235
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Error:
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":2234
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Error:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":2236
 *         if stop == ScamperTraceStop.Error:
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def is_stop_hoplimit(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":2225
 *         return False
 * 
 *     def is_stop_error(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_stop_error", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2238
 *         return False
 * 
 *     def is_stop_hoplimit(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_35is_stop_hoplimit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_34is_stop_hoplimit, "\n        get method to determine if this traceroute stopped because\n        it reached the hoplimit defined for this traceroute.\n\n        :returns: True if this traceroute reached the hoplimit.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_35is_stop_hoplimit = {"is_stop_hoplimit", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_35is_stop_hoplimit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_34is_stop_hoplimit};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_35is_stop_hoplimit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_stop_hoplimit (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_stop_hoplimit", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_stop_hoplimit", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_34is_stop_hoplimit(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_34is_stop_hoplimit(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_stop_hoplimit", 0);

  /* "scamper.pyx":2246
 *         :rtype: bool
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop == ScamperTraceStop.HopLimit:
 *             return True
*/
  __pyx_v_stop = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":2247
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.HopLimit:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_HopLimit); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2247, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2247, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2248
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.HopLimit:
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":2247
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.HopLimit:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":2249
 *         if stop == ScamperTraceStop.HopLimit:
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def is_stop_gss(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":2238
 *         return False
 * 
 *     def is_stop_hoplimit(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_stop_hoplimit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2251
 *         return False
 * 
 *     def is_stop_gss(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_37is_stop_gss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_36is_stop_gss, "\n        get method to determine if this traceroute stopped because\n        it received a response from an address in this traceroute's\n        global stop set.\n\n        :returns: True if this traceroute received a response from an        address in the global stop set.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_37is_stop_gss = {"is_stop_gss", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_37is_stop_gss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_36is_stop_gss};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_37is_stop_gss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_stop_gss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_stop_gss", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_stop_gss", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_36is_stop_gss(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_36is_stop_gss(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_stop_gss", 0);

  /* "scamper.pyx":2261
 *         :rtype: bool
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop == ScamperTraceStop.GSS:
 *             return True
*/
  __pyx_v_stop = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":2262
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.GSS:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_GSS); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2262, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2262, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2262, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2263
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.GSS:
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":2262
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.GSS:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":2264
 *         if stop == ScamperTraceStop.GSS:
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 *     def is_stop_halted(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":2251
 *         return False
 * 
 *     def is_stop_gss(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_stop_gss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2266
 *         return False
 * 
 *     def is_stop_halted(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_39is_stop_halted(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperTrace_38is_stop_halted, "\n        get method to determine if this traceroute stopped because\n        it was halted by the user.\n\n        :returns: True if this traceroute was halted.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_39is_stop_halted = {"is_stop_halted", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_39is_stop_halted, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_38is_stop_halted};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_39is_stop_halted(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_stop_halted (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_stop_halted", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_stop_halted", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_38is_stop_halted(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_38is_stop_halted(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  uint8_t __pyx_v_stop;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_stop_halted", 0);

  /* "scamper.pyx":2274
 *         :rtype: bool
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         if stop == ScamperTraceStop.Halted:
 *             return True
*/
  __pyx_v_stop = scamper_trace_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":2275
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Halted:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(__pyx_v_stop); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_Halted); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2275, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2276
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Halted:
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":2275
 *         """
 *         stop = cscamper_trace.scamper_trace_stop_reason_get(self._c)
 *         if stop == ScamperTraceStop.Halted:             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":2277
 *         if stop == ScamperTraceStop.Halted:
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":2266
 *         return False
 * 
 *     def is_stop_halted(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTrace.is_stop_halted", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":1687
 *     """
 *     cdef cscamper_trace.scamper_trace_t *_c
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperTrace_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_5_inst___get__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_5_inst___get__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_12ScamperTrace_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_12ScamperTrace_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_12ScamperTrace_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 1687, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTrace._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_12ScamperTrace_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_12ScamperTrace_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_12ScamperTrace_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_41__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_41__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_41__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_41__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_40__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_40__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTrace.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperTrace_43__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_12ScamperTrace_43__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_43__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_12ScamperTrace_43__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTrace.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_12ScamperTrace_42__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperTrace_42__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTrace *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTrace.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2294
 *     cdef bint _fdst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_16ScamperPingReply_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_16ScamperPingReply_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply___init__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_16ScamperPingReply___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":2295
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2295, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 2295, __pyx_L1_error)

  /* "scamper.pyx":2294
 *     cdef bint _fdst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPingReply.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2297
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._p != NULL:
 *             cscamper_ping.scamper_ping_probe_free(self._p)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_16ScamperPingReply_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_16ScamperPingReply_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_16ScamperPingReply_2__dealloc__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_16ScamperPingReply_2__dealloc__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":2298
 * 
 *     def __dealloc__(self):
 *         if self._p != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_probe_free(self._p)
 *         if self._r != NULL:
*/
  __pyx_t_1 = (__pyx_v_self->_p != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":2299
 *     def __dealloc__(self):
 *         if self._p != NULL:
 *             cscamper_ping.scamper_ping_probe_free(self._p)             # <<<<<<<<<<<<<<
 *         if self._r != NULL:
 *             cscamper_ping.scamper_ping_reply_free(self._r)
*/
    scamper_ping_probe_free(__pyx_v_self->_p);

    /* "scamper.pyx":2298
 * 
 *     def __dealloc__(self):
 *         if self._p != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_probe_free(self._p)
 *         if self._r != NULL:
*/
  }

  /* "scamper.pyx":2300
 *         if self._p != NULL:
 *             cscamper_ping.scamper_ping_probe_free(self._p)
 *         if self._r != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_reply_free(self._r)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_r != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":2301
 *             cscamper_ping.scamper_ping_probe_free(self._p)
 *         if self._r != NULL:
 *             cscamper_ping.scamper_ping_reply_free(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    scamper_ping_reply_free(__pyx_v_self->_r);

    /* "scamper.pyx":2300
 *         if self._p != NULL:
 *             cscamper_ping.scamper_ping_probe_free(self._p)
 *         if self._r != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_reply_free(self._r)
 * 
*/
  }

  /* "scamper.pyx":2297
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._p != NULL:
 *             cscamper_ping.scamper_ping_probe_free(self._p)
*/

  /* function exit code */
}

/* "scamper.pyx":2303
 *             cscamper_ping.scamper_ping_reply_free(self._r)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         c_a = cscamper_ping.scamper_ping_reply_addr_get(self._r)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_4__str__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_4__str__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  scamper_addr_t *__pyx_v_c_a;
  struct timeval const *__pyx_v_c_rtt;
  PyObject *__pyx_v_usec = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[12];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":2305
 *     def __str__(self):
 *         cdef char buf[128]
 *         c_a = cscamper_ping.scamper_ping_reply_addr_get(self._r)             # <<<<<<<<<<<<<<
 *         c_rtt = cscamper_ping.scamper_ping_reply_rtt_get(self._r)
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)
*/
  __pyx_v_c_a = scamper_ping_reply_addr_get(__pyx_v_self->_r);

  /* "scamper.pyx":2306
 *         cdef char buf[128]
 *         c_a = cscamper_ping.scamper_ping_reply_addr_get(self._r)
 *         c_rtt = cscamper_ping.scamper_ping_reply_rtt_get(self._r)             # <<<<<<<<<<<<<<
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))
*/
  __pyx_v_c_rtt = scamper_ping_reply_rtt_get(__pyx_v_self->_r);

  /* "scamper.pyx":2307
 *         c_a = cscamper_ping.scamper_ping_reply_addr_get(self._r)
 *         c_rtt = cscamper_ping.scamper_ping_reply_rtt_get(self._r)
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)             # <<<<<<<<<<<<<<
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))
 *         return "%d bytes from %s, seq=%d ttl=%d time=%d.%03d ms" % (
*/
  __pyx_t_1 = __Pyx_PyLong_From_suseconds_t(((__pyx_v_c_rtt->tv_sec * 0xF4240) + __pyx_v_c_rtt->tv_usec)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_usec = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":2308
 *         c_rtt = cscamper_ping.scamper_ping_reply_rtt_get(self._r)
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return "%d bytes from %s, seq=%d ttl=%d time=%d.%03d ms" % (
 *             cscamper_ping.scamper_ping_reply_size_get(self._r),
*/
  (void)(scamper_addr_tostr(__pyx_v_c_a, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":2309
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))
 *         return "%d bytes from %s, seq=%d ttl=%d time=%d.%03d ms" % (             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_reply_size_get(self._r),
 *             buf.decode('UTF-8', 'strict'),
*/
  __Pyx_XDECREF(__pyx_r);

  /* "scamper.pyx":2310
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))
 *         return "%d bytes from %s, seq=%d ttl=%d time=%d.%03d ms" % (
 *             cscamper_ping.scamper_ping_reply_size_get(self._r),             # <<<<<<<<<<<<<<
 *             buf.decode('UTF-8', 'strict'),
 *             cscamper_ping.scamper_ping_probe_id_get(self._p),
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_ping_reply_size_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_1), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2310, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":2311
 *         return "%d bytes from %s, seq=%d ttl=%d time=%d.%03d ms" % (
 *             cscamper_ping.scamper_ping_reply_size_get(self._r),
 *             buf.decode('UTF-8', 'strict'),             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_probe_id_get(self._p),
 *             cscamper_ping.scamper_ping_reply_ttl_get(self._r),
*/
  __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2311, __pyx_L1_error)
  __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "scamper.pyx":2312
 *             cscamper_ping.scamper_ping_reply_size_get(self._r),
 *             buf.decode('UTF-8', 'strict'),
 *             cscamper_ping.scamper_ping_probe_id_get(self._p),             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_reply_ttl_get(self._r),
 *             usec / 1000, usec % 1000)
*/
  __pyx_t_4 = __Pyx_PyLong_From_uint16_t(scamper_ping_probe_id_get(__pyx_v_self->_p)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_4), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2312, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "scamper.pyx":2313
 *             buf.decode('UTF-8', 'strict'),
 *             cscamper_ping.scamper_ping_probe_id_get(self._p),
 *             cscamper_ping.scamper_ping_reply_ttl_get(self._r),             # <<<<<<<<<<<<<<
 *             usec / 1000, usec % 1000)
 * 
*/
  __pyx_t_4 = __Pyx_PyLong_From_uint8_t(scamper_ping_reply_ttl_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_4), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2313, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "scamper.pyx":2314
 *             cscamper_ping.scamper_ping_probe_id_get(self._p),
 *             cscamper_ping.scamper_ping_reply_ttl_get(self._r),
 *             usec / 1000, usec % 1000)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_t_4 = __Pyx_PyLong_TrueDivideObjC(__pyx_v_usec, __pyx_mstate_global->__pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_4), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_RemainderObjC(__pyx_v_usec, __pyx_mstate_global->__pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_8 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_4), __pyx_mstate_global->__pyx_kp_u_03d); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2314, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_9[0] = __pyx_t_2;
  __pyx_t_9[1] = __pyx_mstate_global->__pyx_kp_u_bytes_from;
  __pyx_t_9[2] = __pyx_t_1;
  __pyx_t_9[3] = __pyx_mstate_global->__pyx_kp_u_seq;
  __pyx_t_9[4] = __pyx_t_5;
  __pyx_t_9[5] = __pyx_mstate_global->__pyx_kp_u_ttl;
  __pyx_t_9[6] = __pyx_t_6;
  __pyx_t_9[7] = __pyx_mstate_global->__pyx_kp_u_time_2;
  __pyx_t_9[8] = __pyx_t_7;
  __pyx_t_9[9] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_9[10] = __pyx_t_8;
  __pyx_t_9[11] = __pyx_mstate_global->__pyx_kp_u_ms;

  /* "scamper.pyx":2309
 *         usec = (c_rtt.tv_sec * 1000000) + (c_rtt.tv_usec)
 *         cscamper_addr.scamper_addr_tostr(c_a, buf, sizeof(buf))
 *         return "%d bytes from %s, seq=%d ttl=%d time=%d.%03d ms" % (             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_reply_size_get(self._r),
 *             buf.decode('UTF-8', 'strict'),
*/
  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_9, 12, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 6 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 5 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 3, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2303
 *             cscamper_ping.scamper_ping_reply_free(self._r)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         c_a = cscamper_ping.scamper_ping_reply_addr_get(self._r)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperPingReply.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_usec);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2316
 *             usec / 1000, usec % 1000)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperPingReply from_ptr(cscamper_ping.scamper_ping_reply_t *r,
 *                                    cscamper_ping.scamper_ping_probe_t *p,
*/

static struct __pyx_obj_7scamper_ScamperPingReply *__pyx_f_7scamper_16ScamperPingReply_from_ptr(scamper_ping_reply_t *__pyx_v_r, scamper_ping_probe_t *__pyx_v_p, scamper_ping_t *__pyx_v_ping) {
  struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_reply = 0;
  struct __pyx_obj_7scamper_ScamperPingReply *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("from_ptr", 0);

  /* "scamper.pyx":2321
 *                                    cscamper_ping.scamper_ping_t *ping):
 *         cdef ScamperPingReply reply
 *         if r == NULL or p == NULL or ping == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         reply = ScamperPingReply.__new__(ScamperPingReply)
*/
  __pyx_t_2 = (__pyx_v_r == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_p == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_ping == NULL);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":2322
 *         cdef ScamperPingReply reply
 *         if r == NULL or p == NULL or ping == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         reply = ScamperPingReply.__new__(ScamperPingReply)
 *         reply._r = cscamper_ping.scamper_ping_reply_use(r)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperPingReply *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2321
 *                                    cscamper_ping.scamper_ping_t *ping):
 *         cdef ScamperPingReply reply
 *         if r == NULL or p == NULL or ping == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         reply = ScamperPingReply.__new__(ScamperPingReply)
*/
  }

  /* "scamper.pyx":2323
 *         if r == NULL or p == NULL or ping == NULL:
 *             return None
 *         reply = ScamperPingReply.__new__(ScamperPingReply)             # <<<<<<<<<<<<<<
 *         reply._r = cscamper_ping.scamper_ping_reply_use(r)
 *         reply._p = cscamper_ping.scamper_ping_probe_use(p)
*/
  __pyx_t_3 = ((PyObject *)__pyx_tp_new_7scamper_ScamperPingReply(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2323, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_3);
  __pyx_v_reply = ((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_t_3);
  __pyx_t_3 = 0;

  /* "scamper.pyx":2324
 *             return None
 *         reply = ScamperPingReply.__new__(ScamperPingReply)
 *         reply._r = cscamper_ping.scamper_ping_reply_use(r)             # <<<<<<<<<<<<<<
 *         reply._p = cscamper_ping.scamper_ping_probe_use(p)
 *         reply._fdst = cscamper_ping.scamper_ping_reply_is_from_target(ping, r)
*/
  __pyx_v_reply->_r = scamper_ping_reply_use(__pyx_v_r);

  /* "scamper.pyx":2325
 *         reply = ScamperPingReply.__new__(ScamperPingReply)
 *         reply._r = cscamper_ping.scamper_ping_reply_use(r)
 *         reply._p = cscamper_ping.scamper_ping_probe_use(p)             # <<<<<<<<<<<<<<
 *         reply._fdst = cscamper_ping.scamper_ping_reply_is_from_target(ping, r)
 *         return reply
*/
  __pyx_v_reply->_p = scamper_ping_probe_use(__pyx_v_p);

  /* "scamper.pyx":2326
 *         reply._r = cscamper_ping.scamper_ping_reply_use(r)
 *         reply._p = cscamper_ping.scamper_ping_probe_use(p)
 *         reply._fdst = cscamper_ping.scamper_ping_reply_is_from_target(ping, r)             # <<<<<<<<<<<<<<
 *         return reply
 * 
*/
  __pyx_v_reply->_fdst = scamper_ping_reply_is_from_target(__pyx_v_ping, __pyx_v_r);

  /* "scamper.pyx":2327
 *         reply._p = cscamper_ping.scamper_ping_probe_use(p)
 *         reply._fdst = cscamper_ping.scamper_ping_reply_is_from_target(ping, r)
 *         return reply             # <<<<<<<<<<<<<<
 * 
 *     def is_from_target(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_reply);
  __pyx_r = __pyx_v_reply;
  goto __pyx_L0;

  /* "scamper.pyx":2316
 *             usec / 1000, usec % 1000)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperPingReply from_ptr(cscamper_ping.scamper_ping_reply_t *r,
 *                                    cscamper_ping.scamper_ping_probe_t *p,
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPingReply.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_reply);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2329
 *         return reply
 * 
 *     def is_from_target(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply came from the target.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_7is_from_target(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperPingReply_6is_from_target, "\n        get method to determine if the reply came from the target.\n\n        :returns: True if the reply came from the target.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_7is_from_target = {"is_from_target", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_7is_from_target, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_6is_from_target};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_7is_from_target(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_from_target (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_from_target", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_from_target", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_6is_from_target(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_6is_from_target(struct __pyx_obj_7scamper_ScamperPingReply *__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("is_from_target", 0);

  /* "scamper.pyx":2336
 *         :rtype: bool
 *         """
 *         return self._fdst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_fdst); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2336, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2329
 *         return reply
 * 
 *     def is_from_target(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply came from the target.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.is_from_target", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2338
 *         return self._fdst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_3src___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_3src___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":2346
 *         :rtype: ScamperAddr
 *         """
 *         c = cscamper_ping.scamper_ping_reply_addr_get(self._r)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_ping_reply_addr_get(__pyx_v_self->_r);

  /* "scamper.pyx":2347
 *         """
 *         c = cscamper_ping.scamper_ping_reply_addr_get(self._r)
 *         return ScamperAddr.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2347, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2338
 *         return self._fdst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2349
 *         return ScamperAddr.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_2tx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_2tx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_2tx___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_2tx___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2357
 *         :rtype: datetime
 *         """
 *         c = cscamper_ping.scamper_ping_probe_tx_get(self._p)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_ping_probe_tx_get(__pyx_v_self->_p);

  /* "scamper.pyx":2358
 *         """
 *         c = cscamper_ping.scamper_ping_probe_tx_get(self._p)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":2359
 *         c = cscamper_ping.scamper_ping_probe_tx_get(self._p)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2358
 *         """
 *         c = cscamper_ping.scamper_ping_probe_tx_get(self._p)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":2360
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2360, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":2361
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":2362
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 2361, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2349
 *         return ScamperAddr.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperPingReply.tx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2364
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_3rtt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_3rtt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_3rtt___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_3rtt___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2372
 *         :rtype: timedelta
 *         """
 *         c = cscamper_ping.scamper_ping_reply_rtt_get(self._r)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
*/
  __pyx_v_c = scamper_ping_reply_rtt_get(__pyx_v_self->_r);

  /* "scamper.pyx":2373
 *         """
 *         c = cscamper_ping.scamper_ping_reply_rtt_get(self._r)
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 2373, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 2373, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2373, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2364
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtt(self):
 *         """
*/

  /* 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_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperPingReply.rtt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2375
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_2rx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_2rx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_2rx___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_2rx___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  struct timeval const *__pyx_v_txc;
  PyObject *__pyx_v_t = NULL;
  struct timeval const *__pyx_v_rttc;
  PyObject *__pyx_v_dt = NULL;
  PyObject *__pyx_v_td = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2384
 *         :rtype: datetime
 *         """
 *         txc = cscamper_ping.scamper_ping_probe_tx_get(self._p)             # <<<<<<<<<<<<<<
 *         if txc == NULL:
 *             return None
*/
  __pyx_v_txc = scamper_ping_probe_tx_get(__pyx_v_self->_p);

  /* "scamper.pyx":2385
 *         """
 *         txc = cscamper_ping.scamper_ping_probe_tx_get(self._p)
 *         if txc == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(txc.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_txc == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":2386
 *         txc = cscamper_ping.scamper_ping_probe_tx_get(self._p)
 *         if txc == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(txc.tv_sec)
 *         rttc = cscamper_ping.scamper_ping_reply_rtt_get(self._r)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2385
 *         """
 *         txc = cscamper_ping.scamper_ping_probe_tx_get(self._p)
 *         if txc == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(txc.tv_sec)
*/
  }

  /* "scamper.pyx":2387
 *         if txc == NULL:
 *             return None
 *         t = time.gmtime(txc.tv_sec)             # <<<<<<<<<<<<<<
 *         rttc = cscamper_ping.scamper_ping_reply_rtt_get(self._r)
 * 
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_txc->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2387, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2387, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":2388
 *             return None
 *         t = time.gmtime(txc.tv_sec)
 *         rttc = cscamper_ping.scamper_ping_reply_rtt_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *         dt = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], txc.tv_usec,
*/
  __pyx_v_rttc = scamper_ping_reply_rtt_get(__pyx_v_self->_r);

  /* "scamper.pyx":2390
 *         rttc = cscamper_ping.scamper_ping_reply_rtt_get(self._r)
 * 
 *         dt = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], txc.tv_usec,             # <<<<<<<<<<<<<<
 *                                tzinfo=datetime.timezone.utc)
 *         td = datetime.timedelta(seconds=rttc.tv_sec, microseconds=rttc.tv_usec)
*/
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_txc->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":2391
 * 
 *         dt = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], txc.tv_usec,
 *                                tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 *         td = datetime.timedelta(seconds=rttc.tv_sec, microseconds=rttc.tv_usec)
 * 
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 2390, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_dt = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":2392
 *         dt = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], txc.tv_usec,
 *                                tzinfo=datetime.timezone.utc)
 *         td = datetime.timedelta(seconds=rttc.tv_sec, microseconds=rttc.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *         return dt + td
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = __Pyx_PyLong_From_time_t(__pyx_v_rttc->tv_sec); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_rttc->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2392, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_13))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_13);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_13);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_13, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_3, NULL};
    __pyx_t_11 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_14, __pyx_t_11, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 2392, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_12, __pyx_t_11, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 2392, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_13, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_11);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_td = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":2394
 *         td = datetime.timedelta(seconds=rttc.tv_sec, microseconds=rttc.tv_usec)
 * 
 *         return dt + td             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyNumber_Add(__pyx_v_dt, __pyx_v_td); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2375
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperPingReply.rx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XDECREF(__pyx_v_dt);
  __Pyx_XDECREF(__pyx_v_td);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2396
 *         return dt + td
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_7attempt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_7attempt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_7attempt___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_7attempt___get__(struct __pyx_obj_7scamper_ScamperPingReply *__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("__get__", 0);

  /* "scamper.pyx":2405
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_probe_id_get(self._p) + 1             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_long((scamper_ping_probe_id_get(__pyx_v_self->_p) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2396
 *         return dt + td
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.attempt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2407
 *         return cscamper_ping.scamper_ping_probe_id_get(self._p) + 1
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_ipid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_10probe_ipid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_10probe_ipid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_10probe_ipid___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_10probe_ipid___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  uint32_t __pyx_v_flags;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2415
 *         :rtype: int
 *         """
 *         flags = cscamper_ping.scamper_ping_probe_flags_get(self._p)             # <<<<<<<<<<<<<<
 *         if (flags & SCAMPER_PING_REPLY_FLAG_PROBE_IPID) == 0:
 *             return None
*/
  __pyx_v_flags = scamper_ping_probe_flags_get(__pyx_v_self->_p);

  /* "scamper.pyx":2416
 *         """
 *         flags = cscamper_ping.scamper_ping_probe_flags_get(self._p)
 *         if (flags & SCAMPER_PING_REPLY_FLAG_PROBE_IPID) == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_probe_ipid_get(self._p)
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2416, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_PING_REPLY_FLAG_PROBE_IP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2416, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_And(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2416, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2416, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2417
 *         flags = cscamper_ping.scamper_ping_probe_flags_get(self._p)
 *         if (flags & SCAMPER_PING_REPLY_FLAG_PROBE_IPID) == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_ping.scamper_ping_probe_ipid_get(self._p)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2416
 *         """
 *         flags = cscamper_ping.scamper_ping_probe_flags_get(self._p)
 *         if (flags & SCAMPER_PING_REPLY_FLAG_PROBE_IPID) == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_probe_ipid_get(self._p)
*/
  }

  /* "scamper.pyx":2418
 *         if (flags & SCAMPER_PING_REPLY_FLAG_PROBE_IPID) == 0:
 *             return None
 *         return cscamper_ping.scamper_ping_probe_ipid_get(self._p)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyLong_From_uint16_t(scamper_ping_probe_ipid_get(__pyx_v_self->_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2418, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2407
 *         return cscamper_ping.scamper_ping_probe_id_get(self._p) + 1
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_ipid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPingReply.probe_ipid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2420
 *         return cscamper_ping.scamper_ping_probe_ipid_get(self._p)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_proto(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_11reply_proto_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_11reply_proto_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_11reply_proto___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_11reply_proto___get__(struct __pyx_obj_7scamper_ScamperPingReply *__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("__get__", 0);

  /* "scamper.pyx":2428
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_reply_proto_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_ping_reply_proto_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2420
 *         return cscamper_ping.scamper_ping_probe_ipid_get(self._p)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_proto(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.reply_proto.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2430
 *         return cscamper_ping.scamper_ping_reply_proto_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_9reply_ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_9reply_ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_9reply_ttl___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_9reply_ttl___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  uint32_t __pyx_v_flags;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2438
 *         :rtype: int
 *         """
 *         flags = cscamper_ping.scamper_ping_reply_flags_get(self._r)             # <<<<<<<<<<<<<<
 *         if (flags & SCAMPER_PING_REPLY_FLAG_REPLY_TTL) == 0:
 *             return None
*/
  __pyx_v_flags = scamper_ping_reply_flags_get(__pyx_v_self->_r);

  /* "scamper.pyx":2439
 *         """
 *         flags = cscamper_ping.scamper_ping_reply_flags_get(self._r)
 *         if (flags & SCAMPER_PING_REPLY_FLAG_REPLY_TTL) == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_reply_ttl_get(self._r)
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_PING_REPLY_FLAG_REPLY_TT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_And(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2439, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2440
 *         flags = cscamper_ping.scamper_ping_reply_flags_get(self._r)
 *         if (flags & SCAMPER_PING_REPLY_FLAG_REPLY_TTL) == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_ping.scamper_ping_reply_ttl_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2439
 *         """
 *         flags = cscamper_ping.scamper_ping_reply_flags_get(self._r)
 *         if (flags & SCAMPER_PING_REPLY_FLAG_REPLY_TTL) == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_reply_ttl_get(self._r)
*/
  }

  /* "scamper.pyx":2441
 *         if (flags & SCAMPER_PING_REPLY_FLAG_REPLY_TTL) == 0:
 *             return None
 *         return cscamper_ping.scamper_ping_reply_ttl_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyLong_From_uint8_t(scamper_ping_reply_ttl_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2430
 *         return cscamper_ping.scamper_ping_reply_proto_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPingReply.reply_ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2443
 *         return cscamper_ping.scamper_ping_reply_ttl_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_size(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_10reply_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_10reply_size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_10reply_size___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_10reply_size___get__(struct __pyx_obj_7scamper_ScamperPingReply *__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("__get__", 0);

  /* "scamper.pyx":2451
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_reply_size_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_ping_reply_size_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2451, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2443
 *         return cscamper_ping.scamper_ping_reply_ttl_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_size(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.reply_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2453
 *         return cscamper_ping.scamper_ping_reply_size_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_ipid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_10reply_ipid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_10reply_ipid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_10reply_ipid___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_10reply_ipid___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  uint32_t __pyx_v_flags;
  scamper_addr_t *__pyx_v_sa;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2461
 *         :rtype: int
 *         """
 *         flags = cscamper_ping.scamper_ping_reply_flags_get(self._r)             # <<<<<<<<<<<<<<
 *         if (flags & SCAMPER_PING_REPLY_FLAG_REPLY_IPID) == 0:
 *             return None
*/
  __pyx_v_flags = scamper_ping_reply_flags_get(__pyx_v_self->_r);

  /* "scamper.pyx":2462
 *         """
 *         flags = cscamper_ping.scamper_ping_reply_flags_get(self._r)
 *         if (flags & SCAMPER_PING_REPLY_FLAG_REPLY_IPID) == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         sa = cscamper_ping.scamper_ping_reply_addr_get(self._r)
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_flags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_PING_REPLY_FLAG_REPLY_IP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_And(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2462, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2462, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":2463
 *         flags = cscamper_ping.scamper_ping_reply_flags_get(self._r)
 *         if (flags & SCAMPER_PING_REPLY_FLAG_REPLY_IPID) == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         sa = cscamper_ping.scamper_ping_reply_addr_get(self._r)
 *         if cscamper_addr.scamper_addr_isipv4(sa):
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2462
 *         """
 *         flags = cscamper_ping.scamper_ping_reply_flags_get(self._r)
 *         if (flags & SCAMPER_PING_REPLY_FLAG_REPLY_IPID) == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         sa = cscamper_ping.scamper_ping_reply_addr_get(self._r)
*/
  }

  /* "scamper.pyx":2464
 *         if (flags & SCAMPER_PING_REPLY_FLAG_REPLY_IPID) == 0:
 *             return None
 *         sa = cscamper_ping.scamper_ping_reply_addr_get(self._r)             # <<<<<<<<<<<<<<
 *         if cscamper_addr.scamper_addr_isipv4(sa):
 *             return cscamper_ping.scamper_ping_reply_ipid_get(self._r)
*/
  __pyx_v_sa = scamper_ping_reply_addr_get(__pyx_v_self->_r);

  /* "scamper.pyx":2465
 *             return None
 *         sa = cscamper_ping.scamper_ping_reply_addr_get(self._r)
 *         if cscamper_addr.scamper_addr_isipv4(sa):             # <<<<<<<<<<<<<<
 *             return cscamper_ping.scamper_ping_reply_ipid_get(self._r)
 *         else:
*/
  __pyx_t_4 = scamper_addr_isipv4(__pyx_v_sa);
  if (__pyx_t_4) {

    /* "scamper.pyx":2466
 *         sa = cscamper_ping.scamper_ping_reply_addr_get(self._r)
 *         if cscamper_addr.scamper_addr_isipv4(sa):
 *             return cscamper_ping.scamper_ping_reply_ipid_get(self._r)             # <<<<<<<<<<<<<<
 *         else:
 *             return cscamper_ping.scamper_ping_reply_ipid32_get(self._r)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_From_uint16_t(scamper_ping_reply_ipid_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2466, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":2465
 *             return None
 *         sa = cscamper_ping.scamper_ping_reply_addr_get(self._r)
 *         if cscamper_addr.scamper_addr_isipv4(sa):             # <<<<<<<<<<<<<<
 *             return cscamper_ping.scamper_ping_reply_ipid_get(self._r)
 *         else:
*/
  }

  /* "scamper.pyx":2468
 *             return cscamper_ping.scamper_ping_reply_ipid_get(self._r)
 *         else:
 *             return cscamper_ping.scamper_ping_reply_ipid32_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp(self):
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_From_uint32_t(scamper_ping_reply_ipid32_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2468, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "scamper.pyx":2453
 *         return cscamper_ping.scamper_ping_reply_size_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_ipid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPingReply.reply_ipid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2470
 *             return cscamper_ping.scamper_ping_reply_ipid32_get(self._r)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP response.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_9is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperPingReply_8is_icmp, "\n        get method to determine if the reply was an ICMP response.\n\n        :returns: True if the reply was an ICMP response.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_9is_icmp = {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_9is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_8is_icmp};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_9is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_8is_icmp(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_8is_icmp(struct __pyx_obj_7scamper_ScamperPingReply *__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("is_icmp", 0);

  /* "scamper.pyx":2477
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_reply_is_icmp(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_tcp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_reply_is_icmp(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2477, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2470
 *             return cscamper_ping.scamper_ping_reply_ipid32_get(self._r)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP response.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.is_icmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2479
 *         return cscamper_ping.scamper_ping_reply_is_icmp(self._r)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an TCP response.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_11is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperPingReply_10is_tcp, "\n        get method to determine if the reply was an TCP response.\n\n        :returns: True if the reply was an TCP response.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_11is_tcp = {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_11is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_10is_tcp};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_11is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tcp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tcp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tcp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_10is_tcp(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_10is_tcp(struct __pyx_obj_7scamper_ScamperPingReply *__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("is_tcp", 0);

  /* "scamper.pyx":2486
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_reply_is_tcp(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_udp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_reply_is_tcp(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2479
 *         return cscamper_ping.scamper_ping_reply_is_icmp(self._r)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an TCP response.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.is_tcp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2488
 *         return cscamper_ping.scamper_ping_reply_is_tcp(self._r)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an UDP response.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_13is_udp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperPingReply_12is_udp, "\n        get method to determine if the reply was an UDP response.\n\n        :returns: True if the reply was an UDP response.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_13is_udp = {"is_udp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_13is_udp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_12is_udp};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_13is_udp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_udp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_udp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_udp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_12is_udp(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_12is_udp(struct __pyx_obj_7scamper_ScamperPingReply *__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("is_udp", 0);

  /* "scamper.pyx":2495
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_reply_is_udp(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_echo_reply(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_reply_is_udp(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2495, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2488
 *         return cscamper_ping.scamper_ping_reply_is_tcp(self._r)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an UDP response.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.is_udp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2497
 *         return cscamper_ping.scamper_ping_reply_is_udp(self._r)
 * 
 *     def is_icmp_echo_reply(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP echo reply.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_15is_icmp_echo_reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperPingReply_14is_icmp_echo_reply, "\n        get method to determine if the reply was an ICMP echo reply.\n\n        :returns: True if the reply was an ICMP echo reply\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_15is_icmp_echo_reply = {"is_icmp_echo_reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_15is_icmp_echo_reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_14is_icmp_echo_reply};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_15is_icmp_echo_reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_echo_reply (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_echo_reply", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_echo_reply", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_14is_icmp_echo_reply(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_14is_icmp_echo_reply(struct __pyx_obj_7scamper_ScamperPingReply *__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("is_icmp_echo_reply", 0);

  /* "scamper.pyx":2504
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_reply_is_icmp_echo_reply(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_unreach(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_reply_is_icmp_echo_reply(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2497
 *         return cscamper_ping.scamper_ping_reply_is_udp(self._r)
 * 
 *     def is_icmp_echo_reply(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP echo reply.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.is_icmp_echo_reply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2506
 *         return cscamper_ping.scamper_ping_reply_is_icmp_echo_reply(self._r)
 * 
 *     def is_icmp_unreach(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP destination unreachable
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_17is_icmp_unreach(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperPingReply_16is_icmp_unreach, "\n        get method to determine if the reply was an ICMP destination unreachable\n\n        :returns: True if the reply was an ICMP destination unreachable.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_17is_icmp_unreach = {"is_icmp_unreach", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_17is_icmp_unreach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_16is_icmp_unreach};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_17is_icmp_unreach(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_unreach (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_unreach", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_unreach", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_16is_icmp_unreach(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_16is_icmp_unreach(struct __pyx_obj_7scamper_ScamperPingReply *__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("is_icmp_unreach", 0);

  /* "scamper.pyx":2513
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_reply_is_icmp_unreach(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_unreach_port(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_reply_is_icmp_unreach(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2506
 *         return cscamper_ping.scamper_ping_reply_is_icmp_echo_reply(self._r)
 * 
 *     def is_icmp_unreach(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP destination unreachable
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.is_icmp_unreach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2515
 *         return cscamper_ping.scamper_ping_reply_is_icmp_unreach(self._r)
 * 
 *     def is_icmp_unreach_port(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP destination
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_19is_icmp_unreach_port(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperPingReply_18is_icmp_unreach_port, "\n        get method to determine if the reply was an ICMP destination\n        unreachable -- port unreachable\n\n        :returns: True if the reply was an ICMP port unreachable\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_19is_icmp_unreach_port = {"is_icmp_unreach_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_19is_icmp_unreach_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_18is_icmp_unreach_port};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_19is_icmp_unreach_port(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_unreach_port (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_unreach_port", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_unreach_port", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_18is_icmp_unreach_port(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_18is_icmp_unreach_port(struct __pyx_obj_7scamper_ScamperPingReply *__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("is_icmp_unreach_port", 0);

  /* "scamper.pyx":2523
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_reply_is_icmp_unreach_port(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_ttl_exp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_reply_is_icmp_unreach_port(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2515
 *         return cscamper_ping.scamper_ping_reply_is_icmp_unreach(self._r)
 * 
 *     def is_icmp_unreach_port(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP destination
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.is_icmp_unreach_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2525
 *         return cscamper_ping.scamper_ping_reply_is_icmp_unreach_port(self._r)
 * 
 *     def is_icmp_ttl_exp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP TTL expired message
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_21is_icmp_ttl_exp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperPingReply_20is_icmp_ttl_exp, "\n        get method to determine if the reply was an ICMP TTL expired message\n\n        :returns: True if the reply was an ICMP TTL expired message.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_21is_icmp_ttl_exp = {"is_icmp_ttl_exp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_21is_icmp_ttl_exp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_20is_icmp_ttl_exp};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_21is_icmp_ttl_exp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_ttl_exp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_ttl_exp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_ttl_exp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_20is_icmp_ttl_exp(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_20is_icmp_ttl_exp(struct __pyx_obj_7scamper_ScamperPingReply *__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("is_icmp_ttl_exp", 0);

  /* "scamper.pyx":2532
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_reply_is_icmp_ttl_exp(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_tsreply(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_reply_is_icmp_ttl_exp(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2532, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2525
 *         return cscamper_ping.scamper_ping_reply_is_icmp_unreach_port(self._r)
 * 
 *     def is_icmp_ttl_exp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP TTL expired message
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.is_icmp_ttl_exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2534
 *         return cscamper_ping.scamper_ping_reply_is_icmp_ttl_exp(self._r)
 * 
 *     def is_icmp_tsreply(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP timestamp reply.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_23is_icmp_tsreply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperPingReply_22is_icmp_tsreply, "\n        get method to determine if the reply was an ICMP timestamp reply.\n\n        :returns: True if the reply was an ICMP timestamp reply.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_23is_icmp_tsreply = {"is_icmp_tsreply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_23is_icmp_tsreply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_22is_icmp_tsreply};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_23is_icmp_tsreply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_tsreply (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_tsreply", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_tsreply", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_22is_icmp_tsreply(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_22is_icmp_tsreply(struct __pyx_obj_7scamper_ScamperPingReply *__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("is_icmp_tsreply", 0);

  /* "scamper.pyx":2541
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_reply_is_icmp_tsreply(self._r)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_ptb(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_reply_is_icmp_tsreply(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2534
 *         return cscamper_ping.scamper_ping_reply_is_icmp_ttl_exp(self._r)
 * 
 *     def is_icmp_tsreply(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP timestamp reply.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.is_icmp_tsreply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2543
 *         return cscamper_ping.scamper_ping_reply_is_icmp_tsreply(self._r)
 * 
 *     def is_icmp_ptb(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP packet too big
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_25is_icmp_ptb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperPingReply_24is_icmp_ptb, "\n        get method to determine if the reply was an ICMP packet too big\n        message.\n\n        :return: True if the reply was an ICMP packet too big message.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_25is_icmp_ptb = {"is_icmp_ptb", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_25is_icmp_ptb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_24is_icmp_ptb};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_25is_icmp_ptb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_ptb (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_ptb", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_ptb", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_24is_icmp_ptb(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_24is_icmp_ptb(struct __pyx_obj_7scamper_ScamperPingReply *__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("is_icmp_ptb", 0);

  /* "scamper.pyx":2551
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_reply_is_icmp_ptb(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_reply_is_icmp_ptb(__pyx_v_self->_r)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2551, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2543
 *         return cscamper_ping.scamper_ping_reply_is_icmp_tsreply(self._r)
 * 
 *     def is_icmp_ptb(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP packet too big
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPingReply.is_icmp_ptb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2553
 *         return cscamper_ping.scamper_ping_reply_is_icmp_ptb(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_type(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_9icmp_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_9icmp_type_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_9icmp_type___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_9icmp_type___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":2562
 *         :rtype: int
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_icmp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_reply_icmp_type_get(self._r)
*/
  __pyx_t_1 = (!scamper_ping_reply_is_icmp(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":2563
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_icmp(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_ping.scamper_ping_reply_icmp_type_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2562
 *         :rtype: int
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_icmp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_reply_icmp_type_get(self._r)
*/
  }

  /* "scamper.pyx":2564
 *         if not cscamper_ping.scamper_ping_reply_is_icmp(self._r):
 *             return None
 *         return cscamper_ping.scamper_ping_reply_icmp_type_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_ping_reply_icmp_type_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2564, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2553
 *         return cscamper_ping.scamper_ping_reply_is_icmp_ptb(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_type(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPingReply.icmp_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2566
 *         return cscamper_ping.scamper_ping_reply_icmp_type_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_code(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_9icmp_code_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_9icmp_code_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_9icmp_code___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_9icmp_code___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":2575
 *         :rtype: int
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_icmp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_reply_icmp_code_get(self._r)
*/
  __pyx_t_1 = (!scamper_ping_reply_is_icmp(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":2576
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_icmp(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_ping.scamper_ping_reply_icmp_code_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2575
 *         :rtype: int
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_icmp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_reply_icmp_code_get(self._r)
*/
  }

  /* "scamper.pyx":2577
 *         if not cscamper_ping.scamper_ping_reply_is_icmp(self._r):
 *             return None
 *         return cscamper_ping.scamper_ping_reply_icmp_code_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_ping_reply_icmp_code_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2577, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2566
 *         return cscamper_ping.scamper_ping_reply_icmp_type_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_code(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPingReply.icmp_code.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2579
 *         return cscamper_ping.scamper_ping_reply_icmp_code_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_nhmtu(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_10icmp_nhmtu_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_10icmp_nhmtu_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_10icmp_nhmtu___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_10icmp_nhmtu___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":2588
 *         :rtype: int
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_icmp_ptb(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_reply_icmp_nhmtu_get(self._r)
*/
  __pyx_t_1 = (!scamper_ping_reply_is_icmp_ptb(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":2589
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_icmp_ptb(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_ping.scamper_ping_reply_icmp_nhmtu_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2588
 *         :rtype: int
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_icmp_ptb(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_reply_icmp_nhmtu_get(self._r)
*/
  }

  /* "scamper.pyx":2590
 *         if not cscamper_ping.scamper_ping_reply_is_icmp_ptb(self._r):
 *             return None
 *         return cscamper_ping.scamper_ping_reply_icmp_nhmtu_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_ping_reply_icmp_nhmtu_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2590, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2579
 *         return cscamper_ping.scamper_ping_reply_icmp_code_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_nhmtu(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPingReply.icmp_nhmtu.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2592
 *         return cscamper_ping.scamper_ping_reply_icmp_nhmtu_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tcp_flags(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_9tcp_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_9tcp_flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_9tcp_flags___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_9tcp_flags___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":2601
 *         :rtype: int
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_tcp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_reply_tcp_flags_get(self._r)
*/
  __pyx_t_1 = (!scamper_ping_reply_is_tcp(__pyx_v_self->_r));
  if (__pyx_t_1) {

    /* "scamper.pyx":2602
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_tcp(self._r):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_ping.scamper_ping_reply_tcp_flags_get(self._r)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2601
 *         :rtype: int
 *         """
 *         if not cscamper_ping.scamper_ping_reply_is_tcp(self._r):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_reply_tcp_flags_get(self._r)
*/
  }

  /* "scamper.pyx":2603
 *         if not cscamper_ping.scamper_ping_reply_is_tcp(self._r):
 *             return None
 *         return cscamper_ping.scamper_ping_reply_tcp_flags_get(self._r)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_ping_reply_tcp_flags_get(__pyx_v_self->_r)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2592
 *         return cscamper_ping.scamper_ping_reply_icmp_nhmtu_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tcp_flags(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPingReply.tcp_flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2605
 *         return cscamper_ping.scamper_ping_reply_tcp_flags_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ifname(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_6ifname_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_6ifname_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_6ifname___get__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_6ifname___get__(struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  char const *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2614
 *         :rtype: string
 *         """
 *         c = cscamper_ping.scamper_ping_reply_ifname_get(self._r)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_ping_reply_ifname_get(__pyx_v_self->_r);

  /* "scamper.pyx":2615
 *         """
 *         c = cscamper_ping.scamper_ping_reply_ifname_get(self._r)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":2616
 *         c = cscamper_ping.scamper_ping_reply_ifname_get(self._r)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2615
 *         """
 *         c = cscamper_ping.scamper_ping_reply_ifname_get(self._r)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":2617
 *         if c == NULL:
 *             return None
 *         return c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 * class _ScamperPingIterator:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2617, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2605
 *         return cscamper_ping.scamper_ping_reply_tcp_flags_get(self._r)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ifname(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPingReply.ifname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_27__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_27__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_27__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_27__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_26__reduce_cython__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_26__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__p_self__r_cannot_be_conver, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperPingReply.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_29__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_16ScamperPingReply_29__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_29__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_16ScamperPingReply_29__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperPingReply.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_16ScamperPingReply_28__setstate_cython__(((struct __pyx_obj_7scamper_ScamperPingReply *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperPingReply_28__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPingReply *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__p_self__r_cannot_be_conver, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperPingReply.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2620
 * 
 * class _ScamperPingIterator:
 *     def __init__(self, ping):             # <<<<<<<<<<<<<<
 *         self._ping = ping
 *         self._i = 0;
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20_ScamperPingIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20_ScamperPingIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20_ScamperPingIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20_ScamperPingIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_ping = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_ping,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2620, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 2620, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2620, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 2620, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 2620, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2620, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 2620, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_ping = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 2620, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperPingIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20_ScamperPingIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_ping);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20_ScamperPingIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_ping) {
  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("__init__", 0);

  /* "scamper.pyx":2621
 * class _ScamperPingIterator:
 *     def __init__(self, ping):
 *         self._ping = ping             # <<<<<<<<<<<<<<
 *         self._i = 0;
 *         self._c = ping.probe_count
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ping_2, __pyx_v_ping) < 0) __PYX_ERR(0, 2621, __pyx_L1_error)

  /* "scamper.pyx":2622
 *     def __init__(self, ping):
 *         self._ping = ping
 *         self._i = 0;             # <<<<<<<<<<<<<<
 *         self._c = ping.probe_count
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 2622, __pyx_L1_error)

  /* "scamper.pyx":2623
 *         self._ping = ping
 *         self._i = 0;
 *         self._c = ping.probe_count             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_ping, __pyx_mstate_global->__pyx_n_u_probe_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c, __pyx_t_1) < 0) __PYX_ERR(0, 2623, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":2620
 * 
 * class _ScamperPingIterator:
 *     def __init__(self, ping):             # <<<<<<<<<<<<<<
 *         self._ping = ping
 *         self._i = 0;
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper._ScamperPingIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2625
 *         self._c = ping.probe_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20_ScamperPingIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20_ScamperPingIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20_ScamperPingIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20_ScamperPingIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2625, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2625, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 2625, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 2625, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2625, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 2625, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperPingIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20_ScamperPingIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20_ScamperPingIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":2626
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":2625
 *         self._c = ping.probe_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2628
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._c:
 *             reply = self._ping.reply(self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20_ScamperPingIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20_ScamperPingIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20_ScamperPingIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20_ScamperPingIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 2628, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2628, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 2628, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 2628, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 2628, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 2628, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperPingIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20_ScamperPingIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20_ScamperPingIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_reply = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":2629
 * 
 *     def __next__(self):
 *         while self._i < self._c:             # <<<<<<<<<<<<<<
 *             reply = self._ping.reply(self._i)
 *             self._i += 1
*/
  while (1) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2629, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2629, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_4) break;

    /* "scamper.pyx":2630
 *     def __next__(self):
 *         while self._i < self._c:
 *             reply = self._ping.reply(self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             if reply:
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ping_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2630, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2630, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_reply, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2630, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_reply, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "scamper.pyx":2631
 *         while self._i < self._c:
 *             reply = self._ping.reply(self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             if reply:
 *                 return reply
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2631, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2631, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_t_1) < 0) __PYX_ERR(0, 2631, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":2632
 *             reply = self._ping.reply(self._i)
 *             self._i += 1
 *             if reply:             # <<<<<<<<<<<<<<
 *                 return reply
 *         raise StopIteration
*/
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_reply); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 2632, __pyx_L1_error)
    if (__pyx_t_4) {

      /* "scamper.pyx":2633
 *             self._i += 1
 *             if reply:
 *                 return reply             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_reply);
      __pyx_r = __pyx_v_reply;
      goto __pyx_L0;

      /* "scamper.pyx":2632
 *             reply = self._ping.reply(self._i)
 *             self._i += 1
 *             if reply:             # <<<<<<<<<<<<<<
 *                 return reply
 *         raise StopIteration
*/
    }
  }

  /* "scamper.pyx":2634
 *             if reply:
 *                 return reply
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperPing:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 2634, __pyx_L1_error)

  /* "scamper.pyx":2628
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._c:
 *             reply = self._ping.reply(self._i)
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperPingIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_reply);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2668
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperPing_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_11ScamperPing_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing___init__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperPing___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":2669
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2669, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 2669, __pyx_L1_error)

  /* "scamper.pyx":2668
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPing.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2671
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c_s != NULL:
 *             cscamper_ping.scamper_ping_stats_free(self._c_s)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_11ScamperPing_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_11ScamperPing_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_11ScamperPing_2__dealloc__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_11ScamperPing_2__dealloc__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":2672
 * 
 *     def __dealloc__(self):
 *         if self._c_s != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_stats_free(self._c_s)
 *         if self._c != NULL:
*/
  __pyx_t_1 = (__pyx_v_self->_c_s != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":2673
 *     def __dealloc__(self):
 *         if self._c_s != NULL:
 *             cscamper_ping.scamper_ping_stats_free(self._c_s)             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_ping.scamper_ping_free(self._c)
*/
    scamper_ping_stats_free(__pyx_v_self->_c_s);

    /* "scamper.pyx":2672
 * 
 *     def __dealloc__(self):
 *         if self._c_s != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_stats_free(self._c_s)
 *         if self._c != NULL:
*/
  }

  /* "scamper.pyx":2674
 *         if self._c_s != NULL:
 *             cscamper_ping.scamper_ping_stats_free(self._c_s)
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":2675
 *             cscamper_ping.scamper_ping_stats_free(self._c_s)
 *         if self._c != NULL:
 *             cscamper_ping.scamper_ping_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    scamper_ping_free(__pyx_v_self->_c);

    /* "scamper.pyx":2674
 *         if self._c_s != NULL:
 *             cscamper_ping.scamper_ping_stats_free(self._c_s)
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":2671
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c_s != NULL:
 *             cscamper_ping.scamper_ping_stats_free(self._c_s)
*/

  /* function exit code */
}

/* "scamper.pyx":2677
 *             cscamper_ping.scamper_ping_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         c = cscamper_ping.scamper_ping_totext(self._c, NULL)
 *         if c == NULL:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_4__str__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_4__str__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":2678
 * 
 *     def __str__(self):
 *         c = cscamper_ping.scamper_ping_totext(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_ping_totext(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":2679
 *     def __str__(self):
 *         c = cscamper_ping.scamper_ping_totext(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":2680
 *         c = cscamper_ping.scamper_ping_totext(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2679
 *     def __str__(self):
 *         c = cscamper_ping.scamper_ping_totext(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":2681
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2681, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2681, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":2682
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":2683
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":2677
 *             cscamper_ping.scamper_ping_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         c = cscamper_ping.scamper_ping_totext(self._c, NULL)
 *         if c == NULL:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPing.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2685
 *         return out
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return _ScamperPingIterator(self)
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_7__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_7__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_6__iter__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_6__iter__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":2686
 * 
 *     def __iter__(self):
 *         return _ScamperPingIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperPingIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2686, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2686, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2685
 *         return out
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return _ScamperPingIterator(self)
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPing.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2688
 *         return _ScamperPingIterator(self)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperPing from_ptr(cscamper_ping.scamper_ping_t *ptr):
 *         cdef ScamperPing ping = ScamperPing.__new__(ScamperPing)
*/

static struct __pyx_obj_7scamper_ScamperPing *__pyx_f_7scamper_11ScamperPing_from_ptr(scamper_ping_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperPing *__pyx_v_ping = 0;
  struct __pyx_obj_7scamper_ScamperPing *__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("from_ptr", 0);

  /* "scamper.pyx":2690
 *     @staticmethod
 *     cdef ScamperPing from_ptr(cscamper_ping.scamper_ping_t *ptr):
 *         cdef ScamperPing ping = ScamperPing.__new__(ScamperPing)             # <<<<<<<<<<<<<<
 *         ping._c = ptr
 *         return ping
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperPing(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2690, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_ping = ((struct __pyx_obj_7scamper_ScamperPing *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":2691
 *     cdef ScamperPing from_ptr(cscamper_ping.scamper_ping_t *ptr):
 *         cdef ScamperPing ping = ScamperPing.__new__(ScamperPing)
 *         ping._c = ptr             # <<<<<<<<<<<<<<
 *         return ping
 * 
*/
  __pyx_v_ping->_c = __pyx_v_ptr;

  /* "scamper.pyx":2692
 *         cdef ScamperPing ping = ScamperPing.__new__(ScamperPing)
 *         ping._c = ptr
 *         return ping             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_ping);
  __pyx_r = __pyx_v_ping;
  goto __pyx_L0;

  /* "scamper.pyx":2688
 *         return _ScamperPingIterator(self)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperPing from_ptr(cscamper_ping.scamper_ping_t *ptr):
 *         cdef ScamperPing ping = ScamperPing.__new__(ScamperPing)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ping);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2694
 *         return ping
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_4inst___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_4inst___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2703
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":2694
 *         return ping
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2705
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_4list_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_4list_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_4list___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_4list___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  scamper_list_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":2713
 *         :rtype: ScamperList
 *         """
 *         c = cscamper_ping.scamper_ping_list_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperList.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_ping_list_get(__pyx_v_self->_c);

  /* "scamper.pyx":2714
 *         """
 *         c = cscamper_ping.scamper_ping_list_get(self._c)
 *         return ScamperList.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2705
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.list.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2716
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_5cycle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_5cycle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_5cycle___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_5cycle___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  scamper_cycle_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uint16_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2724
 *         :rtype: ScamperCycle
 *         """
 *         c = cscamper_ping.scamper_ping_cycle_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
*/
  __pyx_v_c = scamper_ping_cycle_get(__pyx_v_self->_c);

  /* "scamper.pyx":2725
 *         """
 *         c = cscamper_ping.scamper_ping_cycle_get(self._c)
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 2725, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2716
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.cycle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2727
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_3src___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_3src___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":2735
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_ping.scamper_ping_src_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_ping_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":2736
 *         """
 *         c_a = cscamper_ping.scamper_ping_src_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2736, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2727
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2738
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_3dst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_3dst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_3dst___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_3dst___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":2746
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_ping.scamper_ping_dst_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_ping_dst_get(__pyx_v_self->_c);

  /* "scamper.pyx":2747
 *         """
 *         c_a = cscamper_ping.scamper_ping_dst_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2747, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2738
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.dst.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2749
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtr(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_3rtr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_3rtr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_3rtr___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_3rtr___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":2758
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_ping.scamper_ping_rtr_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_ping_rtr_get(__pyx_v_self->_c);

  /* "scamper.pyx":2759
 *         """
 *         c_a = cscamper_ping.scamper_ping_rtr_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2749
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtr(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.rtr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2761
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_6userid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_6userid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_6userid___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_6userid___get__(struct __pyx_obj_7scamper_ScamperPing *__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("__get__", 0);

  /* "scamper.pyx":2769
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_userid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_ping_userid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2769, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2761
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.userid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2771
 *         return cscamper_ping.scamper_ping_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_5start___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_5start___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2779
 *         :rtype: datetime
 *         """
 *         c = cscamper_ping.scamper_ping_start_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_ping_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":2780
 *         """
 *         c = cscamper_ping.scamper_ping_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":2781
 *         c = cscamper_ping.scamper_ping_start_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2780
 *         """
 *         c = cscamper_ping.scamper_ping_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":2782
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2782, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2782, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":2783
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 2783, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":2784
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     def to_json(self):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 2784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 2783, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 2783, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2783, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2771
 *         return cscamper_ping.scamper_ping_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperPing.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2786
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this ping measurement.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_9to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperPing_8to_json, "\n        get method to obtain a JSON rendering of this ping measurement.\n\n        :returns: json representation\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_9to_json = {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_9to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_8to_json};
static PyObject *__pyx_pw_7scamper_11ScamperPing_9to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_json (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("to_json", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("to_json", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_8to_json(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_8to_json(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_json", 0);

  /* "scamper.pyx":2793
 *         :rtype: string
 *         """
 *         c = cscamper_ping.scamper_ping_tojson(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_ping_tojson(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":2794
 *         """
 *         c = cscamper_ping.scamper_ping_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":2795
 *         c = cscamper_ping.scamper_ping_tojson(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2794
 *         """
 *         c = cscamper_ping.scamper_ping_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":2796
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2796, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2796, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":2797
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":2798
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":2786
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this ping measurement.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPing.to_json", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2800
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempts(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_8attempts_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_8attempts_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_8attempts___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_8attempts___get__(struct __pyx_obj_7scamper_ScamperPing *__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("__get__", 0);

  /* "scamper.pyx":2809
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_attempts_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_ping_attempts_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2809, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2800
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempts(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.attempts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2811
 *         return cscamper_ping.scamper_ping_attempts_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_size(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_10probe_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_10probe_size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_10probe_size___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_10probe_size___get__(struct __pyx_obj_7scamper_ScamperPing *__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("__get__", 0);

  /* "scamper.pyx":2819
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_pktsize_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_ping_pktsize_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2811
 *         return cscamper_ping.scamper_ping_attempts_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_size(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.probe_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2821
 *         return cscamper_ping.scamper_ping_pktsize_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def payload(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_7payload_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_7payload_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_7payload___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_7payload___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  uint8_t const *__pyx_v_data;
  uint16_t __pyx_v_length;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":2830
 *         """
 *         cdef const uint8_t *data
 *         data = cscamper_ping.scamper_ping_data_get(self._c)             # <<<<<<<<<<<<<<
 *         length = cscamper_ping.scamper_ping_datalen_get(self._c)
 *         if data == NULL or length == 0:
*/
  __pyx_v_data = scamper_ping_data_get(__pyx_v_self->_c);

  /* "scamper.pyx":2831
 *         cdef const uint8_t *data
 *         data = cscamper_ping.scamper_ping_data_get(self._c)
 *         length = cscamper_ping.scamper_ping_datalen_get(self._c)             # <<<<<<<<<<<<<<
 *         if data == NULL or length == 0:
 *             return None
*/
  __pyx_v_length = scamper_ping_datalen_get(__pyx_v_self->_c);

  /* "scamper.pyx":2832
 *         data = cscamper_ping.scamper_ping_data_get(self._c)
 *         length = cscamper_ping.scamper_ping_datalen_get(self._c)
 *         if data == NULL or length == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return data[:length]
*/
  __pyx_t_2 = (__pyx_v_data == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_length == 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":2833
 *         length = cscamper_ping.scamper_ping_datalen_get(self._c)
 *         if data == NULL or length == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return data[:length]
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":2832
 *         data = cscamper_ping.scamper_ping_data_get(self._c)
 *         length = cscamper_ping.scamper_ping_datalen_get(self._c)
 *         if data == NULL or length == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return data[:length]
*/
  }

  /* "scamper.pyx":2834
 *         if data == NULL or length == 0:
 *             return None
 *         return data[:length]             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_data) + 0, __pyx_v_length - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2834, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2821
 *         return cscamper_ping.scamper_ping_pktsize_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def payload(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPing.payload.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2836
 *         return data[:length]
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent ICMP packets.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_11is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperPing_10is_icmp, "\n        get method to determine if the ping measurement sent ICMP packets.\n\n        :returns: True if the ping measurement sent ICMP packets.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_11is_icmp = {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_11is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_10is_icmp};
static PyObject *__pyx_pw_7scamper_11ScamperPing_11is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_10is_icmp(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_10is_icmp(struct __pyx_obj_7scamper_ScamperPing *__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("is_icmp", 0);

  /* "scamper.pyx":2843
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_method_is_icmp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_time(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_method_is_icmp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2843, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2836
 *         return data[:length]
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent ICMP packets.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.is_icmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2845
 *         return cscamper_ping.scamper_ping_method_is_icmp(self._c)
 * 
 *     def is_icmp_time(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent ICMP timestamp
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_13is_icmp_time(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperPing_12is_icmp_time, "\n        get method to determine if the ping measurement sent ICMP timestamp\n        request packets.\n\n        :returns: True if the ping measurement sent ICMP timestamp requests\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_13is_icmp_time = {"is_icmp_time", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_13is_icmp_time, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_12is_icmp_time};
static PyObject *__pyx_pw_7scamper_11ScamperPing_13is_icmp_time(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_time (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_time", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_time", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_12is_icmp_time(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_12is_icmp_time(struct __pyx_obj_7scamper_ScamperPing *__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("is_icmp_time", 0);

  /* "scamper.pyx":2853
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_method_is_icmp_time(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_tcp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_method_is_icmp_time(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2845
 *         return cscamper_ping.scamper_ping_method_is_icmp(self._c)
 * 
 *     def is_icmp_time(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent ICMP timestamp
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.is_icmp_time", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2855
 *         return cscamper_ping.scamper_ping_method_is_icmp_time(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP packets.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_15is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperPing_14is_tcp, "\n        get method to determine if the ping measurement sent TCP packets.\n\n        :returns: True if the ping measurement sent TCP packets.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_15is_tcp = {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_15is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_14is_tcp};
static PyObject *__pyx_pw_7scamper_11ScamperPing_15is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tcp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tcp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tcp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_14is_tcp(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_14is_tcp(struct __pyx_obj_7scamper_ScamperPing *__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("is_tcp", 0);

  /* "scamper.pyx":2862
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_method_is_tcp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_tcp_ack_sport(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_method_is_tcp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2862, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2855
 *         return cscamper_ping.scamper_ping_method_is_icmp_time(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP packets.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.is_tcp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2864
 *         return cscamper_ping.scamper_ping_method_is_tcp(self._c)
 * 
 *     def is_tcp_ack_sport(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP ACK packets
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_17is_tcp_ack_sport(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperPing_16is_tcp_ack_sport, "\n        get method to determine if the ping measurement sent TCP ACK packets\n        where the source port changed for each packet.\n\n        :returns: True if the ping measurement sent these TCP ACK packets.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_17is_tcp_ack_sport = {"is_tcp_ack_sport", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_17is_tcp_ack_sport, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_16is_tcp_ack_sport};
static PyObject *__pyx_pw_7scamper_11ScamperPing_17is_tcp_ack_sport(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tcp_ack_sport (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tcp_ack_sport", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tcp_ack_sport", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_16is_tcp_ack_sport(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_16is_tcp_ack_sport(struct __pyx_obj_7scamper_ScamperPing *__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("is_tcp_ack_sport", 0);

  /* "scamper.pyx":2872
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_method_is_tcp_ack_sport(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_udp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_method_is_tcp_ack_sport(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2864
 *         return cscamper_ping.scamper_ping_method_is_tcp(self._c)
 * 
 *     def is_tcp_ack_sport(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP ACK packets
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.is_tcp_ack_sport", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2874
 *         return cscamper_ping.scamper_ping_method_is_tcp_ack_sport(self._c)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent UDP packets.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_19is_udp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperPing_18is_udp, "\n        get method to determine if the ping measurement sent UDP packets.\n\n        :returns: True if the ping measurement sent UDP packets.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_19is_udp = {"is_udp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_19is_udp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_18is_udp};
static PyObject *__pyx_pw_7scamper_11ScamperPing_19is_udp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_udp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_udp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_udp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_18is_udp(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_18is_udp(struct __pyx_obj_7scamper_ScamperPing *__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("is_udp", 0);

  /* "scamper.pyx":2881
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_method_is_udp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_vary_sport(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_method_is_udp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2874
 *         return cscamper_ping.scamper_ping_method_is_tcp_ack_sport(self._c)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent UDP packets.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.is_udp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2883
 *         return cscamper_ping.scamper_ping_method_is_udp(self._c)
 * 
 *     def is_vary_sport(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP or UDP
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_21is_vary_sport(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperPing_20is_vary_sport, "\n        get method to determine if the ping measurement sent TCP or UDP\n        packets where the source port changed for each packet.\n\n        :returns: True if the ping measurement sent these TCP or UDP packets\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_21is_vary_sport = {"is_vary_sport", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_21is_vary_sport, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_20is_vary_sport};
static PyObject *__pyx_pw_7scamper_11ScamperPing_21is_vary_sport(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_vary_sport (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_vary_sport", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_vary_sport", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_20is_vary_sport(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_20is_vary_sport(struct __pyx_obj_7scamper_ScamperPing *__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("is_vary_sport", 0);

  /* "scamper.pyx":2891
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_method_is_vary_sport(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_vary_dport(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_method_is_vary_sport(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2883
 *         return cscamper_ping.scamper_ping_method_is_udp(self._c)
 * 
 *     def is_vary_sport(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP or UDP
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.is_vary_sport", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2893
 *         return cscamper_ping.scamper_ping_method_is_vary_sport(self._c)
 * 
 *     def is_vary_dport(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP or UDP
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_23is_vary_dport(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperPing_22is_vary_dport, "\n        get method to determine if the ping measurement sent TCP or UDP\n        packets where the destination port changed for each packet.\n\n        :returns: True if the ping measurement sent these TCP or UDP packets\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_23is_vary_dport = {"is_vary_dport", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_23is_vary_dport, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_22is_vary_dport};
static PyObject *__pyx_pw_7scamper_11ScamperPing_23is_vary_dport(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_vary_dport (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_vary_dport", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_vary_dport", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_22is_vary_dport(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_22is_vary_dport(struct __pyx_obj_7scamper_ScamperPing *__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("is_vary_dport", 0);

  /* "scamper.pyx":2901
 *         :rtype: bool
 *         """
 *         return cscamper_ping.scamper_ping_method_is_vary_dport(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ping_method_is_vary_dport(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2893
 *         return cscamper_ping.scamper_ping_method_is_vary_sport(self._c)
 * 
 *     def is_vary_dport(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP or UDP
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.is_vary_dport", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2903
 *         return cscamper_ping.scamper_ping_method_is_vary_dport(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_9probe_ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_9probe_ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_9probe_ttl___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_9probe_ttl___get__(struct __pyx_obj_7scamper_ScamperPing *__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("__get__", 0);

  /* "scamper.pyx":2911
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_ttl_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_ping_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2903
 *         return cscamper_ping.scamper_ping_method_is_vary_dport(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.probe_ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2913
 *         return cscamper_ping.scamper_ping_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_tos(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_9probe_tos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_9probe_tos_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_9probe_tos___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_9probe_tos___get__(struct __pyx_obj_7scamper_ScamperPing *__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("__get__", 0);

  /* "scamper.pyx":2921
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_tos_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_ping_tos_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2921, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2913
 *         return cscamper_ping.scamper_ping_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_tos(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.probe_tos.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2923
 *         return cscamper_ping.scamper_ping_tos_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_timeout(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_12wait_timeout_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_12wait_timeout_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_12wait_timeout___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_12wait_timeout___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  struct timeval const *__pyx_v_tv;
  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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2932
 *         :rtype: timedelta
 *         """
 *         tv = cscamper_ping.scamper_ping_wait_timeout_get(self._c)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
*/
  __pyx_v_tv = scamper_ping_wait_timeout_get(__pyx_v_self->_c);

  /* "scamper.pyx":2933
 *         """
 *         tv = cscamper_ping.scamper_ping_wait_timeout_get(self._c)
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2933, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2933, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 2933, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 2933, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2933, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2923
 *         return cscamper_ping.scamper_ping_tos_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_timeout(self):
 *         """
*/

  /* 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_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperPing.wait_timeout.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2935
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_probe(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_10wait_probe_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_10wait_probe_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_10wait_probe___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_10wait_probe___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  struct timeval const *__pyx_v_tv;
  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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":2943
 *         :rtype: timedelta
 *         """
 *         tv = cscamper_ping.scamper_ping_wait_probe_get(self._c)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
*/
  __pyx_v_tv = scamper_ping_wait_probe_get(__pyx_v_self->_c);

  /* "scamper.pyx":2944
 *         """
 *         tv = cscamper_ping.scamper_ping_wait_probe_get(self._c)
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2944, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 2944, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 2944, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":2935
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_probe(self):
 *         """
*/

  /* 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_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperPing.wait_probe.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2946
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_sport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_11probe_sport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_11probe_sport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_11probe_sport___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_11probe_sport___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":2955
 *         :rtype: int
 *         """
 *         if (cscamper_ping.scamper_ping_method_is_tcp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):
 *             return cscamper_ping.scamper_ping_sport_get(self._c)
*/
  __pyx_t_2 = scamper_ping_method_is_tcp(__pyx_v_self->_c);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }

  /* "scamper.pyx":2956
 *         """
 *         if (cscamper_ping.scamper_ping_method_is_tcp(self._c) or
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):             # <<<<<<<<<<<<<<
 *             return cscamper_ping.scamper_ping_sport_get(self._c)
 *         return None
*/
  __pyx_t_2 = scamper_ping_method_is_udp(__pyx_v_self->_c);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;

  /* "scamper.pyx":2955
 *         :rtype: int
 *         """
 *         if (cscamper_ping.scamper_ping_method_is_tcp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):
 *             return cscamper_ping.scamper_ping_sport_get(self._c)
*/
  if (__pyx_t_1) {

    /* "scamper.pyx":2957
 *         if (cscamper_ping.scamper_ping_method_is_tcp(self._c) or
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):
 *             return cscamper_ping.scamper_ping_sport_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_From_uint16_t(scamper_ping_sport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2957, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":2955
 *         :rtype: int
 *         """
 *         if (cscamper_ping.scamper_ping_method_is_tcp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):
 *             return cscamper_ping.scamper_ping_sport_get(self._c)
*/
  }

  /* "scamper.pyx":2958
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):
 *             return cscamper_ping.scamper_ping_sport_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":2946
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_sport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPing.probe_sport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2960
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_dport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_11probe_dport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_11probe_dport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_11probe_dport___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_11probe_dport___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":2969
 *         :rtype: int
 *         """
 *         if (cscamper_ping.scamper_ping_method_is_tcp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):
 *             return cscamper_ping.scamper_ping_dport_get(self._c)
*/
  __pyx_t_2 = scamper_ping_method_is_tcp(__pyx_v_self->_c);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }

  /* "scamper.pyx":2970
 *         """
 *         if (cscamper_ping.scamper_ping_method_is_tcp(self._c) or
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):             # <<<<<<<<<<<<<<
 *             return cscamper_ping.scamper_ping_dport_get(self._c)
 *         return None
*/
  __pyx_t_2 = scamper_ping_method_is_udp(__pyx_v_self->_c);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;

  /* "scamper.pyx":2969
 *         :rtype: int
 *         """
 *         if (cscamper_ping.scamper_ping_method_is_tcp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):
 *             return cscamper_ping.scamper_ping_dport_get(self._c)
*/
  if (__pyx_t_1) {

    /* "scamper.pyx":2971
 *         if (cscamper_ping.scamper_ping_method_is_tcp(self._c) or
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):
 *             return cscamper_ping.scamper_ping_dport_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_From_uint16_t(scamper_ping_dport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2971, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":2969
 *         :rtype: int
 *         """
 *         if (cscamper_ping.scamper_ping_method_is_tcp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):
 *             return cscamper_ping.scamper_ping_dport_get(self._c)
*/
  }

  /* "scamper.pyx":2972
 *             cscamper_ping.scamper_ping_method_is_udp(self._c)):
 *             return cscamper_ping.scamper_ping_dport_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":2960
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_dport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPing.probe_dport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2974
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_icmp_sum(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_14probe_icmp_sum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_14probe_icmp_sum_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_14probe_icmp_sum___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_14probe_icmp_sum___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":2983
 *         :rtype: int
 *         """
 *         if cscamper_ping.scamper_ping_method_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_ping.scamper_ping_icmpsum_get(self._c)
 *         return None
*/
  __pyx_t_1 = scamper_ping_method_is_icmp(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":2984
 *         """
 *         if cscamper_ping.scamper_ping_method_is_icmp(self._c):
 *             return cscamper_ping.scamper_ping_icmpsum_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_ping_icmpsum_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2984, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":2983
 *         :rtype: int
 *         """
 *         if cscamper_ping.scamper_ping_method_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_ping.scamper_ping_icmpsum_get(self._c)
 *         return None
*/
  }

  /* "scamper.pyx":2985
 *         if cscamper_ping.scamper_ping_method_is_icmp(self._c):
 *             return cscamper_ping.scamper_ping_icmpsum_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":2974
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_icmp_sum(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPing.probe_icmp_sum.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2987
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_tcp_seq(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_13probe_tcp_seq_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_13probe_tcp_seq_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_13probe_tcp_seq___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_13probe_tcp_seq___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":2996
 *         :rtype: int
 *         """
 *         if cscamper_ping.scamper_ping_method_is_tcp(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_ping.scamper_ping_tcpseq_get(self._c)
 *         return None
*/
  __pyx_t_1 = scamper_ping_method_is_tcp(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":2997
 *         """
 *         if cscamper_ping.scamper_ping_method_is_tcp(self._c):
 *             return cscamper_ping.scamper_ping_tcpseq_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_ping_tcpseq_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2997, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":2996
 *         :rtype: int
 *         """
 *         if cscamper_ping.scamper_ping_method_is_tcp(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_ping.scamper_ping_tcpseq_get(self._c)
 *         return None
*/
  }

  /* "scamper.pyx":2998
 *         if cscamper_ping.scamper_ping_method_is_tcp(self._c):
 *             return cscamper_ping.scamper_ping_tcpseq_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":2987
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_tcp_seq(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPing.probe_tcp_seq.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3000
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_tcp_ack(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_13probe_tcp_ack_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_13probe_tcp_ack_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_13probe_tcp_ack___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_13probe_tcp_ack___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":3009
 *         :rtype: int
 *         """
 *         if cscamper_ping.scamper_ping_method_is_tcp(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_ping.scamper_ping_tcpack_get(self._c)
 *         return None
*/
  __pyx_t_1 = scamper_ping_method_is_tcp(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":3010
 *         """
 *         if cscamper_ping.scamper_ping_method_is_tcp(self._c):
 *             return cscamper_ping.scamper_ping_tcpack_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_ping_tcpack_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3010, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":3009
 *         :rtype: int
 *         """
 *         if cscamper_ping.scamper_ping_method_is_tcp(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_ping.scamper_ping_tcpack_get(self._c)
 *         return None
*/
  }

  /* "scamper.pyx":3011
 *         if cscamper_ping.scamper_ping_method_is_tcp(self._c):
 *             return cscamper_ping.scamper_ping_tcpack_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":3000
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_tcp_ack(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPing.probe_tcp_ack.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3013
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_10stop_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_10stop_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_10stop_count___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_10stop_count___get__(struct __pyx_obj_7scamper_ScamperPing *__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("__get__", 0);

  /* "scamper.pyx":3022
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_stop_count_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_ping_stop_count_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3022, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3013
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.stop_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3024
 *         return cscamper_ping.scamper_ping_stop_count_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_pmtu(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_10reply_pmtu_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_10reply_pmtu_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_10reply_pmtu___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_10reply_pmtu___get__(struct __pyx_obj_7scamper_ScamperPing *__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("__get__", 0);

  /* "scamper.pyx":3033
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_pmtu_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_ping_pmtu_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3024
 *         return cscamper_ping.scamper_ping_stop_count_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_pmtu(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.reply_pmtu.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3035
 *         return cscamper_ping.scamper_ping_pmtu_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_11probe_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_11probe_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_11probe_count___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_11probe_count___get__(struct __pyx_obj_7scamper_ScamperPing *__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("__get__", 0);

  /* "scamper.pyx":3044
 *         :rtype: int
 *         """
 *         return cscamper_ping.scamper_ping_sent_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def reply(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_ping_sent_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3044, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3035
 *         return cscamper_ping.scamper_ping_pmtu_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing.probe_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3046
 *         return cscamper_ping.scamper_ping_sent_get(self._c)
 * 
 *     def reply(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         reply(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_25reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperPing_24reply, "\n        reply(i)\n        get method to obtain the first reply for a specific attempt, starting at zero.\n\n        :returns: the nominated reply\n        :rtype: ScamperPingReply\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_25reply = {"reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_25reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_24reply};
static PyObject *__pyx_pw_7scamper_11ScamperPing_25reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reply (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3046, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3046, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "reply", 0) < 0) __PYX_ERR(0, 3046, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("reply", 1, 1, 1, i); __PYX_ERR(0, 3046, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3046, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("reply", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3046, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperPing.reply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_24reply(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_24reply(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_ping_probe_t *__pyx_v_p;
  scamper_ping_reply_t *__pyx_v_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __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("reply", 0);

  /* "scamper.pyx":3054
 *         :rtype: ScamperPingReply
 *         """
 *         p = cscamper_ping.scamper_ping_probe_get(self._c, i)             # <<<<<<<<<<<<<<
 *         if p == NULL:
 *             return None
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3054, __pyx_L1_error)
  __pyx_v_p = scamper_ping_probe_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":3055
 *         """
 *         p = cscamper_ping.scamper_ping_probe_get(self._c, i)
 *         if p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         r = cscamper_ping.scamper_ping_probe_reply_get(p, 0)
*/
  __pyx_t_2 = (__pyx_v_p == NULL);
  if (__pyx_t_2) {

    /* "scamper.pyx":3056
 *         p = cscamper_ping.scamper_ping_probe_get(self._c, i)
 *         if p == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         r = cscamper_ping.scamper_ping_probe_reply_get(p, 0)
 *         return ScamperPingReply.from_ptr(r, p, self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3055
 *         """
 *         p = cscamper_ping.scamper_ping_probe_get(self._c, i)
 *         if p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         r = cscamper_ping.scamper_ping_probe_reply_get(p, 0)
*/
  }

  /* "scamper.pyx":3057
 *         if p == NULL:
 *             return None
 *         r = cscamper_ping.scamper_ping_probe_reply_get(p, 0)             # <<<<<<<<<<<<<<
 *         return ScamperPingReply.from_ptr(r, p, self._c)
 * 
*/
  __pyx_v_r = scamper_ping_probe_reply_get(__pyx_v_p, 0);

  /* "scamper.pyx":3058
 *             return None
 *         r = cscamper_ping.scamper_ping_probe_reply_get(p, 0)
 *         return ScamperPingReply.from_ptr(r, p, self._c)             # <<<<<<<<<<<<<<
 * 
 *     def replies(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_16ScamperPingReply_from_ptr(__pyx_v_r, __pyx_v_p, __pyx_v_self->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3058, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3046
 *         return cscamper_ping.scamper_ping_sent_get(self._c)
 * 
 *     def reply(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         reply(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPing.reply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3060
 *         return ScamperPingReply.from_ptr(r, p, self._c)
 * 
 *     def replies(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator that returns the first reply for
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_27replies(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperPing_26replies, "\n        get method to obtain an iterator that returns the first reply for\n        each probe.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_27replies = {"replies", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_27replies, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_26replies};
static PyObject *__pyx_pw_7scamper_11ScamperPing_27replies(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("replies (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("replies", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("replies", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_26replies(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_26replies(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("replies", 0);

  /* "scamper.pyx":3065
 *         each probe.
 *         """
 *         return _ScamperPingIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     def _stats(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperPingIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3065, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3065, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3060
 *         return ScamperPingReply.from_ptr(r, p, self._c)
 * 
 *     def replies(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator that returns the first reply for
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperPing.replies", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3067
 *         return _ScamperPingIterator(self)
 * 
 *     def _stats(self):             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             self._c_s = cscamper_ping.scamper_ping_stats_alloc(self._c)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_29_stats(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_29_stats = {"_stats", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_29_stats, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperPing_29_stats(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_stats (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("_stats", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("_stats", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_28_stats(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_28_stats(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  __Pyx_RefNannySetupContext("_stats", 0);

  /* "scamper.pyx":3068
 * 
 *     def _stats(self):
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             self._c_s = cscamper_ping.scamper_ping_stats_alloc(self._c)
 *         return
*/
  __pyx_t_1 = (__pyx_v_self->_c_s == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3069
 *     def _stats(self):
 *         if self._c_s == NULL:
 *             self._c_s = cscamper_ping.scamper_ping_stats_alloc(self._c)             # <<<<<<<<<<<<<<
 *         return
 * 
*/
    __pyx_v_self->_c_s = scamper_ping_stats_alloc(__pyx_v_self->_c);

    /* "scamper.pyx":3068
 * 
 *     def _stats(self):
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             self._c_s = cscamper_ping.scamper_ping_stats_alloc(self._c)
 *         return
*/
  }

  /* "scamper.pyx":3070
 *         if self._c_s == NULL:
 *             self._c_s = cscamper_ping.scamper_ping_stats_alloc(self._c)
 *         return             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":3067
 *         return _ScamperPingIterator(self)
 * 
 *     def _stats(self):             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             self._c_s = cscamper_ping.scamper_ping_stats_alloc(self._c)
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3072
 *         return
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nreplies(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_8nreplies_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_8nreplies_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_8nreplies___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_8nreplies___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3081
 *         :rtype: int
 *         """
 *         self._stats()             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             return None
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_stats, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3081, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3082
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_stats_nreplies_get(self._c_s)
*/
  __pyx_t_4 = (__pyx_v_self->_c_s == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3083
 *         self._stats()
 *         if self._c_s == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_ping.scamper_ping_stats_nreplies_get(self._c_s)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3082
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_stats_nreplies_get(self._c_s)
*/
  }

  /* "scamper.pyx":3084
 *         if self._c_s == NULL:
 *             return None
 *         return cscamper_ping.scamper_ping_stats_nreplies_get(self._c_s)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_ping_stats_nreplies_get(__pyx_v_self->_c_s)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3072
 *         return
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nreplies(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPing.nreplies.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3086
 *         return cscamper_ping.scamper_ping_stats_nreplies_get(self._c_s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ndups(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_5ndups_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_5ndups_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_5ndups___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_5ndups___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3095
 *         :rtype: int
 *         """
 *         self._stats()             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             return None
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_stats, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3096
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_stats_ndups_get(self._c_s)
*/
  __pyx_t_4 = (__pyx_v_self->_c_s == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3097
 *         self._stats()
 *         if self._c_s == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_ping.scamper_ping_stats_ndups_get(self._c_s)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3096
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_stats_ndups_get(self._c_s)
*/
  }

  /* "scamper.pyx":3098
 *         if self._c_s == NULL:
 *             return None
 *         return cscamper_ping.scamper_ping_stats_ndups_get(self._c_s)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_ping_stats_ndups_get(__pyx_v_self->_c_s)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3098, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3086
 *         return cscamper_ping.scamper_ping_stats_nreplies_get(self._c_s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ndups(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPing.ndups.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3100
 *         return cscamper_ping.scamper_ping_stats_ndups_get(self._c_s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nloss(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_5nloss_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_5nloss_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_5nloss___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_5nloss___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3109
 *         :rtype: int
 *         """
 *         self._stats()             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             return None
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_stats, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3110
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_stats_nloss_get(self._c_s)
*/
  __pyx_t_4 = (__pyx_v_self->_c_s == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3111
 *         self._stats()
 *         if self._c_s == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_ping.scamper_ping_stats_nloss_get(self._c_s)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3110
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_stats_nloss_get(self._c_s)
*/
  }

  /* "scamper.pyx":3112
 *         if self._c_s == NULL:
 *             return None
 *         return cscamper_ping.scamper_ping_stats_nloss_get(self._c_s)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_ping_stats_nloss_get(__pyx_v_self->_c_s)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3112, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3100
 *         return cscamper_ping.scamper_ping_stats_ndups_get(self._c_s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nloss(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPing.nloss.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3114
 *         return cscamper_ping.scamper_ping_stats_nloss_get(self._c_s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nerrs(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_5nerrs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_5nerrs_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_5nerrs___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_5nerrs___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3123
 *         :rtype: int
 *         """
 *         self._stats()             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             return None
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_stats, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3123, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3124
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_stats_nerrs_get(self._c_s)
*/
  __pyx_t_4 = (__pyx_v_self->_c_s == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3125
 *         self._stats()
 *         if self._c_s == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_ping.scamper_ping_stats_nerrs_get(self._c_s)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3124
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_ping.scamper_ping_stats_nerrs_get(self._c_s)
*/
  }

  /* "scamper.pyx":3126
 *         if self._c_s == NULL:
 *             return None
 *         return cscamper_ping.scamper_ping_stats_nerrs_get(self._c_s)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_ping_stats_nerrs_get(__pyx_v_self->_c_s)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3126, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3114
 *         return cscamper_ping.scamper_ping_stats_nloss_get(self._c_s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nerrs(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperPing.nerrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3128
 *         return cscamper_ping.scamper_ping_stats_nerrs_get(self._c_s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def min_rtt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_7min_rtt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_7min_rtt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_7min_rtt___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_7min_rtt___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3137
 *         :rtype: timedelta
 *         """
 *         self._stats()             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             return None
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_stats, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3137, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3138
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_min_rtt_get(self._c_s)
*/
  __pyx_t_4 = (__pyx_v_self->_c_s == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3139
 *         self._stats()
 *         if self._c_s == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c = cscamper_ping.scamper_ping_stats_min_rtt_get(self._c_s)
 *         if c == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3138
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_min_rtt_get(self._c_s)
*/
  }

  /* "scamper.pyx":3140
 *         if self._c_s == NULL:
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_min_rtt_get(self._c_s)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_ping_stats_min_rtt_get(__pyx_v_self->_c_s);

  /* "scamper.pyx":3141
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_min_rtt_get(self._c_s)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
*/
  __pyx_t_4 = (__pyx_v_c == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3142
 *         c = cscamper_ping.scamper_ping_stats_min_rtt_get(self._c_s)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3141
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_min_rtt_get(self._c_s)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
*/
  }

  /* "scamper.pyx":3143
 *         if c == NULL:
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3143, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_3 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_3 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_5, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 3143, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_7, __pyx_t_8, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 3143, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_6, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3143, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3128
 *         return cscamper_ping.scamper_ping_stats_nerrs_get(self._c_s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def min_rtt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperPing.min_rtt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3145
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_rtt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_7max_rtt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_7max_rtt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_7max_rtt___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_7max_rtt___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3154
 *         :rtype: timedelta
 *         """
 *         self._stats()             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             return None
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_stats, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3155
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_max_rtt_get(self._c_s)
*/
  __pyx_t_4 = (__pyx_v_self->_c_s == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3156
 *         self._stats()
 *         if self._c_s == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c = cscamper_ping.scamper_ping_stats_max_rtt_get(self._c_s)
 *         if c == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3155
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_max_rtt_get(self._c_s)
*/
  }

  /* "scamper.pyx":3157
 *         if self._c_s == NULL:
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_max_rtt_get(self._c_s)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_ping_stats_max_rtt_get(__pyx_v_self->_c_s);

  /* "scamper.pyx":3158
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_max_rtt_get(self._c_s)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
*/
  __pyx_t_4 = (__pyx_v_c == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3159
 *         c = cscamper_ping.scamper_ping_stats_max_rtt_get(self._c_s)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3158
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_max_rtt_get(self._c_s)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
*/
  }

  /* "scamper.pyx":3160
 *         if c == NULL:
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_3 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_3 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_5, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 3160, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_7, __pyx_t_8, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 3160, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_6, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3160, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3145
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def max_rtt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperPing.max_rtt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3162
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def avg_rtt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_7avg_rtt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_7avg_rtt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_7avg_rtt___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_7avg_rtt___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3171
 *         :rtype: timedelta
 *         """
 *         self._stats()             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             return None
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_stats, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3171, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3172
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_avg_rtt_get(self._c_s)
*/
  __pyx_t_4 = (__pyx_v_self->_c_s == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3173
 *         self._stats()
 *         if self._c_s == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c = cscamper_ping.scamper_ping_stats_avg_rtt_get(self._c_s)
 *         if c == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3172
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_avg_rtt_get(self._c_s)
*/
  }

  /* "scamper.pyx":3174
 *         if self._c_s == NULL:
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_avg_rtt_get(self._c_s)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_ping_stats_avg_rtt_get(__pyx_v_self->_c_s);

  /* "scamper.pyx":3175
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_avg_rtt_get(self._c_s)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
*/
  __pyx_t_4 = (__pyx_v_c == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3176
 *         c = cscamper_ping.scamper_ping_stats_avg_rtt_get(self._c_s)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3175
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_avg_rtt_get(self._c_s)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
*/
  }

  /* "scamper.pyx":3177
 *         if c == NULL:
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_3 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_3 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_5, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 3177, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_7, __pyx_t_8, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 3177, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_6, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3162
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def avg_rtt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperPing.avg_rtt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3179
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stddev_rtt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_10stddev_rtt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_10stddev_rtt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_10stddev_rtt___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_10stddev_rtt___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3188
 *         :rtype: timedelta
 *         """
 *         self._stats()             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             return None
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_stats, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3188, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3189
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_stddev_rtt_get(self._c_s)
*/
  __pyx_t_4 = (__pyx_v_self->_c_s == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3190
 *         self._stats()
 *         if self._c_s == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         c = cscamper_ping.scamper_ping_stats_stddev_rtt_get(self._c_s)
 *         if c == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3189
 *         """
 *         self._stats()
 *         if self._c_s == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_stddev_rtt_get(self._c_s)
*/
  }

  /* "scamper.pyx":3191
 *         if self._c_s == NULL:
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_stddev_rtt_get(self._c_s)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_ping_stats_stddev_rtt_get(__pyx_v_self->_c_s);

  /* "scamper.pyx":3192
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_stddev_rtt_get(self._c_s)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
*/
  __pyx_t_4 = (__pyx_v_c == NULL);
  if (__pyx_t_4) {

    /* "scamper.pyx":3193
 *         c = cscamper_ping.scamper_ping_stats_stddev_rtt_get(self._c_s)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3192
 *             return None
 *         c = cscamper_ping.scamper_ping_stats_stddev_rtt_get(self._c_s)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
*/
  }

  /* "scamper.pyx":3194
 *         if c == NULL:
 *             return None
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_3 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_3 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_5, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 3194, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_7, __pyx_t_8, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 3194, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_6, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3194, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3179
 *         return datetime.timedelta(seconds=c.tv_sec, microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stddev_rtt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperPing.stddev_rtt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":2666
 *     cdef cscamper_ping.scamper_ping_t *_c
 *     cdef cscamper_ping.scamper_ping_stats_t *_c_s
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperPing_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_5_inst___get__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_5_inst___get__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperPing_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperPing_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperPing_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 2666, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperPing._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperPing_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_11ScamperPing_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperPing_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_31__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_31__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_31__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperPing_31__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_30__reduce_cython__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_30__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_self__c_s_cannot_be_conv, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperPing.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperPing_33__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperPing_33__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_33__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperPing_33__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperPing.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperPing_32__setstate_cython__(((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperPing_32__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperPing *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_self__c_s_cannot_be_conv, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperPing.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3201
 * 
 * class _ScamperTracelbNodeIterator:
 *     def __init__(self, trace):             # <<<<<<<<<<<<<<
 *         self._trace = trace
 *         self._index = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbNodeIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_27_ScamperTracelbNodeIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_27_ScamperTracelbNodeIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbNodeIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_trace = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_trace,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3201, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 3201, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 3201, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3201, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3201, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_trace = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 3201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperTracelbNodeIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_27_ScamperTracelbNodeIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_trace);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_27_ScamperTracelbNodeIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_trace) {
  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("__init__", 0);

  /* "scamper.pyx":3202
 * class _ScamperTracelbNodeIterator:
 *     def __init__(self, trace):
 *         self._trace = trace             # <<<<<<<<<<<<<<
 *         self._index = 0
 *         self._nodec = trace.node_count
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_trace_2, __pyx_v_trace) < 0) __PYX_ERR(0, 3202, __pyx_L1_error)

  /* "scamper.pyx":3203
 *     def __init__(self, trace):
 *         self._trace = trace
 *         self._index = 0             # <<<<<<<<<<<<<<
 *         self._nodec = trace.node_count
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 3203, __pyx_L1_error)

  /* "scamper.pyx":3204
 *         self._trace = trace
 *         self._index = 0
 *         self._nodec = trace.node_count             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_trace, __pyx_mstate_global->__pyx_n_u_node_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3204, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_nodec, __pyx_t_1) < 0) __PYX_ERR(0, 3204, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3201
 * 
 * class _ScamperTracelbNodeIterator:
 *     def __init__(self, trace):             # <<<<<<<<<<<<<<
 *         self._trace = trace
 *         self._index = 0
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper._ScamperTracelbNodeIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3206
 *         self._nodec = trace.node_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbNodeIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_27_ScamperTracelbNodeIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_27_ScamperTracelbNodeIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbNodeIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3206, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3206, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 3206, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 3206, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3206, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3206, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperTracelbNodeIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_27_ScamperTracelbNodeIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_27_ScamperTracelbNodeIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":3207
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":3206
 *         self._nodec = trace.node_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3209
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._index < self._nodec:
 *             node = self._trace.node(self._index)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbNodeIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_27_ScamperTracelbNodeIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_27_ScamperTracelbNodeIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbNodeIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3209, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3209, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 3209, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 3209, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3209, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3209, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperTracelbNodeIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_27_ScamperTracelbNodeIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_27_ScamperTracelbNodeIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_node = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":3210
 * 
 *     def __next__(self):
 *         if self._index < self._nodec:             # <<<<<<<<<<<<<<
 *             node = self._trace.node(self._index)
 *             self._index += 1
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_nodec); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3210, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 3210, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":3211
 *     def __next__(self):
 *         if self._index < self._nodec:
 *             node = self._trace.node(self._index)             # <<<<<<<<<<<<<<
 *             self._index += 1
 *             return node
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_trace_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_node, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3211, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_node = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":3212
 *         if self._index < self._nodec:
 *             node = self._trace.node(self._index)
 *             self._index += 1             # <<<<<<<<<<<<<<
 *             return node
 *         raise StopIteration
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3212, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_1) < 0) __PYX_ERR(0, 3212, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":3213
 *             node = self._trace.node(self._index)
 *             self._index += 1
 *             return node             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_node);
    __pyx_r = __pyx_v_node;
    goto __pyx_L0;

    /* "scamper.pyx":3210
 * 
 *     def __next__(self):
 *         if self._index < self._nodec:             # <<<<<<<<<<<<<<
 *             node = self._trace.node(self._index)
 *             self._index += 1
*/
  }

  /* "scamper.pyx":3214
 *             self._index += 1
 *             return node
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * class _ScamperTracelbLinkIterator:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 3214, __pyx_L1_error)

  /* "scamper.pyx":3209
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._index < self._nodec:
 *             node = self._trace.node(self._index)
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperTracelbNodeIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_node);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3217
 * 
 * class _ScamperTracelbLinkIterator:
 *     def __init__(self, x):             # <<<<<<<<<<<<<<
 *         self._x = x
 *         self._index = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbLinkIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_27_ScamperTracelbLinkIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_27_ScamperTracelbLinkIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbLinkIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_x = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_x,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3217, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3217, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3217, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 3217, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 3217, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3217, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 3217, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_x = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 3217, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperTracelbLinkIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_27_ScamperTracelbLinkIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_x);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_27_ScamperTracelbLinkIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_x) {
  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("__init__", 0);

  /* "scamper.pyx":3218
 * class _ScamperTracelbLinkIterator:
 *     def __init__(self, x):
 *         self._x = x             # <<<<<<<<<<<<<<
 *         self._index = 0
 *         self._linkc = x.link_count
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_x_2, __pyx_v_x) < 0) __PYX_ERR(0, 3218, __pyx_L1_error)

  /* "scamper.pyx":3219
 *     def __init__(self, x):
 *         self._x = x
 *         self._index = 0             # <<<<<<<<<<<<<<
 *         self._linkc = x.link_count
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 3219, __pyx_L1_error)

  /* "scamper.pyx":3220
 *         self._x = x
 *         self._index = 0
 *         self._linkc = x.link_count             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_x, __pyx_mstate_global->__pyx_n_u_link_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3220, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_linkc, __pyx_t_1) < 0) __PYX_ERR(0, 3220, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3217
 * 
 * class _ScamperTracelbLinkIterator:
 *     def __init__(self, x):             # <<<<<<<<<<<<<<
 *         self._x = x
 *         self._index = 0
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper._ScamperTracelbLinkIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3222
 *         self._linkc = x.link_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbLinkIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_27_ScamperTracelbLinkIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_27_ScamperTracelbLinkIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbLinkIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3222, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3222, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 3222, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 3222, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3222, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3222, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperTracelbLinkIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_27_ScamperTracelbLinkIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_27_ScamperTracelbLinkIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":3223
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":3222
 *         self._linkc = x.link_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3225
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._index < self._linkc:
 *             link = self._x.link(self._index)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbLinkIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_27_ScamperTracelbLinkIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_27_ScamperTracelbLinkIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_27_ScamperTracelbLinkIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3225, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3225, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 3225, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 3225, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3225, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3225, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperTracelbLinkIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_27_ScamperTracelbLinkIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_27_ScamperTracelbLinkIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_link = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":3226
 * 
 *     def __next__(self):
 *         if self._index < self._linkc:             # <<<<<<<<<<<<<<
 *             link = self._x.link(self._index)
 *             self._index += 1
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_linkc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 3226, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":3227
 *     def __next__(self):
 *         if self._index < self._linkc:
 *             link = self._x.link(self._index)             # <<<<<<<<<<<<<<
 *             self._index += 1
 *             return link
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_x_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3227, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_link, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_link = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":3228
 *         if self._index < self._linkc:
 *             link = self._x.link(self._index)
 *             self._index += 1             # <<<<<<<<<<<<<<
 *             return link
 *         raise StopIteration
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3228, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_1) < 0) __PYX_ERR(0, 3228, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":3229
 *             link = self._x.link(self._index)
 *             self._index += 1
 *             return link             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_link);
    __pyx_r = __pyx_v_link;
    goto __pyx_L0;

    /* "scamper.pyx":3226
 * 
 *     def __next__(self):
 *         if self._index < self._linkc:             # <<<<<<<<<<<<<<
 *             link = self._x.link(self._index)
 *             self._index += 1
*/
  }

  /* "scamper.pyx":3230
 *             self._index += 1
 *             return link
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTracelbReply:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 3230, __pyx_L1_error)

  /* "scamper.pyx":3225
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._index < self._linkc:
 *             link = self._x.link(self._index)
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperTracelbLinkIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_link);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3239
 *     cdef cscamper_tracelb.scamper_tracelb_reply_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_19ScamperTracelbReply_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_19ScamperTracelbReply_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply___init__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_19ScamperTracelbReply___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":3240
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3240, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 3240, __pyx_L1_error)

  /* "scamper.pyx":3239
 *     cdef cscamper_tracelb.scamper_tracelb_reply_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3242
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_reply_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_19ScamperTracelbReply_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_19ScamperTracelbReply_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_19ScamperTracelbReply_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_19ScamperTracelbReply_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":3243
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_reply_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3244
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_reply_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_tracelb_reply_free(__pyx_v_self->_c);

    /* "scamper.pyx":3243
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_reply_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":3242
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_reply_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":3246
 *             cscamper_tracelb.scamper_tracelb_reply_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelbReply from_ptr(cscamper_tracelb.scamper_tracelb_reply_t *ptr):
 *         cdef ScamperTracelbReply r
*/

static struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_f_7scamper_19ScamperTracelbReply_from_ptr(scamper_tracelb_reply_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_r = 0;
  struct __pyx_obj_7scamper_ScamperTracelbReply *__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("from_ptr", 0);

  /* "scamper.pyx":3249
 *     cdef ScamperTracelbReply from_ptr(cscamper_tracelb.scamper_tracelb_reply_t *ptr):
 *         cdef ScamperTracelbReply r
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         r = ScamperTracelbReply.__new__(ScamperTracelbReply)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3250
 *         cdef ScamperTracelbReply r
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         r = ScamperTracelbReply.__new__(ScamperTracelbReply)
 *         r._c = cscamper_tracelb.scamper_tracelb_reply_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperTracelbReply *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3249
 *     cdef ScamperTracelbReply from_ptr(cscamper_tracelb.scamper_tracelb_reply_t *ptr):
 *         cdef ScamperTracelbReply r
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         r = ScamperTracelbReply.__new__(ScamperTracelbReply)
*/
  }

  /* "scamper.pyx":3251
 *         if ptr == NULL:
 *             return None
 *         r = ScamperTracelbReply.__new__(ScamperTracelbReply)             # <<<<<<<<<<<<<<
 *         r._c = cscamper_tracelb.scamper_tracelb_reply_use(ptr)
 *         return r
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTracelbReply(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbReply), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3251, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_r = ((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":3252
 *             return None
 *         r = ScamperTracelbReply.__new__(ScamperTracelbReply)
 *         r._c = cscamper_tracelb.scamper_tracelb_reply_use(ptr)             # <<<<<<<<<<<<<<
 *         return r
 * 
*/
  __pyx_v_r->_c = scamper_tracelb_reply_use(__pyx_v_ptr);

  /* "scamper.pyx":3253
 *         r = ScamperTracelbReply.__new__(ScamperTracelbReply)
 *         r._c = cscamper_tracelb.scamper_tracelb_reply_use(ptr)
 *         return r             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_r);
  __pyx_r = __pyx_v_r;
  goto __pyx_L0;

  /* "scamper.pyx":3246
 *             cscamper_tracelb.scamper_tracelb_reply_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelbReply from_ptr(cscamper_tracelb.scamper_tracelb_reply_t *ptr):
 *         cdef ScamperTracelbReply r
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3255
 *         return r
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_3src___get__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_3src___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":3263
 *         :rtype: ScamperAddr
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_reply_from_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_tracelb_reply_from_get(__pyx_v_self->_c);

  /* "scamper.pyx":3264
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_reply_from_get(self._c)
 *         return ScamperAddr.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3255
 *         return r
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3266
 *         return ScamperAddr.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_2rx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_2rx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_2rx___get__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_2rx___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3274
 *         :rtype: datetime
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_reply_rx_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_tracelb_reply_rx_get(__pyx_v_self->_c);

  /* "scamper.pyx":3275
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_reply_rx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3276
 *         c = cscamper_tracelb.scamper_tracelb_reply_rx_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3275
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_reply_rx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":3277
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3277, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":3278
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":3279
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 3278, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3278, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3266
 *         return ScamperAddr.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.rx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3281
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ipid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_4ipid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_4ipid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_4ipid___get__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_4ipid___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":3289
 *         :rtype: int
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_reply_from_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL or not cscamper_addr.scamper_addr_isipv4(c):
 *             return None
*/
  __pyx_v_c = scamper_tracelb_reply_from_get(__pyx_v_self->_c);

  /* "scamper.pyx":3290
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_reply_from_get(self._c)
 *         if c == NULL or not cscamper_addr.scamper_addr_isipv4(c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_ipid_get(self._c)
*/
  __pyx_t_2 = (__pyx_v_c == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (!scamper_addr_isipv4(__pyx_v_c));
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":3291
 *         c = cscamper_tracelb.scamper_tracelb_reply_from_get(self._c)
 *         if c == NULL or not cscamper_addr.scamper_addr_isipv4(c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_tracelb.scamper_tracelb_reply_ipid_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3290
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_reply_from_get(self._c)
 *         if c == NULL or not cscamper_addr.scamper_addr_isipv4(c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_ipid_get(self._c)
*/
  }

  /* "scamper.pyx":3292
 *         if c == NULL or not cscamper_addr.scamper_addr_isipv4(c):
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_ipid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_reply_ipid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3281
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ipid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.ipid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3294
 *         return cscamper_tracelb.scamper_tracelb_reply_ipid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_3ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_3ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_3ttl___get__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_3ttl___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":3303
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_reply_ttl(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_ttl_get(self._c)
*/
  __pyx_t_1 = (!scamper_tracelb_reply_is_reply_ttl(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":3304
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_reply_ttl(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_tracelb.scamper_tracelb_reply_ttl_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3303
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_reply_ttl(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_ttl_get(self._c)
*/
  }

  /* "scamper.pyx":3305
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_reply_ttl(self._c):
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_ttl_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_reply_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3305, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3294
 *         return cscamper_tracelb.scamper_tracelb_reply_ipid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3307
 *         return cscamper_tracelb.scamper_tracelb_reply_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_type(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_9icmp_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_9icmp_type_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_9icmp_type___get__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_9icmp_type___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":3316
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_type_get(self._c)
*/
  __pyx_t_1 = (!scamper_tracelb_reply_is_icmp(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":3317
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_type_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3316
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_type_get(self._c)
*/
  }

  /* "scamper.pyx":3318
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp(self._c):
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_type_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_reply_icmp_type_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3307
 *         return cscamper_tracelb.scamper_tracelb_reply_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_type(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.icmp_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3320
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_type_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_code(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_9icmp_code_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_9icmp_code_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_9icmp_code___get__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_9icmp_code___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":3329
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_code_get(self._c)
*/
  __pyx_t_1 = (!scamper_tracelb_reply_is_icmp(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":3330
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_code_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3329
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_code_get(self._c)
*/
  }

  /* "scamper.pyx":3331
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp(self._c):
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_code_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_reply_icmp_code_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3320
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_type_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_code(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.icmp_code.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3333
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_code_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_10icmp_q_ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_10icmp_q_ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_10icmp_q_ttl___get__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_10icmp_q_ttl___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":3342
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp_q(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_ttl_get(self._c)
*/
  __pyx_t_1 = (!scamper_tracelb_reply_is_icmp_q(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":3343
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp_q(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_ttl_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3342
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp_q(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_ttl_get(self._c)
*/
  }

  /* "scamper.pyx":3344
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp_q(self._c):
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_ttl_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_reply_icmp_q_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3344, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3333
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_code_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.icmp_q_ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3346
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_tos(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_10icmp_q_tos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_10icmp_q_tos_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_10icmp_q_tos___get__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_10icmp_q_tos___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":3355
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp_q(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_tos_get(self._c)
*/
  __pyx_t_1 = (!scamper_tracelb_reply_is_icmp_q(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":3356
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp_q(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_tos_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3355
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp_q(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_tos_get(self._c)
*/
  }

  /* "scamper.pyx":3357
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_icmp_q(self._c):
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_tos_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_reply_icmp_q_tos_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3357, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3346
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_tos(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.icmp_q_tos.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3359
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_tos_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tcp_flags(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_9tcp_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_9tcp_flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_9tcp_flags___get__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_9tcp_flags___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":3367
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_tcp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_tcp_flags_get(self._c)
*/
  __pyx_t_1 = (!scamper_tracelb_reply_is_tcp(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":3368
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_tcp(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_tracelb.scamper_tracelb_reply_tcp_flags_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3367
 *         :rtype: int
 *         """
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_tcp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_tcp_flags_get(self._c)
*/
  }

  /* "scamper.pyx":3369
 *         if not cscamper_tracelb.scamper_tracelb_reply_is_tcp(self._c):
 *             return None
 *         return cscamper_tracelb.scamper_tracelb_reply_tcp_flags_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_reply_tcp_flags_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3369, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3359
 *         return cscamper_tracelb.scamper_tracelb_reply_icmp_q_tos_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tcp_flags(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.tcp_flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3371
 *         return cscamper_tracelb.scamper_tracelb_reply_tcp_flags_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_exts(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_9icmp_exts_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_9icmp_exts_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_9icmp_exts___get__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_9icmp_exts___get__(struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  scamper_icmpexts_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":3379
 *         :rtype: ScamperIcmpExts
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_reply_icmp_exts_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperIcmpExts.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_tracelb_reply_icmp_exts_get(__pyx_v_self->_c);

  /* "scamper.pyx":3380
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_reply_icmp_exts_get(self._c)
 *         return ScamperIcmpExts.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTracelbProbe:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_15ScamperIcmpExts_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3380, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3371
 *         return cscamper_tracelb.scamper_tracelb_reply_tcp_flags_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_exts(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.icmp_exts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_19ScamperTracelbReply_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperTracelbReply_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_4__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_19ScamperTracelbReply_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperTracelbReply_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_19ScamperTracelbReply_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbReply_6__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTracelbReply *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbReply_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbReply *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelbReply.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3389
 *     cdef cscamper_tracelb.scamper_tracelb_probe_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_19ScamperTracelbProbe_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_19ScamperTracelbProbe_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbProbe___init__(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_19ScamperTracelbProbe___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":3390
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 3390, __pyx_L1_error)

  /* "scamper.pyx":3389
 *     cdef cscamper_tracelb.scamper_tracelb_probe_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3392
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_probe_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_19ScamperTracelbProbe_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_19ScamperTracelbProbe_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_19ScamperTracelbProbe_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_19ScamperTracelbProbe_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":3393
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_probe_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3394
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_probe_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    scamper_tracelb_probe_free(__pyx_v_self->_c);

    /* "scamper.pyx":3393
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_probe_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":3392
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_probe_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":3396
 *             cscamper_tracelb.scamper_tracelb_probe_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         c = cscamper_tracelb.scamper_tracelb_probe_tx_get(self._c)
 *         out = "probe flowid: %d, ttl: %d, attempt: %d, tx: %d.%06d" % (
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbProbe_4__str__(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_4__str__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_out = 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;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7[10];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":3397
 * 
 *     def __str__(self):
 *         c = cscamper_tracelb.scamper_tracelb_probe_tx_get(self._c)             # <<<<<<<<<<<<<<
 *         out = "probe flowid: %d, ttl: %d, attempt: %d, tx: %d.%06d" % (
 *             cscamper_tracelb.scamper_tracelb_probe_flowid_get(self._c),
*/
  __pyx_v_c = scamper_tracelb_probe_tx_get(__pyx_v_self->_c);

  /* "scamper.pyx":3399
 *         c = cscamper_tracelb.scamper_tracelb_probe_tx_get(self._c)
 *         out = "probe flowid: %d, ttl: %d, attempt: %d, tx: %d.%06d" % (
 *             cscamper_tracelb.scamper_tracelb_probe_flowid_get(self._c),             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_probe_ttl_get(self._c),
 *             cscamper_tracelb.scamper_tracelb_probe_attempt_get(self._c) + 1,
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_probe_flowid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_1), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3399, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3400
 *         out = "probe flowid: %d, ttl: %d, attempt: %d, tx: %d.%06d" % (
 *             cscamper_tracelb.scamper_tracelb_probe_flowid_get(self._c),
 *             cscamper_tracelb.scamper_tracelb_probe_ttl_get(self._c),             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_probe_attempt_get(self._c) + 1,
 *             c.tv_sec, c.tv_usec)
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_probe_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_1), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":3401
 *             cscamper_tracelb.scamper_tracelb_probe_flowid_get(self._c),
 *             cscamper_tracelb.scamper_tracelb_probe_ttl_get(self._c),
 *             cscamper_tracelb.scamper_tracelb_probe_attempt_get(self._c) + 1,             # <<<<<<<<<<<<<<
 *             c.tv_sec, c.tv_usec)
 *         return out
*/
  __pyx_t_1 = __Pyx_PyUnicode_From_long((scamper_tracelb_probe_attempt_get(__pyx_v_self->_c) + 1), 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3401, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);

  /* "scamper.pyx":3402
 *             cscamper_tracelb.scamper_tracelb_probe_ttl_get(self._c),
 *             cscamper_tracelb.scamper_tracelb_probe_attempt_get(self._c) + 1,
 *             c.tv_sec, c.tv_usec)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_4), __pyx_mstate_global->__pyx_n_u_d); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyObject_FormatAndDecref(__Pyx_PyNumber_Long(__pyx_t_4), __pyx_mstate_global->__pyx_kp_u_06d); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3402, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_7[0] = __pyx_mstate_global->__pyx_kp_u_probe_flowid;
  __pyx_t_7[1] = __pyx_t_2;
  __pyx_t_7[2] = __pyx_mstate_global->__pyx_kp_u_ttl_2;
  __pyx_t_7[3] = __pyx_t_3;
  __pyx_t_7[4] = __pyx_mstate_global->__pyx_kp_u_attempt;
  __pyx_t_7[5] = __pyx_t_1;
  __pyx_t_7[6] = __pyx_mstate_global->__pyx_kp_u_tx;
  __pyx_t_7[7] = __pyx_t_5;
  __pyx_t_7[8] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_7[9] = __pyx_t_6;

  /* "scamper.pyx":3398
 *     def __str__(self):
 *         c = cscamper_tracelb.scamper_tracelb_probe_tx_get(self._c)
 *         out = "probe flowid: %d, ttl: %d, attempt: %d, tx: %d.%06d" % (             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_probe_flowid_get(self._c),
 *             cscamper_tracelb.scamper_tracelb_probe_ttl_get(self._c),
*/
  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_7, 10, 14 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 7 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 11 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 6 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6));
  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3398, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_v_out = ((PyObject*)__pyx_t_4);
  __pyx_t_4 = 0;

  /* "scamper.pyx":3403
 *             cscamper_tracelb.scamper_tracelb_probe_attempt_get(self._c) + 1,
 *             c.tv_sec, c.tv_usec)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":3396
 *             cscamper_tracelb.scamper_tracelb_probe_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         c = cscamper_tracelb.scamper_tracelb_probe_tx_get(self._c)
 *         out = "probe flowid: %d, ttl: %d, attempt: %d, tx: %d.%06d" % (
*/

  /* 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_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3405
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelbProbe from_ptr(cscamper_tracelb.scamper_tracelb_probe_t *ptr):
 *         cdef ScamperTracelbProbe p
*/

static struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_f_7scamper_19ScamperTracelbProbe_from_ptr(scamper_tracelb_probe_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_p = 0;
  struct __pyx_obj_7scamper_ScamperTracelbProbe *__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("from_ptr", 0);

  /* "scamper.pyx":3408
 *     cdef ScamperTracelbProbe from_ptr(cscamper_tracelb.scamper_tracelb_probe_t *ptr):
 *         cdef ScamperTracelbProbe p
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         p = ScamperTracelbProbe.__new__(ScamperTracelbProbe)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3409
 *         cdef ScamperTracelbProbe p
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         p = ScamperTracelbProbe.__new__(ScamperTracelbProbe)
 *         p._c = cscamper_tracelb.scamper_tracelb_probe_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperTracelbProbe *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3408
 *     cdef ScamperTracelbProbe from_ptr(cscamper_tracelb.scamper_tracelb_probe_t *ptr):
 *         cdef ScamperTracelbProbe p
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         p = ScamperTracelbProbe.__new__(ScamperTracelbProbe)
*/
  }

  /* "scamper.pyx":3410
 *         if ptr == NULL:
 *             return None
 *         p = ScamperTracelbProbe.__new__(ScamperTracelbProbe)             # <<<<<<<<<<<<<<
 *         p._c = cscamper_tracelb.scamper_tracelb_probe_use(ptr)
 *         return p
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTracelbProbe(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbProbe), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3410, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_p = ((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":3411
 *             return None
 *         p = ScamperTracelbProbe.__new__(ScamperTracelbProbe)
 *         p._c = cscamper_tracelb.scamper_tracelb_probe_use(ptr)             # <<<<<<<<<<<<<<
 *         return p
 * 
*/
  __pyx_v_p->_c = scamper_tracelb_probe_use(__pyx_v_ptr);

  /* "scamper.pyx":3412
 *         p = ScamperTracelbProbe.__new__(ScamperTracelbProbe)
 *         p._c = cscamper_tracelb.scamper_tracelb_probe_use(ptr)
 *         return p             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_p);
  __pyx_r = __pyx_v_p;
  goto __pyx_L0;

  /* "scamper.pyx":3405
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelbProbe from_ptr(cscamper_tracelb.scamper_tracelb_probe_t *ptr):
 *         cdef ScamperTracelbProbe p
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_p);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3414
 *         return p
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_2tx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_2tx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbProbe_2tx___get__(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_2tx___get__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3422
 *         :rtype: datetime
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_probe_tx_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_tracelb_probe_tx_get(__pyx_v_self->_c);

  /* "scamper.pyx":3423
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_probe_tx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3424
 *         c = cscamper_tracelb.scamper_tracelb_probe_tx_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3423
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_probe_tx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":3425
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3425, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3425, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":3426
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":3427
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3427, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3426, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 3426, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3426, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3414
 *         return p
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.tx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3429
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flowid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_6flowid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_6flowid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbProbe_6flowid___get__(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_6flowid___get__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__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("__get__", 0);

  /* "scamper.pyx":3437
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_probe_flowid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_probe_flowid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3429
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flowid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.flowid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3439
 *         return cscamper_tracelb.scamper_tracelb_probe_flowid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_3ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_3ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbProbe_3ttl___get__(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_3ttl___get__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__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("__get__", 0);

  /* "scamper.pyx":3447
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_probe_ttl_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_probe_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3447, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3439
 *         return cscamper_tracelb.scamper_tracelb_probe_flowid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3449
 *         return cscamper_tracelb.scamper_tracelb_probe_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_7attempt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_7attempt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbProbe_7attempt___get__(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_7attempt___get__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__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("__get__", 0);

  /* "scamper.pyx":3458
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_probe_attempt_get(self._c) + 1             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_long((scamper_tracelb_probe_attempt_get(__pyx_v_self->_c) + 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3458, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3449
 *         return cscamper_tracelb.scamper_tracelb_probe_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.attempt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3460
 *         return cscamper_tracelb.scamper_tracelb_probe_attempt_get(self._c) + 1
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_11reply_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_11reply_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbProbe_11reply_count___get__(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_11reply_count___get__(struct __pyx_obj_7scamper_ScamperTracelbProbe *__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("__get__", 0);

  /* "scamper.pyx":3468
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_probe_rxc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def reply(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_probe_rxc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3460
 *         return cscamper_tracelb.scamper_tracelb_probe_attempt_get(self._c) + 1
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.reply_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3470
 *         return cscamper_tracelb.scamper_tracelb_probe_rxc_get(self._c)
 * 
 *     def reply(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a specific reply recorded for this probe
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_7reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_19ScamperTracelbProbe_6reply, "\n        get method that returns a specific reply recorded for this probe\n\n        :returns: the reply\n        :rtype: ScamperTracelbReply\n        ");
static PyMethodDef __pyx_mdef_7scamper_19ScamperTracelbProbe_7reply = {"reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperTracelbProbe_7reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperTracelbProbe_6reply};
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_7reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reply (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3470, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3470, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "reply", 0) < 0) __PYX_ERR(0, 3470, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("reply", 1, 1, 1, i); __PYX_ERR(0, 3470, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3470, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("reply", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3470, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.reply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbProbe_6reply(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_6reply(struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_tracelb_reply_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reply", 0);

  /* "scamper.pyx":3477
 *         :rtype: ScamperTracelbReply
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_probe_rx_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperTracelbReply.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3477, __pyx_L1_error)
  __pyx_v_c = scamper_tracelb_probe_rx_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":3478
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_probe_rx_get(self._c, i)
 *         return ScamperTracelbReply.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTracelbProbeset:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_19ScamperTracelbReply_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3470
 *         return cscamper_tracelb.scamper_tracelb_probe_rxc_get(self._c)
 * 
 *     def reply(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a specific reply recorded for this probe
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.reply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_19ScamperTracelbProbe_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperTracelbProbe_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbProbe_8__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_19ScamperTracelbProbe_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperTracelbProbe_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_19ScamperTracelbProbe_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_19ScamperTracelbProbe_10__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTracelbProbe *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperTracelbProbe_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbe *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelbProbe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3488
 *     cdef uint16_t _i, _probec
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_22ScamperTracelbProbeset_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_22ScamperTracelbProbeset_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_22ScamperTracelbProbeset___init__(((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_22ScamperTracelbProbeset___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":3489
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3489, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 3489, __pyx_L1_error)

  /* "scamper.pyx":3488
 *     cdef uint16_t _i, _probec
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbeset.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3491
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_probeset_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_22ScamperTracelbProbeset_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_22ScamperTracelbProbeset_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_22ScamperTracelbProbeset_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_22ScamperTracelbProbeset_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":3492
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_probeset_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3493
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_probeset_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_tracelb_probeset_free(__pyx_v_self->_c);

    /* "scamper.pyx":3492
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_probeset_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":3491
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_probeset_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":3495
 *             cscamper_tracelb.scamper_tracelb_probeset_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelbProbeset from_ptr(cscamper_tracelb.scamper_tracelb_probeset_t *ptr):
 *         cdef ScamperTracelbProbeset ps
*/

static struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_f_7scamper_22ScamperTracelbProbeset_from_ptr(scamper_tracelb_probeset_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_ps = 0;
  struct __pyx_obj_7scamper_ScamperTracelbProbeset *__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("from_ptr", 0);

  /* "scamper.pyx":3498
 *     cdef ScamperTracelbProbeset from_ptr(cscamper_tracelb.scamper_tracelb_probeset_t *ptr):
 *         cdef ScamperTracelbProbeset ps
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ps = ScamperTracelbProbeset.__new__(ScamperTracelbProbeset)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3499
 *         cdef ScamperTracelbProbeset ps
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         ps = ScamperTracelbProbeset.__new__(ScamperTracelbProbeset)
 *         ps._c = cscamper_tracelb.scamper_tracelb_probeset_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3498
 *     cdef ScamperTracelbProbeset from_ptr(cscamper_tracelb.scamper_tracelb_probeset_t *ptr):
 *         cdef ScamperTracelbProbeset ps
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ps = ScamperTracelbProbeset.__new__(ScamperTracelbProbeset)
*/
  }

  /* "scamper.pyx":3500
 *         if ptr == NULL:
 *             return None
 *         ps = ScamperTracelbProbeset.__new__(ScamperTracelbProbeset)             # <<<<<<<<<<<<<<
 *         ps._c = cscamper_tracelb.scamper_tracelb_probeset_use(ptr)
 *         ps._probec = cscamper_tracelb.scamper_tracelb_probeset_probec_get(ptr)
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTracelbProbeset(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbProbeset), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3500, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_ps = ((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":3501
 *             return None
 *         ps = ScamperTracelbProbeset.__new__(ScamperTracelbProbeset)
 *         ps._c = cscamper_tracelb.scamper_tracelb_probeset_use(ptr)             # <<<<<<<<<<<<<<
 *         ps._probec = cscamper_tracelb.scamper_tracelb_probeset_probec_get(ptr)
 *         return ps
*/
  __pyx_v_ps->_c = scamper_tracelb_probeset_use(__pyx_v_ptr);

  /* "scamper.pyx":3502
 *         ps = ScamperTracelbProbeset.__new__(ScamperTracelbProbeset)
 *         ps._c = cscamper_tracelb.scamper_tracelb_probeset_use(ptr)
 *         ps._probec = cscamper_tracelb.scamper_tracelb_probeset_probec_get(ptr)             # <<<<<<<<<<<<<<
 *         return ps
 * 
*/
  __pyx_v_ps->_probec = scamper_tracelb_probeset_probec_get(__pyx_v_ptr);

  /* "scamper.pyx":3503
 *         ps._c = cscamper_tracelb.scamper_tracelb_probeset_use(ptr)
 *         ps._probec = cscamper_tracelb.scamper_tracelb_probeset_probec_get(ptr)
 *         return ps             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_ps);
  __pyx_r = __pyx_v_ps;
  goto __pyx_L0;

  /* "scamper.pyx":3495
 *             cscamper_tracelb.scamper_tracelb_probeset_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelbProbeset from_ptr(cscamper_tracelb.scamper_tracelb_probeset_t *ptr):
 *         cdef ScamperTracelbProbeset ps
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbeset.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ps);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3505
 *         return ps
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self._probec
 * 
*/

/* Python wrapper */
static Py_ssize_t __pyx_pw_7scamper_22ScamperTracelbProbeset_5__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_7scamper_22ScamperTracelbProbeset_5__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperTracelbProbeset_4__len__(((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_7scamper_22ScamperTracelbProbeset_4__len__(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self) {
  Py_ssize_t __pyx_r;

  /* "scamper.pyx":3506
 * 
 *     def __len__(self):
 *         return self._probec             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_r = __pyx_v_self->_probec;
  goto __pyx_L0;

  /* "scamper.pyx":3505
 *         return ps
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self._probec
 * 
*/

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "scamper.pyx":3508
 *         return self._probec
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_7__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_7__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperTracelbProbeset_6__iter__(((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_6__iter__(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":3509
 * 
 *     def __iter__(self):
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_v_self->_i = 0;

  /* "scamper.pyx":3510
 *     def __iter__(self):
 *         self._i = 0
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":3508
 *         return self._probec
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3512
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i >= self._probec:
 *             raise StopIteration
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_9__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_9__next__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperTracelbProbeset_8__next__(((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_8__next__(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self) {
  scamper_tracelb_probe_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_error_without_exception = 0; /* StopIteration */
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":3513
 * 
 *     def __next__(self):
 *         if self._i >= self._probec:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         c = cscamper_tracelb.scamper_tracelb_probeset_probe_get(self._c, self._i)
*/
  __pyx_t_1 = (__pyx_v_self->_i >= __pyx_v_self->_probec);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":3514
 *     def __next__(self):
 *         if self._i >= self._probec:
 *             raise StopIteration             # <<<<<<<<<<<<<<
 *         c = cscamper_tracelb.scamper_tracelb_probeset_probe_get(self._c, self._i)
 *         self._i = self._i + 1
*/
    __pyx_error_without_exception = 1;
    goto __pyx_L1_error;;

    /* "scamper.pyx":3513
 * 
 *     def __next__(self):
 *         if self._i >= self._probec:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         c = cscamper_tracelb.scamper_tracelb_probeset_probe_get(self._c, self._i)
*/
  }

  /* "scamper.pyx":3515
 *         if self._i >= self._probec:
 *             raise StopIteration
 *         c = cscamper_tracelb.scamper_tracelb_probeset_probe_get(self._c, self._i)             # <<<<<<<<<<<<<<
 *         self._i = self._i + 1
 *         return ScamperTracelbProbe.from_ptr(c)
*/
  __pyx_v_c = scamper_tracelb_probeset_probe_get(__pyx_v_self->_c, __pyx_v_self->_i);

  /* "scamper.pyx":3516
 *             raise StopIteration
 *         c = cscamper_tracelb.scamper_tracelb_probeset_probe_get(self._c, self._i)
 *         self._i = self._i + 1             # <<<<<<<<<<<<<<
 *         return ScamperTracelbProbe.from_ptr(c)
 * 
*/
  __pyx_v_self->_i = (__pyx_v_self->_i + 1);

  /* "scamper.pyx":3517
 *         c = cscamper_tracelb.scamper_tracelb_probeset_probe_get(self._c, self._i)
 *         self._i = self._i + 1
 *         return ScamperTracelbProbe.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_19ScamperTracelbProbe_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3512
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i >= self._probec:
 *             raise StopIteration
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  if (!__pyx_error_without_exception) {
    __Pyx_AddTraceback("scamper.ScamperTracelbProbeset.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3519
 *         return ScamperTracelbProbe.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_11probe_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_11probe_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperTracelbProbeset_11probe_count___get__(((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_11probe_count___get__(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__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("__get__", 0);

  /* "scamper.pyx":3527
 *         :rtype: int
 *         """
 *         return self._probec             # <<<<<<<<<<<<<<
 * 
 *     def probe(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(__pyx_v_self->_probec); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3527, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3519
 *         return ScamperTracelbProbe.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbeset.probe_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3529
 *         return self._probec
 * 
 *     def probe(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a specific probe in this probeset
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_11probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_22ScamperTracelbProbeset_10probe, "\n        get method that returns a specific probe in this probeset\n\n        :returns: the probe identified\n        :rtype: ScamperTracelbProbe\n        ");
static PyMethodDef __pyx_mdef_7scamper_22ScamperTracelbProbeset_11probe = {"probe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperTracelbProbeset_11probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_22ScamperTracelbProbeset_10probe};
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_11probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("probe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3529, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3529, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "probe", 0) < 0) __PYX_ERR(0, 3529, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("probe", 1, 1, 1, i); __PYX_ERR(0, 3529, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3529, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("probe", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3529, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelbProbeset.probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_22ScamperTracelbProbeset_10probe(((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_10probe(struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_tracelb_probe_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("probe", 0);

  /* "scamper.pyx":3536
 *         :rtype: ScamperTracelbProbe
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_probeset_probe_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperTracelbProbe.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3536, __pyx_L1_error)
  __pyx_v_c = scamper_tracelb_probeset_probe_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":3537
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_probeset_probe_get(self._c, i)
 *         return ScamperTracelbProbe.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTracelbNode:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_19ScamperTracelbProbe_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3529
 *         return self._probec
 * 
 *     def probe(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a specific probe in this probeset
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbProbeset.probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_22ScamperTracelbProbeset_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperTracelbProbeset_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_22ScamperTracelbProbeset_12__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelbProbeset.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_22ScamperTracelbProbeset_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperTracelbProbeset_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_22ScamperTracelbProbeset_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelbProbeset.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_22ScamperTracelbProbeset_14__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperTracelbProbeset_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbProbeset *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelbProbeset.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3546
 *     cdef cscamper_tracelb.scamper_tracelb_node_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_18ScamperTracelbNode_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_18ScamperTracelbNode_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbNode___init__(((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_18ScamperTracelbNode___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":3547
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3547, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 3547, __pyx_L1_error)

  /* "scamper.pyx":3546
 *     cdef cscamper_tracelb.scamper_tracelb_node_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3549
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_node_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_18ScamperTracelbNode_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_18ScamperTracelbNode_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_18ScamperTracelbNode_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_18ScamperTracelbNode_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":3550
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_node_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3551
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_node_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_tracelb_node_free(__pyx_v_self->_c);

    /* "scamper.pyx":3550
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_node_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":3549
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_node_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":3553
 *             cscamper_tracelb.scamper_tracelb_node_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelbNode from_ptr(cscamper_tracelb.scamper_tracelb_node_t *ptr):
 *         cdef ScamperTracelbNode n
*/

static struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_f_7scamper_18ScamperTracelbNode_from_ptr(scamper_tracelb_node_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_n = 0;
  struct __pyx_obj_7scamper_ScamperTracelbNode *__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("from_ptr", 0);

  /* "scamper.pyx":3556
 *     cdef ScamperTracelbNode from_ptr(cscamper_tracelb.scamper_tracelb_node_t *ptr):
 *         cdef ScamperTracelbNode n
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         n = ScamperTracelbNode.__new__(ScamperTracelbNode)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3557
 *         cdef ScamperTracelbNode n
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         n = ScamperTracelbNode.__new__(ScamperTracelbNode)
 *         n._c = cscamper_tracelb.scamper_tracelb_node_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperTracelbNode *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3556
 *     cdef ScamperTracelbNode from_ptr(cscamper_tracelb.scamper_tracelb_node_t *ptr):
 *         cdef ScamperTracelbNode n
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         n = ScamperTracelbNode.__new__(ScamperTracelbNode)
*/
  }

  /* "scamper.pyx":3558
 *         if ptr == NULL:
 *             return None
 *         n = ScamperTracelbNode.__new__(ScamperTracelbNode)             # <<<<<<<<<<<<<<
 *         n._c = cscamper_tracelb.scamper_tracelb_node_use(ptr)
 *         return n
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTracelbNode(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbNode), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3558, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_n = ((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":3559
 *             return None
 *         n = ScamperTracelbNode.__new__(ScamperTracelbNode)
 *         n._c = cscamper_tracelb.scamper_tracelb_node_use(ptr)             # <<<<<<<<<<<<<<
 *         return n
 * 
*/
  __pyx_v_n->_c = scamper_tracelb_node_use(__pyx_v_ptr);

  /* "scamper.pyx":3560
 *         n = ScamperTracelbNode.__new__(ScamperTracelbNode)
 *         n._c = cscamper_tracelb.scamper_tracelb_node_use(ptr)
 *         return n             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_n);
  __pyx_r = __pyx_v_n;
  goto __pyx_L0;

  /* "scamper.pyx":3553
 *             cscamper_tracelb.scamper_tracelb_node_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelbNode from_ptr(cscamper_tracelb.scamper_tracelb_node_t *ptr):
 *         cdef ScamperTracelbNode n
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_n);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3562
 *         return n
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbNode_3src___get__(((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_3src___get__(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":3570
 *         :rtype: ScamperAddr
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_node_addr_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_tracelb_node_addr_get(__pyx_v_self->_c);

  /* "scamper.pyx":3571
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_node_addr_get(self._c)
 *         return ScamperAddr.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3571, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3562
 *         return n
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3573
 *         return ScamperAddr.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbNode_4name___get__(((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_4name___get__(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self) {
  char const *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3582
 *         :rtype: string
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_node_name_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_tracelb_node_name_get(__pyx_v_self->_c);

  /* "scamper.pyx":3583
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_node_name_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3584
 *         c = cscamper_tracelb.scamper_tracelb_node_name_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3583
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_node_name_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":3585
 *         if c == NULL:
 *             return None
 *         return c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3585, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3573
 *         return ScamperAddr.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3587
 *         return c.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_10icmp_q_ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_10icmp_q_ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbNode_10icmp_q_ttl___get__(((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_10icmp_q_ttl___get__(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":3596
 *         :rtype: int
 *         """
 *         if cscamper_tracelb.scamper_tracelb_node_is_q_ttl(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_tracelb.scamper_tracelb_node_q_ttl_get(self._c)
 *         return None
*/
  __pyx_t_1 = scamper_tracelb_node_is_q_ttl(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":3597
 *         """
 *         if cscamper_tracelb.scamper_tracelb_node_is_q_ttl(self._c):
 *             return cscamper_tracelb.scamper_tracelb_node_q_ttl_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_node_q_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":3596
 *         :rtype: int
 *         """
 *         if cscamper_tracelb.scamper_tracelb_node_is_q_ttl(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_tracelb.scamper_tracelb_node_q_ttl_get(self._c)
 *         return None
*/
  }

  /* "scamper.pyx":3598
 *         if cscamper_tracelb.scamper_tracelb_node_is_q_ttl(self._c):
 *             return cscamper_tracelb.scamper_tracelb_node_q_ttl_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":3587
 *         return c.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.icmp_q_ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3600
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def link_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_10link_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_10link_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbNode_10link_count___get__(((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_10link_count___get__(struct __pyx_obj_7scamper_ScamperTracelbNode *__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("__get__", 0);

  /* "scamper.pyx":3608
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_node_linkc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def link(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_node_linkc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3608, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3600
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def link_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.link_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3610
 *         return cscamper_tracelb.scamper_tracelb_node_linkc_get(self._c)
 * 
 *     def link(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         link(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_5link(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_18ScamperTracelbNode_4link, "\n        link(i)\n        get method to obtain a specific link attached to this node starting at zero.\n\n        :returns: the nominated link\n        :rtype: ScamperTracelbLink\n        ");
static PyMethodDef __pyx_mdef_7scamper_18ScamperTracelbNode_5link = {"link", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbNode_5link, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_18ScamperTracelbNode_4link};
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_5link(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("link (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3610, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3610, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "link", 0) < 0) __PYX_ERR(0, 3610, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("link", 1, 1, 1, i); __PYX_ERR(0, 3610, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3610, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("link", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3610, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.link", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbNode_4link(((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_4link(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_tracelb_link_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("link", 0);

  /* "scamper.pyx":3618
 *         :rtype: ScamperTracelbLink
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_node_link_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperTracelbLink.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3618, __pyx_L1_error)
  __pyx_v_c = scamper_tracelb_node_link_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":3619
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_node_link_get(self._c, i)
 *         return ScamperTracelbLink.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     def links(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_18ScamperTracelbLink_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3610
 *         return cscamper_tracelb.scamper_tracelb_node_linkc_get(self._c)
 * 
 *     def link(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         link(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.link", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3621
 *         return ScamperTracelbLink.from_ptr(c)
 * 
 *     def links(self):             # <<<<<<<<<<<<<<
 *         return _ScamperTracelbLinkIterator(self)
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_7links(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_18ScamperTracelbNode_7links = {"links", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbNode_7links, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_7links(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("links (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("links", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("links", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbNode_6links(((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_6links(struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("links", 0);

  /* "scamper.pyx":3622
 * 
 *     def links(self):
 *         return _ScamperTracelbLinkIterator(self)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTracelbLink:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLinkIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3622, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3621
 *         return ScamperTracelbLink.from_ptr(c)
 * 
 *     def links(self):             # <<<<<<<<<<<<<<
 *         return _ScamperTracelbLinkIterator(self)
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.links", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_18ScamperTracelbNode_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbNode_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbNode_8__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_18ScamperTracelbNode_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbNode_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_18ScamperTracelbNode_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbNode_10__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTracelbNode *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbNode_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbNode *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelbNode.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3631
 *     cdef cscamper_tracelb.scamper_tracelb_link_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_18ScamperTracelbLink_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_18ScamperTracelbLink_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbLink___init__(((struct __pyx_obj_7scamper_ScamperTracelbLink *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_18ScamperTracelbLink___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":3632
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 3632, __pyx_L1_error)

  /* "scamper.pyx":3631
 *     cdef cscamper_tracelb.scamper_tracelb_link_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3634
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_link_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_18ScamperTracelbLink_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_18ScamperTracelbLink_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_18ScamperTracelbLink_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTracelbLink *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_18ScamperTracelbLink_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":3635
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_link_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3636
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_link_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    scamper_tracelb_link_free(__pyx_v_self->_c);

    /* "scamper.pyx":3635
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_link_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":3634
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_link_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":3638
 *             cscamper_tracelb.scamper_tracelb_link_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         out = []
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbLink_4__str__(((struct __pyx_obj_7scamper_ScamperTracelbLink *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_4__str__(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  PyObject *__pyx_v_out = NULL;
  scamper_tracelb_node_t *__pyx_v_n;
  scamper_addr_t *__pyx_v_a;
  PyObject *__pyx_v_hopc = NULL;
  PyObject *__pyx_v_j = NULL;
  scamper_tracelb_probeset_t *__pyx_v_ps;
  scamper_tracelb_probeset_summary_t *__pyx_v_sm;
  uint16_t __pyx_v_nullc;
  uint16_t __pyx_v_addrc;
  uint16_t __pyx_v_k;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  size_t __pyx_t_8;
  PyObject *(*__pyx_t_9)(PyObject *);
  uint8_t __pyx_t_10;
  int __pyx_t_11;
  uint16_t __pyx_t_12;
  uint16_t __pyx_t_13;
  uint16_t __pyx_t_14;
  Py_ssize_t __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":3640
 *     def __str__(self):
 *         cdef char buf[128]
 *         out = []             # <<<<<<<<<<<<<<
 * 
 *         n = cscamper_tracelb.scamper_tracelb_link_from_get(self._c)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3640, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_out = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":3642
 *         out = []
 * 
 *         n = cscamper_tracelb.scamper_tracelb_link_from_get(self._c)             # <<<<<<<<<<<<<<
 *         a = cscamper_tracelb.scamper_tracelb_node_addr_get(n)
 *         if a != NULL:
*/
  __pyx_v_n = scamper_tracelb_link_from_get(__pyx_v_self->_c);

  /* "scamper.pyx":3643
 * 
 *         n = cscamper_tracelb.scamper_tracelb_link_from_get(self._c)
 *         a = cscamper_tracelb.scamper_tracelb_node_addr_get(n)             # <<<<<<<<<<<<<<
 *         if a != NULL:
 *             cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
*/
  __pyx_v_a = scamper_tracelb_node_addr_get(__pyx_v_n);

  /* "scamper.pyx":3644
 *         n = cscamper_tracelb.scamper_tracelb_link_from_get(self._c)
 *         a = cscamper_tracelb.scamper_tracelb_node_addr_get(n)
 *         if a != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
 *             out.append(buf.decode('UTF-8', 'strict'))
*/
  __pyx_t_2 = (__pyx_v_a != NULL);
  if (__pyx_t_2) {

    /* "scamper.pyx":3645
 *         a = cscamper_tracelb.scamper_tracelb_node_addr_get(n)
 *         if a != NULL:
 *             cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *             out.append(buf.decode('UTF-8', 'strict'))
 *         else:
*/
    (void)(scamper_addr_tostr(__pyx_v_a, __pyx_v_buf, (sizeof(__pyx_v_buf))));

    /* "scamper.pyx":3646
 *         if a != NULL:
 *             cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
 *             out.append(buf.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *         else:
 *             out.append("*")
*/
    __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3646, __pyx_L1_error)
    __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3646, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 3646, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":3644
 *         n = cscamper_tracelb.scamper_tracelb_link_from_get(self._c)
 *         a = cscamper_tracelb.scamper_tracelb_node_addr_get(n)
 *         if a != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
 *             out.append(buf.decode('UTF-8', 'strict'))
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":3648
 *             out.append(buf.decode('UTF-8', 'strict'))
 *         else:
 *             out.append("*")             # <<<<<<<<<<<<<<
 * 
 *         hopc = cscamper_tracelb.scamper_tracelb_link_hopc_get(self._c)
*/
  /*else*/ {
    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_mstate_global->__pyx_kp_u__2); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 3648, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "scamper.pyx":3650
 *             out.append("*")
 * 
 *         hopc = cscamper_tracelb.scamper_tracelb_link_hopc_get(self._c)             # <<<<<<<<<<<<<<
 *         for j in range(hopc-1):
 *             ps = cscamper_tracelb.scamper_tracelb_link_probeset_get(self._c, j)
*/
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_link_hopc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3650, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_hopc = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":3651
 * 
 *         hopc = cscamper_tracelb.scamper_tracelb_link_hopc_get(self._c)
 *         for j in range(hopc-1):             # <<<<<<<<<<<<<<
 *             ps = cscamper_tracelb.scamper_tracelb_link_probeset_get(self._c, j)
 *             sm = cscamper_tracelb.scamper_tracelb_probeset_summary_alloc(ps)
*/
  __pyx_t_5 = NULL;
  __Pyx_INCREF(__pyx_builtin_range);
  __pyx_t_6 = __pyx_builtin_range; 
  __pyx_t_7 = __Pyx_PyLong_SubtractObjC(__pyx_v_hopc, __pyx_mstate_global->__pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_7};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_8, (2-__pyx_t_8) | (__pyx_t_8*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3651, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_6 = __pyx_t_1; __Pyx_INCREF(__pyx_t_6);
    __pyx_t_3 = 0;
    __pyx_t_9 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3651, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_9 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3651, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_9)) {
      if (likely(PyList_CheckExact(__pyx_t_6))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_6);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3651, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRef(__pyx_t_6, __pyx_t_3);
        ++__pyx_t_3;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_6);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 3651, __pyx_L1_error)
          #endif
          if (__pyx_t_3 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_3));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_3);
        #endif
        ++__pyx_t_3;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3651, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_9(__pyx_t_6);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 3651, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_j, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":3652
 *         hopc = cscamper_tracelb.scamper_tracelb_link_hopc_get(self._c)
 *         for j in range(hopc-1):
 *             ps = cscamper_tracelb.scamper_tracelb_link_probeset_get(self._c, j)             # <<<<<<<<<<<<<<
 *             sm = cscamper_tracelb.scamper_tracelb_probeset_summary_alloc(ps)
 *             nullc = cscamper_tracelb.scamper_tracelb_probeset_summary_nullc_get(sm)
*/
    __pyx_t_10 = __Pyx_PyLong_As_uint8_t(__pyx_v_j); if (unlikely((__pyx_t_10 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3652, __pyx_L1_error)
    __pyx_v_ps = scamper_tracelb_link_probeset_get(__pyx_v_self->_c, __pyx_t_10);

    /* "scamper.pyx":3653
 *         for j in range(hopc-1):
 *             ps = cscamper_tracelb.scamper_tracelb_link_probeset_get(self._c, j)
 *             sm = cscamper_tracelb.scamper_tracelb_probeset_summary_alloc(ps)             # <<<<<<<<<<<<<<
 *             nullc = cscamper_tracelb.scamper_tracelb_probeset_summary_nullc_get(sm)
 *             addrc = cscamper_tracelb.scamper_tracelb_probeset_summary_addrc_get(sm)
*/
    __pyx_v_sm = scamper_tracelb_probeset_summary_alloc(__pyx_v_ps);

    /* "scamper.pyx":3654
 *             ps = cscamper_tracelb.scamper_tracelb_link_probeset_get(self._c, j)
 *             sm = cscamper_tracelb.scamper_tracelb_probeset_summary_alloc(ps)
 *             nullc = cscamper_tracelb.scamper_tracelb_probeset_summary_nullc_get(sm)             # <<<<<<<<<<<<<<
 *             addrc = cscamper_tracelb.scamper_tracelb_probeset_summary_addrc_get(sm)
 *             if nullc > 0 and addrc == 0:
*/
    __pyx_v_nullc = scamper_tracelb_probeset_summary_nullc_get(__pyx_v_sm);

    /* "scamper.pyx":3655
 *             sm = cscamper_tracelb.scamper_tracelb_probeset_summary_alloc(ps)
 *             nullc = cscamper_tracelb.scamper_tracelb_probeset_summary_nullc_get(sm)
 *             addrc = cscamper_tracelb.scamper_tracelb_probeset_summary_addrc_get(sm)             # <<<<<<<<<<<<<<
 *             if nullc > 0 and addrc == 0:
 *                 out.append(" -> *")
*/
    __pyx_v_addrc = scamper_tracelb_probeset_summary_addrc_get(__pyx_v_sm);

    /* "scamper.pyx":3656
 *             nullc = cscamper_tracelb.scamper_tracelb_probeset_summary_nullc_get(sm)
 *             addrc = cscamper_tracelb.scamper_tracelb_probeset_summary_addrc_get(sm)
 *             if nullc > 0 and addrc == 0:             # <<<<<<<<<<<<<<
 *                 out.append(" -> *")
 *             else:
*/
    __pyx_t_11 = (__pyx_v_nullc > 0);
    if (__pyx_t_11) {
    } else {
      __pyx_t_2 = __pyx_t_11;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_11 = (__pyx_v_addrc == 0);
    __pyx_t_2 = __pyx_t_11;
    __pyx_L7_bool_binop_done:;
    if (__pyx_t_2) {

      /* "scamper.pyx":3657
 *             addrc = cscamper_tracelb.scamper_tracelb_probeset_summary_addrc_get(sm)
 *             if nullc > 0 and addrc == 0:
 *                 out.append(" -> *")             # <<<<<<<<<<<<<<
 *             else:
 *                 out.append("(")
*/
      __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_mstate_global->__pyx_kp_u__6); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 3657, __pyx_L1_error)

      /* "scamper.pyx":3656
 *             nullc = cscamper_tracelb.scamper_tracelb_probeset_summary_nullc_get(sm)
 *             addrc = cscamper_tracelb.scamper_tracelb_probeset_summary_addrc_get(sm)
 *             if nullc > 0 and addrc == 0:             # <<<<<<<<<<<<<<
 *                 out.append(" -> *")
 *             else:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":3659
 *                 out.append(" -> *")
 *             else:
 *                 out.append("(")             # <<<<<<<<<<<<<<
 *                 for k in range(addrc):
 *                     if k > 0:
*/
    /*else*/ {
      __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_mstate_global->__pyx_kp_u__7); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 3659, __pyx_L1_error)

      /* "scamper.pyx":3660
 *             else:
 *                 out.append("(")
 *                 for k in range(addrc):             # <<<<<<<<<<<<<<
 *                     if k > 0:
 *                         out.append(", ")
*/
      __pyx_t_12 = __pyx_v_addrc;
      __pyx_t_13 = __pyx_t_12;
      for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
        __pyx_v_k = __pyx_t_14;

        /* "scamper.pyx":3661
 *                 out.append("(")
 *                 for k in range(addrc):
 *                     if k > 0:             # <<<<<<<<<<<<<<
 *                         out.append(", ")
 *                     a = cscamper_tracelb.scamper_tracelb_probeset_summary_addr_get(sm, k)
*/
        __pyx_t_2 = (__pyx_v_k > 0);
        if (__pyx_t_2) {

          /* "scamper.pyx":3662
 *                 for k in range(addrc):
 *                     if k > 0:
 *                         out.append(", ")             # <<<<<<<<<<<<<<
 *                     a = cscamper_tracelb.scamper_tracelb_probeset_summary_addr_get(sm, k)
 *                     cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
*/
          __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_mstate_global->__pyx_kp_u__8); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 3662, __pyx_L1_error)

          /* "scamper.pyx":3661
 *                 out.append("(")
 *                 for k in range(addrc):
 *                     if k > 0:             # <<<<<<<<<<<<<<
 *                         out.append(", ")
 *                     a = cscamper_tracelb.scamper_tracelb_probeset_summary_addr_get(sm, k)
*/
        }

        /* "scamper.pyx":3663
 *                     if k > 0:
 *                         out.append(", ")
 *                     a = cscamper_tracelb.scamper_tracelb_probeset_summary_addr_get(sm, k)             # <<<<<<<<<<<<<<
 *                     cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
 *                     out.append(buf.decode('UTF-8', 'strict'))
*/
        __pyx_v_a = scamper_tracelb_probeset_summary_addr_get(__pyx_v_sm, __pyx_v_k);

        /* "scamper.pyx":3664
 *                         out.append(", ")
 *                     a = cscamper_tracelb.scamper_tracelb_probeset_summary_addr_get(sm, k)
 *                     cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *                     out.append(buf.decode('UTF-8', 'strict'))
 *                 if nullc > 0:
*/
        (void)(scamper_addr_tostr(__pyx_v_a, __pyx_v_buf, (sizeof(__pyx_v_buf))));

        /* "scamper.pyx":3665
 *                     a = cscamper_tracelb.scamper_tracelb_probeset_summary_addr_get(sm, k)
 *                     cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
 *                     out.append(buf.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *                 if nullc > 0:
 *                     out.append(", *)")
*/
        __pyx_t_15 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_15 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3665, __pyx_L1_error)
        __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_15, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3665, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 3665, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      }

      /* "scamper.pyx":3666
 *                     cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
 *                     out.append(buf.decode('UTF-8', 'strict'))
 *                 if nullc > 0:             # <<<<<<<<<<<<<<
 *                     out.append(", *)")
 *                 else:
*/
      __pyx_t_2 = (__pyx_v_nullc > 0);
      if (__pyx_t_2) {

        /* "scamper.pyx":3667
 *                     out.append(buf.decode('UTF-8', 'strict'))
 *                 if nullc > 0:
 *                     out.append(", *)")             # <<<<<<<<<<<<<<
 *                 else:
 *                     out.append(")")
*/
        __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_mstate_global->__pyx_kp_u__9); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 3667, __pyx_L1_error)

        /* "scamper.pyx":3666
 *                     cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
 *                     out.append(buf.decode('UTF-8', 'strict'))
 *                 if nullc > 0:             # <<<<<<<<<<<<<<
 *                     out.append(", *)")
 *                 else:
*/
        goto __pyx_L12;
      }

      /* "scamper.pyx":3669
 *                     out.append(", *)")
 *                 else:
 *                     out.append(")")             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_probeset_summary_free(sm)
 * 
*/
      /*else*/ {
        __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_mstate_global->__pyx_kp_u__10); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 3669, __pyx_L1_error)
      }
      __pyx_L12:;
    }
    __pyx_L6:;

    /* "scamper.pyx":3670
 *                 else:
 *                     out.append(")")
 *             cscamper_tracelb.scamper_tracelb_probeset_summary_free(sm)             # <<<<<<<<<<<<<<
 * 
 *         n = cscamper_tracelb.scamper_tracelb_link_to_get(self._c)
*/
    scamper_tracelb_probeset_summary_free(__pyx_v_sm);

    /* "scamper.pyx":3651
 * 
 *         hopc = cscamper_tracelb.scamper_tracelb_link_hopc_get(self._c)
 *         for j in range(hopc-1):             # <<<<<<<<<<<<<<
 *             ps = cscamper_tracelb.scamper_tracelb_link_probeset_get(self._c, j)
 *             sm = cscamper_tracelb.scamper_tracelb_probeset_summary_alloc(ps)
*/
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "scamper.pyx":3672
 *             cscamper_tracelb.scamper_tracelb_probeset_summary_free(sm)
 * 
 *         n = cscamper_tracelb.scamper_tracelb_link_to_get(self._c)             # <<<<<<<<<<<<<<
 *         a = cscamper_tracelb.scamper_tracelb_node_addr_get(n)
 *         if a != NULL:
*/
  __pyx_v_n = scamper_tracelb_link_to_get(__pyx_v_self->_c);

  /* "scamper.pyx":3673
 * 
 *         n = cscamper_tracelb.scamper_tracelb_link_to_get(self._c)
 *         a = cscamper_tracelb.scamper_tracelb_node_addr_get(n)             # <<<<<<<<<<<<<<
 *         if a != NULL:
 *             cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
*/
  __pyx_v_a = scamper_tracelb_node_addr_get(__pyx_v_n);

  /* "scamper.pyx":3674
 *         n = cscamper_tracelb.scamper_tracelb_link_to_get(self._c)
 *         a = cscamper_tracelb.scamper_tracelb_node_addr_get(n)
 *         if a != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
 *             out.append(" -> " + buf.decode('UTF-8', 'strict'))
*/
  __pyx_t_2 = (__pyx_v_a != NULL);
  if (__pyx_t_2) {

    /* "scamper.pyx":3675
 *         a = cscamper_tracelb.scamper_tracelb_node_addr_get(n)
 *         if a != NULL:
 *             cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *             out.append(" -> " + buf.decode('UTF-8', 'strict'))
 *         else:
*/
    (void)(scamper_addr_tostr(__pyx_v_a, __pyx_v_buf, (sizeof(__pyx_v_buf))));

    /* "scamper.pyx":3676
 *         if a != NULL:
 *             cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
 *             out.append(" -> " + buf.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *         else:
 *             out.append(" -> *")
*/
    __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3676, __pyx_L1_error)
    __pyx_t_6 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3676, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u__11, __pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3676, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 3676, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":3674
 *         n = cscamper_tracelb.scamper_tracelb_link_to_get(self._c)
 *         a = cscamper_tracelb.scamper_tracelb_node_addr_get(n)
 *         if a != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_tostr(a, buf, sizeof(buf))
 *             out.append(" -> " + buf.decode('UTF-8', 'strict'))
*/
    goto __pyx_L14;
  }

  /* "scamper.pyx":3678
 *             out.append(" -> " + buf.decode('UTF-8', 'strict'))
 *         else:
 *             out.append(" -> *")             # <<<<<<<<<<<<<<
 * 
 *         return ''.join(out)
*/
  /*else*/ {
    __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_out, __pyx_mstate_global->__pyx_kp_u__6); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 3678, __pyx_L1_error)
  }
  __pyx_L14:;

  /* "scamper.pyx":3680
 *             out.append(" -> *")
 * 
 *         return ''.join(out)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__4, __pyx_v_out); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3680, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3638
 *             cscamper_tracelb.scamper_tracelb_link_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         out = []
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XDECREF(__pyx_v_hopc);
  __Pyx_XDECREF(__pyx_v_j);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3682
 *         return ''.join(out)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelbLink from_ptr(cscamper_tracelb.scamper_tracelb_link_t *ptr):
 *         cdef ScamperTracelbLink l
*/

static struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_f_7scamper_18ScamperTracelbLink_from_ptr(scamper_tracelb_link_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_l = 0;
  struct __pyx_obj_7scamper_ScamperTracelbLink *__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("from_ptr", 0);

  /* "scamper.pyx":3685
 *     cdef ScamperTracelbLink from_ptr(cscamper_tracelb.scamper_tracelb_link_t *ptr):
 *         cdef ScamperTracelbLink l
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         l = ScamperTracelbLink.__new__(ScamperTracelbLink)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3686
 *         cdef ScamperTracelbLink l
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         l = ScamperTracelbLink.__new__(ScamperTracelbLink)
 *         l._c = cscamper_tracelb.scamper_tracelb_link_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperTracelbLink *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3685
 *     cdef ScamperTracelbLink from_ptr(cscamper_tracelb.scamper_tracelb_link_t *ptr):
 *         cdef ScamperTracelbLink l
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         l = ScamperTracelbLink.__new__(ScamperTracelbLink)
*/
  }

  /* "scamper.pyx":3687
 *         if ptr == NULL:
 *             return None
 *         l = ScamperTracelbLink.__new__(ScamperTracelbLink)             # <<<<<<<<<<<<<<
 *         l._c = cscamper_tracelb.scamper_tracelb_link_use(ptr)
 *         return l
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTracelbLink(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbLink), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3687, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_l = ((struct __pyx_obj_7scamper_ScamperTracelbLink *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":3688
 *             return None
 *         l = ScamperTracelbLink.__new__(ScamperTracelbLink)
 *         l._c = cscamper_tracelb.scamper_tracelb_link_use(ptr)             # <<<<<<<<<<<<<<
 *         return l
 * 
*/
  __pyx_v_l->_c = scamper_tracelb_link_use(__pyx_v_ptr);

  /* "scamper.pyx":3689
 *         l = ScamperTracelbLink.__new__(ScamperTracelbLink)
 *         l._c = cscamper_tracelb.scamper_tracelb_link_use(ptr)
 *         return l             # <<<<<<<<<<<<<<
 * 
 *     def near(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_l);
  __pyx_r = __pyx_v_l;
  goto __pyx_L0;

  /* "scamper.pyx":3682
 *         return ''.join(out)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelbLink from_ptr(cscamper_tracelb.scamper_tracelb_link_t *ptr):
 *         cdef ScamperTracelbLink l
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_l);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3691
 *         return l
 * 
 *     def near(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the node at the near side of this link
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_7near(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_18ScamperTracelbLink_6near, "\n        get method to obtain the node at the near side of this link\n\n        :returns: the node at the near side of this link\n        :rtype: ScamperTracelbNode:\n        ");
static PyMethodDef __pyx_mdef_7scamper_18ScamperTracelbLink_7near = {"near", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_7near, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_18ScamperTracelbLink_6near};
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_7near(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("near (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("near", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("near", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbLink_6near(((struct __pyx_obj_7scamper_ScamperTracelbLink *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_6near(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self) {
  scamper_tracelb_node_t *__pyx_v_c;
  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("near", 0);

  /* "scamper.pyx":3698
 *         :rtype: ScamperTracelbNode:
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_link_from_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperTracelbNode.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_tracelb_link_from_get(__pyx_v_self->_c);

  /* "scamper.pyx":3699
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_link_from_get(self._c)
 *         return ScamperTracelbNode.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     def far(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_18ScamperTracelbNode_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3691
 *         return l
 * 
 *     def near(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the node at the near side of this link
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.near", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3701
 *         return ScamperTracelbNode.from_ptr(c)
 * 
 *     def far(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the node at the far side of this link
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_9far(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_18ScamperTracelbLink_8far, "\n        get method to obtain the node at the far side of this link\n\n        :returns: the node at the far side of this link\n        :rtype: ScamperTracelbNode:\n        ");
static PyMethodDef __pyx_mdef_7scamper_18ScamperTracelbLink_9far = {"far", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_9far, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_18ScamperTracelbLink_8far};
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_9far(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("far (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("far", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("far", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbLink_8far(((struct __pyx_obj_7scamper_ScamperTracelbLink *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_8far(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self) {
  scamper_tracelb_node_t *__pyx_v_c;
  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("far", 0);

  /* "scamper.pyx":3708
 *         :rtype: ScamperTracelbNode:
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_link_to_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperTracelbNode.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_tracelb_link_to_get(__pyx_v_self->_c);

  /* "scamper.pyx":3709
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_link_to_get(self._c)
 *         return ScamperTracelbNode.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     def length(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_18ScamperTracelbNode_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3709, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3701
 *         return ScamperTracelbNode.from_ptr(c)
 * 
 *     def far(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the node at the far side of this link
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.far", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3711
 *         return ScamperTracelbNode.from_ptr(c)
 * 
 *     def length(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the length of this link, in hops.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_11length(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_18ScamperTracelbLink_10length, "\n        get method to obtain the length of this link, in hops.\n\n        :returns: the length of this link, in hops.\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_18ScamperTracelbLink_11length = {"length", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_11length, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_18ScamperTracelbLink_10length};
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_11length(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("length (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("length", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("length", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbLink_10length(((struct __pyx_obj_7scamper_ScamperTracelbLink *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_10length(struct __pyx_obj_7scamper_ScamperTracelbLink *__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("length", 0);

  /* "scamper.pyx":3718
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_link_hopc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def probeset(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_link_hopc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3711
 *         return ScamperTracelbNode.from_ptr(c)
 * 
 *     def length(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the length of this link, in hops.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.length", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3720
 *         return cscamper_tracelb.scamper_tracelb_link_hopc_get(self._c)
 * 
 *     def probeset(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a probeset for a part of a link.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_13probeset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_18ScamperTracelbLink_12probeset, "\n        get method to obtain a probeset for a part of a link.\n\n        :returns: a probeset.\n        :rtype: ScamperTracelbProbeset\n        ");
static PyMethodDef __pyx_mdef_7scamper_18ScamperTracelbLink_13probeset = {"probeset", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_13probeset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_18ScamperTracelbLink_12probeset};
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_13probeset(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("probeset (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3720, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3720, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "probeset", 0) < 0) __PYX_ERR(0, 3720, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("probeset", 1, 1, 1, i); __PYX_ERR(0, 3720, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3720, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("probeset", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3720, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.probeset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbLink_12probeset(((struct __pyx_obj_7scamper_ScamperTracelbLink *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_12probeset(struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_tracelb_probeset_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint8_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("probeset", 0);

  /* "scamper.pyx":3727
 *         :rtype: ScamperTracelbProbeset
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_link_probeset_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperTracelbProbeset.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint8_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3727, __pyx_L1_error)
  __pyx_v_c = scamper_tracelb_link_probeset_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":3728
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_link_probeset_get(self._c, i)
 *         return ScamperTracelbProbeset.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTracelb:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_22ScamperTracelbProbeset_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3720
 *         return cscamper_tracelb.scamper_tracelb_link_hopc_get(self._c)
 * 
 *     def probeset(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a probeset for a part of a link.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.probeset", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_18ScamperTracelbLink_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbLink_14__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTracelbLink *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_18ScamperTracelbLink_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_18ScamperTracelbLink_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_18ScamperTracelbLink_16__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTracelbLink *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperTracelbLink_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelbLink *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelbLink.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3738
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperTracelb_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_14ScamperTracelb_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb___init__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperTracelb___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":3739
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3739, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 3739, __pyx_L1_error)

  /* "scamper.pyx":3738
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelb.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3741
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_14ScamperTracelb_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_14ScamperTracelb_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_14ScamperTracelb_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_14ScamperTracelb_2__dealloc__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":3742
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3743
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    scamper_tracelb_free(__pyx_v_self->_c);

    /* "scamper.pyx":3742
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":3741
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tracelb.scamper_tracelb_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":3745
 *             cscamper_tracelb.scamper_tracelb_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         c = cscamper_tracelb.scamper_tracelb_totext(self._c, NULL)
 *         if c == NULL:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_4__str__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_4__str__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":3746
 * 
 *     def __str__(self):
 *         c = cscamper_tracelb.scamper_tracelb_totext(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_tracelb_totext(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":3747
 *     def __str__(self):
 *         c = cscamper_tracelb.scamper_tracelb_totext(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3748
 *         c = cscamper_tracelb.scamper_tracelb_totext(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3747
 *     def __str__(self):
 *         c = cscamper_tracelb.scamper_tracelb_totext(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":3749
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3749, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":3750
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":3751
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":3745
 *             cscamper_tracelb.scamper_tracelb_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         c = cscamper_tracelb.scamper_tracelb_totext(self._c, NULL)
 *         if c == NULL:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelb.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3753
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelb from_ptr(cscamper_tracelb.scamper_tracelb_t *ptr):
 *         cdef ScamperTracelb tracelb = ScamperTracelb.__new__(ScamperTracelb)
*/

static struct __pyx_obj_7scamper_ScamperTracelb *__pyx_f_7scamper_14ScamperTracelb_from_ptr(scamper_tracelb_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_tracelb = 0;
  struct __pyx_obj_7scamper_ScamperTracelb *__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("from_ptr", 0);

  /* "scamper.pyx":3755
 *     @staticmethod
 *     cdef ScamperTracelb from_ptr(cscamper_tracelb.scamper_tracelb_t *ptr):
 *         cdef ScamperTracelb tracelb = ScamperTracelb.__new__(ScamperTracelb)             # <<<<<<<<<<<<<<
 *         tracelb._c = ptr
 *         return tracelb
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTracelb(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3755, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_tracelb = ((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":3756
 *     cdef ScamperTracelb from_ptr(cscamper_tracelb.scamper_tracelb_t *ptr):
 *         cdef ScamperTracelb tracelb = ScamperTracelb.__new__(ScamperTracelb)
 *         tracelb._c = ptr             # <<<<<<<<<<<<<<
 *         return tracelb
 * 
*/
  __pyx_v_tracelb->_c = __pyx_v_ptr;

  /* "scamper.pyx":3757
 *         cdef ScamperTracelb tracelb = ScamperTracelb.__new__(ScamperTracelb)
 *         tracelb._c = ptr
 *         return tracelb             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_tracelb);
  __pyx_r = __pyx_v_tracelb;
  goto __pyx_L0;

  /* "scamper.pyx":3753
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTracelb from_ptr(cscamper_tracelb.scamper_tracelb_t *ptr):
 *         cdef ScamperTracelb tracelb = ScamperTracelb.__new__(ScamperTracelb)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_tracelb);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3759
 *         return tracelb
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_4list_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_4list_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_4list___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_4list___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  scamper_list_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":3767
 *         :rtype: ScamperList
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_list_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperList.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_tracelb_list_get(__pyx_v_self->_c);

  /* "scamper.pyx":3768
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_list_get(self._c)
 *         return ScamperList.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3759
 *         return tracelb
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.list.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3770
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_5cycle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_5cycle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_5cycle___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_5cycle___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  scamper_cycle_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uint16_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3778
 *         :rtype: ScamperCycle
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_cycle_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
*/
  __pyx_v_c = scamper_tracelb_cycle_get(__pyx_v_self->_c);

  /* "scamper.pyx":3779
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_cycle_get(self._c)
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3779, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3779, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3770
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.cycle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3781
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_4inst___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_4inst___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3790
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":3781
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3792
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def method(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_6method_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_6method_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_6method___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_6method___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  uint8_t __pyx_v_m;
  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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3800
 *         :rtype: ScamperTracelbMethod
 *         """
 *         m = cscamper_tracelb.scamper_tracelb_type_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperTracelbMethod(m)
 * 
*/
  __pyx_v_m = scamper_tracelb_type_get(__pyx_v_self->_c);

  /* "scamper.pyx":3801
 *         """
 *         m = cscamper_tracelb.scamper_tracelb_type_get(self._c)
 *         return ScamperTracelbMethod(m)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperTracelbMethod); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_uint8_t(__pyx_v_m); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3801, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3801, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3792
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def method(self):
 *         """
*/

  /* 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_AddTraceback("scamper.ScamperTracelb.method.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3803
 *         return ScamperTracelbMethod(m)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_6userid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_6userid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_6userid___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_6userid___get__(struct __pyx_obj_7scamper_ScamperTracelb *__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("__get__", 0);

  /* "scamper.pyx":3811
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_userid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_tracelb_userid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3803
 *         return ScamperTracelbMethod(m)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.userid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3813
 *         return cscamper_tracelb.scamper_tracelb_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_5start___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_5start___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3821
 *         :rtype: datetime
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_start_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_tracelb_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":3822
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3823
 *         c = cscamper_tracelb.scamper_tracelb_start_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3822
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":3824
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3824, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3824, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3824, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3824, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":3825
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 3825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 3825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 3825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":3826
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     def to_json(self):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 3826, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 3825, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 3825, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3825, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3813
 *         return cscamper_tracelb.scamper_tracelb_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperTracelb.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3828
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this MDA traceroute
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_7to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperTracelb_6to_json, "\n        get method to obtain a JSON rendering of this MDA traceroute\n        measurement.\n\n        :returns: json representation\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperTracelb_7to_json = {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_7to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_6to_json};
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_7to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_json (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("to_json", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("to_json", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_6to_json(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_6to_json(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_json", 0);

  /* "scamper.pyx":3836
 *         :rtype: string
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_tojson(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_tracelb_tojson(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":3837
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":3838
 *         c = cscamper_tracelb.scamper_tracelb_tojson(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":3837
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":3839
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 3839, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3839, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":3840
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":3841
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":3828
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this MDA traceroute
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelb.to_json", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3843
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_3src___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_3src___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":3851
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_tracelb.scamper_tracelb_src_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_tracelb_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":3852
 *         """
 *         c_a = cscamper_tracelb.scamper_tracelb_src_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3843
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3854
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_3dst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_3dst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_3dst___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_3dst___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":3862
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_tracelb.scamper_tracelb_dst_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_tracelb_dst_get(__pyx_v_self->_c);

  /* "scamper.pyx":3863
 *         """
 *         c_a = cscamper_tracelb.scamper_tracelb_dst_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3854
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.dst.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3865
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtr(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_3rtr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_3rtr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_3rtr___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_3rtr___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":3874
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_tracelb.scamper_tracelb_rtr_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_tracelb_rtr_get(__pyx_v_self->_c);

  /* "scamper.pyx":3875
 *         """
 *         c_a = cscamper_tracelb.scamper_tracelb_rtr_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     def node(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3875, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3865
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtr(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.rtr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3877
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     def node(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         node(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_9node(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperTracelb_8node, "\n        node(i)\n        get method to obtain a specific node, starting at zero.\n\n        :returns: the nominated node\n        :rtype: ScamperTracelbNode\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperTracelb_9node = {"node", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_9node, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_8node};
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_9node(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("node (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3877, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3877, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "node", 0) < 0) __PYX_ERR(0, 3877, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("node", 1, 1, 1, i); __PYX_ERR(0, 3877, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3877, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("node", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3877, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelb.node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_8node(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_8node(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_tracelb_node_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("node", 0);

  /* "scamper.pyx":3885
 *         :rtype: ScamperTracelbNode
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_node_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperTracelbNode.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3885, __pyx_L1_error)
  __pyx_v_c = scamper_tracelb_node_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":3886
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_node_get(self._c, i)
 *         return ScamperTracelbNode.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_18ScamperTracelbNode_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3886, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3877
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     def node(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         node(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelb.node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3888
 *         return ScamperTracelbNode.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def node_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_10node_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_10node_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_10node_count___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10node_count___get__(struct __pyx_obj_7scamper_ScamperTracelb *__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("__get__", 0);

  /* "scamper.pyx":3896
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_nodec_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def nodes(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_nodec_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3896, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3888
 *         return ScamperTracelbNode.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def node_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.node_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3898
 *         return cscamper_tracelb.scamper_tracelb_nodec_get(self._c)
 * 
 *     def nodes(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for recorded nodes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_11nodes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperTracelb_10nodes, "\n        get method to obtain an iterator for recorded nodes.\n\n        :returns: an iterator\n        :rtype: _ScamperTracelbNodeIterator\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperTracelb_11nodes = {"nodes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_11nodes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_10nodes};
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_11nodes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("nodes (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("nodes", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("nodes", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_10nodes(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10nodes(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("nodes", 0);

  /* "scamper.pyx":3905
 *         :rtype: _ScamperTracelbNodeIterator
 *         """
 *         return _ScamperTracelbNodeIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     def link(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNodeIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3905, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3905, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3898
 *         return cscamper_tracelb.scamper_tracelb_nodec_get(self._c)
 * 
 *     def nodes(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for recorded nodes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelb.nodes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3907
 *         return _ScamperTracelbNodeIterator(self)
 * 
 *     def link(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         link(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_13link(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperTracelb_12link, "\n        link(i)\n        get method to obtain a specific link starting at zero.\n\n        :returns: the nominated link\n        :rtype: ScamperTracelbLink\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperTracelb_13link = {"link", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_13link, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_12link};
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_13link(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("link (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 3907, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "link", 0) < 0) __PYX_ERR(0, 3907, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("link", 1, 1, 1, i); __PYX_ERR(0, 3907, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 3907, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("link", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 3907, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelb.link", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_12link(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_12link(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_tracelb_link_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("link", 0);

  /* "scamper.pyx":3915
 *         :rtype: ScamperTracelbLink
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_link_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperTracelbLink.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 3915, __pyx_L1_error)
  __pyx_v_c = scamper_tracelb_link_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":3916
 *         """
 *         c = cscamper_tracelb.scamper_tracelb_link_get(self._c, i)
 *         return ScamperTracelbLink.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_18ScamperTracelbLink_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3916, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3907
 *         return _ScamperTracelbNodeIterator(self)
 * 
 *     def link(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         link(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelb.link", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3918
 *         return ScamperTracelbLink.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def link_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_10link_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_10link_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_10link_count___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10link_count___get__(struct __pyx_obj_7scamper_ScamperTracelb *__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("__get__", 0);

  /* "scamper.pyx":3926
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_linkc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def links(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_linkc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3918
 *         return ScamperTracelbLink.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def link_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.link_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3928
 *         return cscamper_tracelb.scamper_tracelb_linkc_get(self._c)
 * 
 *     def links(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for recorded links.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_15links(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperTracelb_14links, "\n        get method to obtain an iterator for recorded links.\n\n        :returns: an iterator\n        :rtype: _ScamperTracelbLinkIterator\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperTracelb_15links = {"links", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_15links, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_14links};
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_15links(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("links (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("links", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("links", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_14links(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_14links(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("links", 0);

  /* "scamper.pyx":3935
 *         :rtype: _ScamperTracelbLinkIterator
 *         """
 *         return _ScamperTracelbLinkIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLinkIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3935, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3928
 *         return cscamper_tracelb.scamper_tracelb_linkc_get(self._c)
 * 
 *     def links(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for recorded links.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelb.links", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3937
 *         return _ScamperTracelbLinkIterator(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempts(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_8attempts_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_8attempts_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_8attempts___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_8attempts___get__(struct __pyx_obj_7scamper_ScamperTracelb *__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("__get__", 0);

  /* "scamper.pyx":3946
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_attempts_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_attempts_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3946, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3937
 *         return _ScamperTracelbLinkIterator(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def attempts(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.attempts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3948
 *         return cscamper_tracelb.scamper_tracelb_attempts_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def gaplimit(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_8gaplimit_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_8gaplimit_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_8gaplimit___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_8gaplimit___get__(struct __pyx_obj_7scamper_ScamperTracelb *__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("__get__", 0);

  /* "scamper.pyx":3957
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_gaplimit_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_gaplimit_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3957, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3948
 *         return cscamper_tracelb.scamper_tracelb_attempts_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def gaplimit(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.gaplimit.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3959
 *         return cscamper_tracelb.scamper_tracelb_gaplimit_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def firsthop(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_8firsthop_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_8firsthop_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_8firsthop___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_8firsthop___get__(struct __pyx_obj_7scamper_ScamperTracelb *__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("__get__", 0);

  /* "scamper.pyx":3968
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_firsthop_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_firsthop_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3959
 *         return cscamper_tracelb.scamper_tracelb_gaplimit_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def firsthop(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.firsthop.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3970
 *         return cscamper_tracelb.scamper_tracelb_firsthop_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tos(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_3tos_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_3tos_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_3tos___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_3tos___get__(struct __pyx_obj_7scamper_ScamperTracelb *__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("__get__", 0);

  /* "scamper.pyx":3978
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_tos_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_tos_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3970
 *         return cscamper_tracelb.scamper_tracelb_firsthop_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tos(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.tos.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3980
 *         return cscamper_tracelb.scamper_tracelb_tos_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_timeout(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_12wait_timeout_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_12wait_timeout_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_12wait_timeout___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_12wait_timeout___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  struct timeval const *__pyx_v_tv;
  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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":3989
 *         :rtype: timedelta
 *         """
 *         tv = cscamper_tracelb.scamper_tracelb_wait_timeout_get(self._c)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
*/
  __pyx_v_tv = scamper_tracelb_wait_timeout_get(__pyx_v_self->_c);

  /* "scamper.pyx":3990
 *         """
 *         tv = cscamper_tracelb.scamper_tracelb_wait_timeout_get(self._c)
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3990, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 3990, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 3990, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3990, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3980
 *         return cscamper_tracelb.scamper_tracelb_tos_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_timeout(self):
 *         """
*/

  /* 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_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperTracelb.wait_timeout.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3992
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_probe(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_10wait_probe_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_10wait_probe_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_10wait_probe___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10wait_probe___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  struct timeval const *__pyx_v_tv;
  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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":4000
 *         :rtype: timedelta
 *         """
 *         tv = cscamper_tracelb.scamper_tracelb_wait_probe_get(self._c)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
*/
  __pyx_v_tv = scamper_tracelb_wait_probe_get(__pyx_v_self->_c);

  /* "scamper.pyx":4001
 *         """
 *         tv = cscamper_tracelb.scamper_tracelb_wait_probe_get(self._c)
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4001, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4001, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 4001, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 4001, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4001, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":3992
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_probe(self):
 *         """
*/

  /* 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_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperTracelb.wait_probe.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4003
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def confidence(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_10confidence_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_10confidence_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_10confidence___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10confidence___get__(struct __pyx_obj_7scamper_ScamperTracelb *__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("__get__", 0);

  /* "scamper.pyx":4012
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_confidence_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tracelb_confidence_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4003
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def confidence(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.confidence.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4014
 *         return cscamper_tracelb.scamper_tracelb_confidence_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_11probe_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_11probe_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_11probe_count___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_11probe_count___get__(struct __pyx_obj_7scamper_ScamperTracelb *__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("__get__", 0);

  /* "scamper.pyx":4023
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_probec_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_tracelb_probec_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4014
 *         return cscamper_tracelb.scamper_tracelb_confidence_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.probe_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4025
 *         return cscamper_tracelb.scamper_tracelb_probec_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_size(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_10probe_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_10probe_size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_10probe_size___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_10probe_size___get__(struct __pyx_obj_7scamper_ScamperTracelb *__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("__get__", 0);

  /* "scamper.pyx":4033
 *         :rtype: int
 *         """
 *         return cscamper_tracelb.scamper_tracelb_probe_size_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_probe_size_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4033, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4025
 *         return cscamper_tracelb.scamper_tracelb_probec_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_size(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.probe_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4035
 *         return cscamper_tracelb.scamper_tracelb_probe_size_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_sport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_11probe_sport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_11probe_sport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_11probe_sport___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_11probe_sport___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":4044
 *         :rtype: int
 *         """
 *         if (cscamper_tracelb.scamper_tracelb_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):
 *             return cscamper_tracelb.scamper_tracelb_sport_get(self._c)
*/
  __pyx_t_2 = scamper_tracelb_type_is_udp(__pyx_v_self->_c);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }

  /* "scamper.pyx":4045
 *         """
 *         if (cscamper_tracelb.scamper_tracelb_type_is_udp(self._c) or
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):             # <<<<<<<<<<<<<<
 *             return cscamper_tracelb.scamper_tracelb_sport_get(self._c)
 *         return None
*/
  __pyx_t_2 = scamper_tracelb_type_is_tcp(__pyx_v_self->_c);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;

  /* "scamper.pyx":4044
 *         :rtype: int
 *         """
 *         if (cscamper_tracelb.scamper_tracelb_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):
 *             return cscamper_tracelb.scamper_tracelb_sport_get(self._c)
*/
  if (__pyx_t_1) {

    /* "scamper.pyx":4046
 *         if (cscamper_tracelb.scamper_tracelb_type_is_udp(self._c) or
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):
 *             return cscamper_tracelb.scamper_tracelb_sport_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_sport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":4044
 *         :rtype: int
 *         """
 *         if (cscamper_tracelb.scamper_tracelb_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):
 *             return cscamper_tracelb.scamper_tracelb_sport_get(self._c)
*/
  }

  /* "scamper.pyx":4047
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):
 *             return cscamper_tracelb.scamper_tracelb_sport_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":4035
 *         return cscamper_tracelb.scamper_tracelb_probe_size_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_sport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelb.probe_sport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4049
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_dport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_11probe_dport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_11probe_dport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_11probe_dport___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_11probe_dport___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":4058
 *         :rtype: int
 *         """
 *         if (cscamper_tracelb.scamper_tracelb_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):
 *             return cscamper_tracelb.scamper_tracelb_dport_get(self._c)
*/
  __pyx_t_2 = scamper_tracelb_type_is_udp(__pyx_v_self->_c);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }

  /* "scamper.pyx":4059
 *         """
 *         if (cscamper_tracelb.scamper_tracelb_type_is_udp(self._c) or
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):             # <<<<<<<<<<<<<<
 *             return cscamper_tracelb.scamper_tracelb_dport_get(self._c)
 *         return None
*/
  __pyx_t_2 = scamper_tracelb_type_is_tcp(__pyx_v_self->_c);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;

  /* "scamper.pyx":4058
 *         :rtype: int
 *         """
 *         if (cscamper_tracelb.scamper_tracelb_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):
 *             return cscamper_tracelb.scamper_tracelb_dport_get(self._c)
*/
  if (__pyx_t_1) {

    /* "scamper.pyx":4060
 *         if (cscamper_tracelb.scamper_tracelb_type_is_udp(self._c) or
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):
 *             return cscamper_tracelb.scamper_tracelb_dport_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_dport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4060, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":4058
 *         :rtype: int
 *         """
 *         if (cscamper_tracelb.scamper_tracelb_type_is_udp(self._c) or             # <<<<<<<<<<<<<<
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):
 *             return cscamper_tracelb.scamper_tracelb_dport_get(self._c)
*/
  }

  /* "scamper.pyx":4061
 *             cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)):
 *             return cscamper_tracelb.scamper_tracelb_dport_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":4049
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_dport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTracelb.probe_dport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4063
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_icmp_id(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_13probe_icmp_id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_13probe_icmp_id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_13probe_icmp_id___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_13probe_icmp_id___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":4072
 *         :rtype: int
 *         """
 *         if cscamper_tracelb.scamper_tracelb_type_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_tracelb.scamper_tracelb_sport_get(self._c)
 *         return None
*/
  __pyx_t_1 = scamper_tracelb_type_is_icmp(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":4073
 *         """
 *         if cscamper_tracelb.scamper_tracelb_type_is_icmp(self._c):
 *             return cscamper_tracelb.scamper_tracelb_sport_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_tracelb_sport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4073, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":4072
 *         :rtype: int
 *         """
 *         if cscamper_tracelb.scamper_tracelb_type_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_tracelb.scamper_tracelb_sport_get(self._c)
 *         return None
*/
  }

  /* "scamper.pyx":4074
 *         if cscamper_tracelb.scamper_tracelb_type_is_icmp(self._c):
 *             return cscamper_tracelb.scamper_tracelb_sport_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     def is_udp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":4063
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_icmp_id(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTracelb.probe_icmp_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4076
 *         return None
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this measurement used UDP probes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_17is_udp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperTracelb_16is_udp, "\n        get method to determine if this measurement used UDP probes.\n\n        :returns: True if this measurement used UDP probes.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperTracelb_17is_udp = {"is_udp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_17is_udp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_16is_udp};
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_17is_udp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_udp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_udp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_udp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_16is_udp(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_16is_udp(struct __pyx_obj_7scamper_ScamperTracelb *__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("is_udp", 0);

  /* "scamper.pyx":4083
 *         :rtype: bool
 *         """
 *         return cscamper_tracelb.scamper_tracelb_type_is_udp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_tcp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_tracelb_type_is_udp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4076
 *         return None
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this measurement used UDP probes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.is_udp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4085
 *         return cscamper_tracelb.scamper_tracelb_type_is_udp(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this measurement used TCP probes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_19is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperTracelb_18is_tcp, "\n        get method to determine if this measurement used TCP probes.\n\n        :returns: True if this measurement used TCP probes.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperTracelb_19is_tcp = {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_19is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_18is_tcp};
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_19is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tcp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tcp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tcp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_18is_tcp(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_18is_tcp(struct __pyx_obj_7scamper_ScamperTracelb *__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("is_tcp", 0);

  /* "scamper.pyx":4092
 *         :rtype: bool
 *         """
 *         return cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_tracelb_type_is_tcp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4092, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4085
 *         return cscamper_tracelb.scamper_tracelb_type_is_udp(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this measurement used TCP probes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.is_tcp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4094
 *         return cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this measurement used ICMP probes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_21is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperTracelb_20is_icmp, "\n        get method to determine if this measurement used ICMP probes.\n\n        :returns: True if this measurement used ICMP probes.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperTracelb_21is_icmp = {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_21is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_20is_icmp};
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_21is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_20is_icmp(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_20is_icmp(struct __pyx_obj_7scamper_ScamperTracelb *__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("is_icmp", 0);

  /* "scamper.pyx":4101
 *         :rtype: bool
 *         """
 *         return cscamper_tracelb.scamper_tracelb_type_is_icmp(self._c)             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_tracelb_type_is_icmp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4094
 *         return cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this measurement used ICMP probes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb.is_icmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":3736
 *     """
 *     cdef cscamper_tracelb.scamper_tracelb_t *_c
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_5_inst___get__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_5_inst___get__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperTracelb_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_14ScamperTracelb_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperTracelb_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 3736, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTracelb._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperTracelb_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_14ScamperTracelb_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperTracelb_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_23__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperTracelb_23__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_23__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_23__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_22__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_22__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelb.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_25__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperTracelb_25__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_25__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperTracelb_25__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTracelb.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperTracelb_24__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTracelb_24__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTracelb *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTracelb.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4115
 *     cdef bint _fromdst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be insantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_19ScamperDealiasReply_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_19ScamperDealiasReply_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply___init__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_19ScamperDealiasReply___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":4116
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be insantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_insantiated};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4116, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 4116, __pyx_L1_error)

  /* "scamper.pyx":4115
 *     cdef bint _fromdst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be insantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4118
 *         raise TypeError("This class cannot be insantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_reply_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_19ScamperDealiasReply_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_19ScamperDealiasReply_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_19ScamperDealiasReply_2__dealloc__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_19ScamperDealiasReply_2__dealloc__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":4119
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_reply_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4120
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_reply_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_dealias_reply_free(__pyx_v_self->_c);

    /* "scamper.pyx":4119
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_reply_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":4118
 *         raise TypeError("This class cannot be insantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_reply_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":4122
 *             cscamper_dealias.scamper_dealias_reply_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperDealiasReply from_ptr(cscamper_dealias.scamper_dealias_reply_t *ptr,
 *                                       cscamper_dealias.scamper_dealias_probe_t *probe):
*/

static struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_f_7scamper_19ScamperDealiasReply_from_ptr(scamper_dealias_reply_t *__pyx_v_ptr, scamper_dealias_probe_t *__pyx_v_probe) {
  struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_r = 0;
  struct __pyx_obj_7scamper_ScamperDealiasReply *__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("from_ptr", 0);

  /* "scamper.pyx":4126
 *                                       cscamper_dealias.scamper_dealias_probe_t *probe):
 *         cdef ScamperDealiasReply r
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         r = ScamperDealiasReply.__new__(ScamperDealiasReply)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4127
 *         cdef ScamperDealiasReply r
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         r = ScamperDealiasReply.__new__(ScamperDealiasReply)
 *         r._c = cscamper_dealias.scamper_dealias_reply_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperDealiasReply *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4126
 *                                       cscamper_dealias.scamper_dealias_probe_t *probe):
 *         cdef ScamperDealiasReply r
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         r = ScamperDealiasReply.__new__(ScamperDealiasReply)
*/
  }

  /* "scamper.pyx":4128
 *         if ptr == NULL:
 *             return None
 *         r = ScamperDealiasReply.__new__(ScamperDealiasReply)             # <<<<<<<<<<<<<<
 *         r._c = cscamper_dealias.scamper_dealias_reply_use(ptr)
 *         r._fromdst = cscamper_dealias.scamper_dealias_reply_from_target(probe, ptr)
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperDealiasReply(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasReply), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4128, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_r = ((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":4129
 *             return None
 *         r = ScamperDealiasReply.__new__(ScamperDealiasReply)
 *         r._c = cscamper_dealias.scamper_dealias_reply_use(ptr)             # <<<<<<<<<<<<<<
 *         r._fromdst = cscamper_dealias.scamper_dealias_reply_from_target(probe, ptr)
 *         return r
*/
  __pyx_v_r->_c = scamper_dealias_reply_use(__pyx_v_ptr);

  /* "scamper.pyx":4130
 *         r = ScamperDealiasReply.__new__(ScamperDealiasReply)
 *         r._c = cscamper_dealias.scamper_dealias_reply_use(ptr)
 *         r._fromdst = cscamper_dealias.scamper_dealias_reply_from_target(probe, ptr)             # <<<<<<<<<<<<<<
 *         return r
 * 
*/
  __pyx_v_r->_fromdst = scamper_dealias_reply_from_target(__pyx_v_probe, __pyx_v_ptr);

  /* "scamper.pyx":4131
 *         r._c = cscamper_dealias.scamper_dealias_reply_use(ptr)
 *         r._fromdst = cscamper_dealias.scamper_dealias_reply_from_target(probe, ptr)
 *         return r             # <<<<<<<<<<<<<<
 * 
 *     def is_from_target(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_r);
  __pyx_r = __pyx_v_r;
  goto __pyx_L0;

  /* "scamper.pyx":4122
 *             cscamper_dealias.scamper_dealias_reply_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperDealiasReply from_ptr(cscamper_dealias.scamper_dealias_reply_t *ptr,
 *                                       cscamper_dealias.scamper_dealias_probe_t *probe):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_r);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4133
 *         return r
 * 
 *     def is_from_target(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply came from the target.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_5is_from_target(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_19ScamperDealiasReply_4is_from_target, "\n        get method to determine if the reply came from the target.\n\n        :returns: True if the reply came from the target.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasReply_5is_from_target = {"is_from_target", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_5is_from_target, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_4is_from_target};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_5is_from_target(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_from_target (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_from_target", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_from_target", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_4is_from_target(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_4is_from_target(struct __pyx_obj_7scamper_ScamperDealiasReply *__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("is_from_target", 0);

  /* "scamper.pyx":4140
 *         :rtype: bool
 *         """
 *         return self._fromdst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_fromdst); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4140, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4133
 *         return r
 * 
 *     def is_from_target(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply came from the target.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.is_from_target", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4142
 *         return self._fromdst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_3src___get__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_3src___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":4150
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_dealias.scamper_dealias_reply_src_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_dealias_reply_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":4151
 *         """
 *         c_a = cscamper_dealias.scamper_dealias_reply_src_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4151, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4142
 *         return self._fromdst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4153
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_2rx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_2rx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_2rx___get__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_2rx___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":4161
 *         :rtype: datetime
 *         """
 *         c = cscamper_dealias.scamper_dealias_reply_rx_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL or (c.tv_sec == 0 and c.tv_usec == 0):
 *             return None
*/
  __pyx_v_c = scamper_dealias_reply_rx_get(__pyx_v_self->_c);

  /* "scamper.pyx":4162
 *         """
 *         c = cscamper_dealias.scamper_dealias_reply_rx_get(self._c)
 *         if c == NULL or (c.tv_sec == 0 and c.tv_usec == 0):             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_2 = (__pyx_v_c == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_c->tv_sec == 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_c->tv_usec == 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":4163
 *         c = cscamper_dealias.scamper_dealias_reply_rx_get(self._c)
 *         if c == NULL or (c.tv_sec == 0 and c.tv_usec == 0):
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4162
 *         """
 *         c = cscamper_dealias.scamper_dealias_reply_rx_get(self._c)
 *         if c == NULL or (c.tv_sec == 0 and c.tv_usec == 0):             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":4164
 *         if c == NULL or (c.tv_sec == 0 and c.tv_usec == 0):
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 4164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4164, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4164, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_t = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":4165
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4165, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);

  /* "scamper.pyx":4166
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 4166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, __pyx_t_5, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13};
    __pyx_t_15 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 4165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_14, __pyx_t_15, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 4165, __pyx_L1_error)
    __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_7, (8-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_15);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4165, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4153
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.rx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4168
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_3ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_3ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_3ttl___get__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_3ttl___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__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("__get__", 0);

  /* "scamper.pyx":4177
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_reply_ttl_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_dealias_reply_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4177, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4168
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4179
 *         return cscamper_dealias.scamper_dealias_reply_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def size(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_4size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_4size___get__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_4size___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__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("__get__", 0);

  /* "scamper.pyx":4187
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_reply_size_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_dealias_reply_size_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4187, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4179
 *         return cscamper_dealias.scamper_dealias_reply_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def size(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4189
 *         return cscamper_dealias.scamper_dealias_reply_size_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tcp_flags(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_9tcp_flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_9tcp_flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_9tcp_flags___get__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_9tcp_flags___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":4198
 *         :rtype: int
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_tcp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_tcp_flags_get(self._c)
*/
  __pyx_t_1 = (!scamper_dealias_reply_is_tcp(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":4199
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_tcp(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_dealias.scamper_dealias_reply_tcp_flags_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4198
 *         :rtype: int
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_tcp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_tcp_flags_get(self._c)
*/
  }

  /* "scamper.pyx":4200
 *         if not cscamper_dealias.scamper_dealias_reply_is_tcp(self._c):
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_tcp_flags_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_dealias_reply_tcp_flags_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4189
 *         return cscamper_dealias.scamper_dealias_reply_size_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tcp_flags(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.tcp_flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4202
 *         return cscamper_dealias.scamper_dealias_reply_tcp_flags_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_type(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_9icmp_type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_9icmp_type_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_9icmp_type___get__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_9icmp_type___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":4211
 *         :rtype: int
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_icmp_type_get(self._c)
*/
  __pyx_t_1 = (!scamper_dealias_reply_is_icmp(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":4212
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_dealias.scamper_dealias_reply_icmp_type_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4211
 *         :rtype: int
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_icmp_type_get(self._c)
*/
  }

  /* "scamper.pyx":4213
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp(self._c):
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_icmp_type_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_dealias_reply_icmp_type_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4213, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4202
 *         return cscamper_dealias.scamper_dealias_reply_tcp_flags_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_type(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.icmp_type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4215
 *         return cscamper_dealias.scamper_dealias_reply_icmp_type_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_code(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_9icmp_code_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_9icmp_code_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_9icmp_code___get__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_9icmp_code___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":4224
 *         :rtype: int
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_icmp_code_get(self._c)
*/
  __pyx_t_1 = (!scamper_dealias_reply_is_icmp(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":4225
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_dealias.scamper_dealias_reply_icmp_code_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4224
 *         :rtype: int
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_icmp_code_get(self._c)
*/
  }

  /* "scamper.pyx":4226
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp(self._c):
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_icmp_code_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_dealias_reply_icmp_code_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4226, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4215
 *         return cscamper_dealias.scamper_dealias_reply_icmp_type_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_code(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.icmp_code.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4228
 *         return cscamper_dealias.scamper_dealias_reply_icmp_code_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_10icmp_q_ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_10icmp_q_ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_10icmp_q_ttl___get__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_10icmp_q_ttl___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":4237
 *         :rtype: int
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp_q(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_icmp_q_ttl_get(self._c)
*/
  __pyx_t_1 = (!scamper_dealias_reply_is_icmp_q(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":4238
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp_q(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_dealias.scamper_dealias_reply_icmp_q_ttl_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4237
 *         :rtype: int
 *         """
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp_q(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_icmp_q_ttl_get(self._c)
*/
  }

  /* "scamper.pyx":4239
 *         if not cscamper_dealias.scamper_dealias_reply_is_icmp_q(self._c):
 *             return None
 *         return cscamper_dealias.scamper_dealias_reply_icmp_q_ttl_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(scamper_dealias_reply_icmp_q_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4239, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4228
 *         return cscamper_dealias.scamper_dealias_reply_icmp_code_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_q_ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.icmp_q_ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4241
 *         return cscamper_dealias.scamper_dealias_reply_icmp_q_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ipid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_4ipid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_4ipid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_4ipid___get__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_4ipid___get__(struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self) {
  scamper_addr_t *__pyx_v_sa;
  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("__get__", 0);

  /* "scamper.pyx":4249
 *         :rtype: int
 *         """
 *         sa = cscamper_dealias.scamper_dealias_reply_src_get(self._c)             # <<<<<<<<<<<<<<
 *         if sa == NULL:
 *             return None
*/
  __pyx_v_sa = scamper_dealias_reply_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":4250
 *         """
 *         sa = cscamper_dealias.scamper_dealias_reply_src_get(self._c)
 *         if sa == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if cscamper_addr.scamper_addr_isipv4(sa):
*/
  __pyx_t_1 = (__pyx_v_sa == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4251
 *         sa = cscamper_dealias.scamper_dealias_reply_src_get(self._c)
 *         if sa == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         if cscamper_addr.scamper_addr_isipv4(sa):
 *             return cscamper_dealias.scamper_dealias_reply_ipid_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4250
 *         """
 *         sa = cscamper_dealias.scamper_dealias_reply_src_get(self._c)
 *         if sa == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         if cscamper_addr.scamper_addr_isipv4(sa):
*/
  }

  /* "scamper.pyx":4252
 *         if sa == NULL:
 *             return None
 *         if cscamper_addr.scamper_addr_isipv4(sa):             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_reply_ipid_get(self._c)
 *         elif cscamper_dealias.scamper_dealias_reply_is_ipid32(self._c):
*/
  __pyx_t_1 = scamper_addr_isipv4(__pyx_v_sa);
  if (__pyx_t_1) {

    /* "scamper.pyx":4253
 *             return None
 *         if cscamper_addr.scamper_addr_isipv4(sa):
 *             return cscamper_dealias.scamper_dealias_reply_ipid_get(self._c)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_reply_is_ipid32(self._c):
 *             return cscamper_dealias.scamper_dealias_reply_ipid32_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_dealias_reply_ipid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4253, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":4252
 *         if sa == NULL:
 *             return None
 *         if cscamper_addr.scamper_addr_isipv4(sa):             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_reply_ipid_get(self._c)
 *         elif cscamper_dealias.scamper_dealias_reply_is_ipid32(self._c):
*/
  }

  /* "scamper.pyx":4254
 *         if cscamper_addr.scamper_addr_isipv4(sa):
 *             return cscamper_dealias.scamper_dealias_reply_ipid_get(self._c)
 *         elif cscamper_dealias.scamper_dealias_reply_is_ipid32(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_reply_ipid32_get(self._c)
 *         return None
*/
  __pyx_t_1 = scamper_dealias_reply_is_ipid32(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":4255
 *             return cscamper_dealias.scamper_dealias_reply_ipid_get(self._c)
 *         elif cscamper_dealias.scamper_dealias_reply_is_ipid32(self._c):
 *             return cscamper_dealias.scamper_dealias_reply_ipid32_get(self._c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_dealias_reply_ipid32_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4255, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":4254
 *         if cscamper_addr.scamper_addr_isipv4(sa):
 *             return cscamper_dealias.scamper_dealias_reply_ipid_get(self._c)
 *         elif cscamper_dealias.scamper_dealias_reply_is_ipid32(self._c):             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_reply_ipid32_get(self._c)
 *         return None
*/
  }

  /* "scamper.pyx":4256
 *         elif cscamper_dealias.scamper_dealias_reply_is_ipid32(self._c):
 *             return cscamper_dealias.scamper_dealias_reply_ipid32_get(self._c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     def is_tcp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":4241
 *         return cscamper_dealias.scamper_dealias_reply_icmp_q_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ipid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.ipid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4258
 *         return None
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a TCP packet.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_7is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_19ScamperDealiasReply_6is_tcp, "\n        get method to determine if the response was a TCP packet.\n\n        :returns: True if the response was a TCP packet.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasReply_7is_tcp = {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_7is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_6is_tcp};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_7is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tcp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tcp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tcp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_6is_tcp(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_6is_tcp(struct __pyx_obj_7scamper_ScamperDealiasReply *__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("is_tcp", 0);

  /* "scamper.pyx":4265
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_reply_is_tcp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_reply_is_tcp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4265, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4258
 *         return None
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a TCP packet.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.is_tcp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4267
 *         return cscamper_dealias.scamper_dealias_reply_is_tcp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a ICMP packet.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_9is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_19ScamperDealiasReply_8is_icmp, "\n        get method to determine if the response was a ICMP packet.\n\n        :returns: True if the response was an ICMP packet.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasReply_9is_icmp = {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_9is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_8is_icmp};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_9is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_8is_icmp(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_8is_icmp(struct __pyx_obj_7scamper_ScamperDealiasReply *__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("is_icmp", 0);

  /* "scamper.pyx":4274
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_ttl_exp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_reply_is_icmp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4274, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4267
 *         return cscamper_dealias.scamper_dealias_reply_is_tcp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a ICMP packet.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.is_icmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4276
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp(self._c)
 * 
 *     def is_icmp_ttl_exp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP TTL expired
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_11is_icmp_ttl_exp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_19ScamperDealiasReply_10is_icmp_ttl_exp, "\n        get method to determine if the response was an ICMP TTL expired\n        (time exceeded)\n\n        :returns: True if the response was an ICMP TTL expired message\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasReply_11is_icmp_ttl_exp = {"is_icmp_ttl_exp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_11is_icmp_ttl_exp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_10is_icmp_ttl_exp};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_11is_icmp_ttl_exp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_ttl_exp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_ttl_exp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_ttl_exp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_10is_icmp_ttl_exp(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_10is_icmp_ttl_exp(struct __pyx_obj_7scamper_ScamperDealiasReply *__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("is_icmp_ttl_exp", 0);

  /* "scamper.pyx":4284
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp_ttl_exp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_unreach(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_reply_is_icmp_ttl_exp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4284, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4276
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp(self._c)
 * 
 *     def is_icmp_ttl_exp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP TTL expired
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.is_icmp_ttl_exp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4286
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp_ttl_exp(self._c)
 * 
 *     def is_icmp_unreach(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP destination unreachable
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_13is_icmp_unreach(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_19ScamperDealiasReply_12is_icmp_unreach, "\n        get method to determine if the reply was an ICMP destination unreachable\n\n        :returns: True if the reply was an ICMP destination unreachable.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasReply_13is_icmp_unreach = {"is_icmp_unreach", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_13is_icmp_unreach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_12is_icmp_unreach};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_13is_icmp_unreach(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_unreach (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_unreach", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_unreach", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_12is_icmp_unreach(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_12is_icmp_unreach(struct __pyx_obj_7scamper_ScamperDealiasReply *__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("is_icmp_unreach", 0);

  /* "scamper.pyx":4293
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp_unreach(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp_unreach_port(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_reply_is_icmp_unreach(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4293, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4286
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp_ttl_exp(self._c)
 * 
 *     def is_icmp_unreach(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP destination unreachable
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.is_icmp_unreach", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4295
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp_unreach(self._c)
 * 
 *     def is_icmp_unreach_port(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP port unreachable
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_15is_icmp_unreach_port(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_19ScamperDealiasReply_14is_icmp_unreach_port, "\n        get method to determine if the response was an ICMP port unreachable\n        message\n\n        :returns: True if the response was an ICMP port unreachable\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasReply_15is_icmp_unreach_port = {"is_icmp_unreach_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_15is_icmp_unreach_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_14is_icmp_unreach_port};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_15is_icmp_unreach_port(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp_unreach_port (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp_unreach_port", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp_unreach_port", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_14is_icmp_unreach_port(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_14is_icmp_unreach_port(struct __pyx_obj_7scamper_ScamperDealiasReply *__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("is_icmp_unreach_port", 0);

  /* "scamper.pyx":4303
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp_unreach_port(self._c)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperDealiasMidardiscRound:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_reply_is_icmp_unreach_port(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4295
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp_unreach(self._c)
 * 
 *     def is_icmp_unreach_port(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP port unreachable
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.is_icmp_unreach_port", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_17__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasReply_17__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_17__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_17__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_16__reduce_cython__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_16__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_19__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasReply_19__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_19__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasReply_19__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasReply_18__setstate_cython__(((struct __pyx_obj_7scamper_ScamperDealiasReply *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasReply_18__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasReply *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperDealiasReply.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4320
 *     cdef cscamper_dealias.scamper_dealias_midardisc_round_t *_c
 * 
 *     def __init__(self, start, begin, end):             # <<<<<<<<<<<<<<
 *         cdef timeval tv
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_28ScamperDealiasMidardiscRound_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_28ScamperDealiasMidardiscRound_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_start = 0;
  PyObject *__pyx_v_begin = 0;
  PyObject *__pyx_v_end = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_start,&__pyx_mstate_global->__pyx_n_u_begin,&__pyx_mstate_global->__pyx_n_u_end,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4320, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 4320, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4320, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4320, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 4320, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 4320, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4320, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4320, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 4320, __pyx_L3_error)
    }
    __pyx_v_start = values[0];
    __pyx_v_begin = values[1];
    __pyx_v_end = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 4320, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperDealiasMidardiscRound.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_28ScamperDealiasMidardiscRound___init__(((struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *)__pyx_v_self), __pyx_v_start, __pyx_v_begin, __pyx_v_end);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_28ScamperDealiasMidardiscRound___init__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self, PyObject *__pyx_v_start, PyObject *__pyx_v_begin, PyObject *__pyx_v_end) {
  struct timeval __pyx_v_tv;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  time_t __pyx_t_7;
  suseconds_t __pyx_t_8;
  uint32_t __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":4323
 *         cdef timeval tv
 * 
 *         self._c = cscamper_dealias.scamper_dealias_midardisc_round_alloc()             # <<<<<<<<<<<<<<
 *         if self._c == NULL:
 *             raise MemoryError()
*/
  __pyx_v_self->_c = scamper_dealias_midardisc_round_alloc();

  /* "scamper.pyx":4324
 * 
 *         self._c = cscamper_dealias.scamper_dealias_midardisc_round_alloc()
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":4325
 *         self._c = cscamper_dealias.scamper_dealias_midardisc_round_alloc()
 *         if self._c == NULL:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         if not isinstance(start, datetime.timedelta):
*/
    PyErr_NoMemory(); __PYX_ERR(0, 4325, __pyx_L1_error)

    /* "scamper.pyx":4324
 * 
 *         self._c = cscamper_dealias.scamper_dealias_midardisc_round_alloc()
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
*/
  }

  /* "scamper.pyx":4327
 *             raise MemoryError()
 * 
 *         if not isinstance(start, datetime.timedelta):             # <<<<<<<<<<<<<<
 *             raise TypeError("expected timedelta for start")
 *         if not isinstance(begin, int):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4327, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = PyObject_IsInstance(__pyx_v_start, __pyx_t_3); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 4327, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = (!__pyx_t_1);
  if (unlikely(__pyx_t_4)) {

    /* "scamper.pyx":4328
 * 
 *         if not isinstance(start, datetime.timedelta):
 *             raise TypeError("expected timedelta for start")             # <<<<<<<<<<<<<<
 *         if not isinstance(begin, int):
 *             raise TypeError("expected int for begin")
*/
    __pyx_t_2 = NULL;
    __Pyx_INCREF(__pyx_builtin_TypeError);
    __pyx_t_5 = __pyx_builtin_TypeError; 
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_expected_timedelta_for_start};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4328, __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_ERR(0, 4328, __pyx_L1_error)

    /* "scamper.pyx":4327
 *             raise MemoryError()
 * 
 *         if not isinstance(start, datetime.timedelta):             # <<<<<<<<<<<<<<
 *             raise TypeError("expected timedelta for start")
 *         if not isinstance(begin, int):
*/
  }

  /* "scamper.pyx":4329
 *         if not isinstance(start, datetime.timedelta):
 *             raise TypeError("expected timedelta for start")
 *         if not isinstance(begin, int):             # <<<<<<<<<<<<<<
 *             raise TypeError("expected int for begin")
 *         if not isinstance(end, int):
*/
  __pyx_t_4 = PyLong_Check(__pyx_v_begin); 
  __pyx_t_1 = (!__pyx_t_4);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":4330
 *             raise TypeError("expected timedelta for start")
 *         if not isinstance(begin, int):
 *             raise TypeError("expected int for begin")             # <<<<<<<<<<<<<<
 *         if not isinstance(end, int):
 *             raise TypeError("expected int for end")
*/
    __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_builtin_TypeError);
    __pyx_t_2 = __pyx_builtin_TypeError; 
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_expected_int_for_begin};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4330, __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_ERR(0, 4330, __pyx_L1_error)

    /* "scamper.pyx":4329
 *         if not isinstance(start, datetime.timedelta):
 *             raise TypeError("expected timedelta for start")
 *         if not isinstance(begin, int):             # <<<<<<<<<<<<<<
 *             raise TypeError("expected int for begin")
 *         if not isinstance(end, int):
*/
  }

  /* "scamper.pyx":4331
 *         if not isinstance(begin, int):
 *             raise TypeError("expected int for begin")
 *         if not isinstance(end, int):             # <<<<<<<<<<<<<<
 *             raise TypeError("expected int for end")
 * 
*/
  __pyx_t_1 = PyLong_Check(__pyx_v_end); 
  __pyx_t_4 = (!__pyx_t_1);
  if (unlikely(__pyx_t_4)) {

    /* "scamper.pyx":4332
 *             raise TypeError("expected int for begin")
 *         if not isinstance(end, int):
 *             raise TypeError("expected int for end")             # <<<<<<<<<<<<<<
 * 
 *         tv.tv_sec = start.seconds
*/
    __pyx_t_2 = NULL;
    __Pyx_INCREF(__pyx_builtin_TypeError);
    __pyx_t_5 = __pyx_builtin_TypeError; 
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_expected_int_for_end};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4332, __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_ERR(0, 4332, __pyx_L1_error)

    /* "scamper.pyx":4331
 *         if not isinstance(begin, int):
 *             raise TypeError("expected int for begin")
 *         if not isinstance(end, int):             # <<<<<<<<<<<<<<
 *             raise TypeError("expected int for end")
 * 
*/
  }

  /* "scamper.pyx":4334
 *             raise TypeError("expected int for end")
 * 
 *         tv.tv_sec = start.seconds             # <<<<<<<<<<<<<<
 *         tv.tv_usec = start.microseconds
 *         cscamper_dealias.scamper_dealias_midardisc_round_start_set(self._c, &tv)
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_start, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4334, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = __Pyx_PyLong_As_time_t(__pyx_t_3); if (unlikely((__pyx_t_7 == ((time_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4334, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_tv.tv_sec = __pyx_t_7;

  /* "scamper.pyx":4335
 * 
 *         tv.tv_sec = start.seconds
 *         tv.tv_usec = start.microseconds             # <<<<<<<<<<<<<<
 *         cscamper_dealias.scamper_dealias_midardisc_round_start_set(self._c, &tv)
 *         cscamper_dealias.scamper_dealias_midardisc_round_begin_set(self._c, begin)
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_start, __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyLong_As_suseconds_t(__pyx_t_3); if (unlikely((__pyx_t_8 == ((suseconds_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_tv.tv_usec = __pyx_t_8;

  /* "scamper.pyx":4336
 *         tv.tv_sec = start.seconds
 *         tv.tv_usec = start.microseconds
 *         cscamper_dealias.scamper_dealias_midardisc_round_start_set(self._c, &tv)             # <<<<<<<<<<<<<<
 *         cscamper_dealias.scamper_dealias_midardisc_round_begin_set(self._c, begin)
 *         cscamper_dealias.scamper_dealias_midardisc_round_end_set(self._c, end)
*/
  scamper_dealias_midardisc_round_start_set(__pyx_v_self->_c, (&__pyx_v_tv));

  /* "scamper.pyx":4337
 *         tv.tv_usec = start.microseconds
 *         cscamper_dealias.scamper_dealias_midardisc_round_start_set(self._c, &tv)
 *         cscamper_dealias.scamper_dealias_midardisc_round_begin_set(self._c, begin)             # <<<<<<<<<<<<<<
 *         cscamper_dealias.scamper_dealias_midardisc_round_end_set(self._c, end)
 * 
*/
  __pyx_t_9 = __Pyx_PyLong_As_uint32_t(__pyx_v_begin); if (unlikely((__pyx_t_9 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4337, __pyx_L1_error)
  scamper_dealias_midardisc_round_begin_set(__pyx_v_self->_c, __pyx_t_9);

  /* "scamper.pyx":4338
 *         cscamper_dealias.scamper_dealias_midardisc_round_start_set(self._c, &tv)
 *         cscamper_dealias.scamper_dealias_midardisc_round_begin_set(self._c, begin)
 *         cscamper_dealias.scamper_dealias_midardisc_round_end_set(self._c, end)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_9 = __Pyx_PyLong_As_uint32_t(__pyx_v_end); if (unlikely((__pyx_t_9 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4338, __pyx_L1_error)
  scamper_dealias_midardisc_round_end_set(__pyx_v_self->_c, __pyx_t_9);

  /* "scamper.pyx":4320
 *     cdef cscamper_dealias.scamper_dealias_midardisc_round_t *_c
 * 
 *     def __init__(self, start, begin, end):             # <<<<<<<<<<<<<<
 *         cdef timeval tv
 * 
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperDealiasMidardiscRound.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4340
 *         cscamper_dealias.scamper_dealias_midardisc_round_end_set(self._c, end)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_midardisc_round_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_28ScamperDealiasMidardiscRound_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_28ScamperDealiasMidardiscRound_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_28ScamperDealiasMidardiscRound_2__dealloc__(((struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_28ScamperDealiasMidardiscRound_2__dealloc__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":4341
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_midardisc_round_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4342
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_midardisc_round_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    scamper_dealias_midardisc_round_free(__pyx_v_self->_c);

    /* "scamper.pyx":4341
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_midardisc_round_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":4340
 *         cscamper_dealias.scamper_dealias_midardisc_round_end_set(self._c, end)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_midardisc_round_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":4344
 *             cscamper_dealias.scamper_dealias_midardisc_round_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef const timeval *start
 *         cdef uint32_t begin
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_28ScamperDealiasMidardiscRound_4__str__(((struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_4__str__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self) {
  struct timeval const *__pyx_v_start;
  uint32_t __pyx_v_begin;
  uint32_t __pyx_v_end;
  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;
  PyObject *__pyx_t_6[7];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":4348
 *         cdef uint32_t begin
 *         cdef uint32_t end
 *         start = cscamper_dealias.scamper_dealias_midardisc_round_start_get(self._c)             # <<<<<<<<<<<<<<
 *         begin = cscamper_dealias.scamper_dealias_midardisc_round_begin_get(self._c)
 *         end = cscamper_dealias.scamper_dealias_midardisc_round_end_get(self._c)
*/
  __pyx_v_start = scamper_dealias_midardisc_round_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":4349
 *         cdef uint32_t end
 *         start = cscamper_dealias.scamper_dealias_midardisc_round_start_get(self._c)
 *         begin = cscamper_dealias.scamper_dealias_midardisc_round_begin_get(self._c)             # <<<<<<<<<<<<<<
 *         end = cscamper_dealias.scamper_dealias_midardisc_round_end_get(self._c)
 *         return f"{start.tv_sec}.{start.tv_usec:06}:{begin}:{end}"
*/
  __pyx_v_begin = scamper_dealias_midardisc_round_begin_get(__pyx_v_self->_c);

  /* "scamper.pyx":4350
 *         start = cscamper_dealias.scamper_dealias_midardisc_round_start_get(self._c)
 *         begin = cscamper_dealias.scamper_dealias_midardisc_round_begin_get(self._c)
 *         end = cscamper_dealias.scamper_dealias_midardisc_round_end_get(self._c)             # <<<<<<<<<<<<<<
 *         return f"{start.tv_sec}.{start.tv_usec:06}:{begin}:{end}"
 * 
*/
  __pyx_v_end = scamper_dealias_midardisc_round_end_get(__pyx_v_self->_c);

  /* "scamper.pyx":4351
 *         begin = cscamper_dealias.scamper_dealias_midardisc_round_begin_get(self._c)
 *         end = cscamper_dealias.scamper_dealias_midardisc_round_end_get(self._c)
 *         return f"{start.tv_sec}.{start.tv_usec:06}:{begin}:{end}"             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_time_t(__pyx_v_start->tv_sec); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyLong_From_suseconds_t(__pyx_v_start->tv_usec); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyObject_Format(__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_06); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_begin); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(__pyx_v_end); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_6[0] = __pyx_t_2;
  __pyx_t_6[1] = __pyx_mstate_global->__pyx_kp_u__5;
  __pyx_t_6[2] = __pyx_t_3;
  __pyx_t_6[3] = __pyx_mstate_global->__pyx_kp_u__12;
  __pyx_t_6[4] = __pyx_t_4;
  __pyx_t_6[5] = __pyx_mstate_global->__pyx_kp_u__12;
  __pyx_t_6[6] = __pyx_t_5;
  __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_6, 7, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 1 * 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5));
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4344
 *             cscamper_dealias.scamper_dealias_midardisc_round_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef const timeval *start
 *         cdef uint32_t begin
*/

  /* 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("scamper.ScamperDealiasMidardiscRound.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4353
 *         return f"{start.tv_sec}.{start.tv_usec:06}:{begin}:{end}"
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_28ScamperDealiasMidardiscRound_5start___get__(((struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_5start___get__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self) {
  struct timeval const *__pyx_v_tv;
  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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":4361
 *         :rtype: timedelta
 *         """
 *         tv = cscamper_dealias.scamper_dealias_midardisc_round_start_get(self._c)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
*/
  __pyx_v_tv = scamper_dealias_midardisc_round_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":4362
 *         """
 *         tv = cscamper_dealias.scamper_dealias_midardisc_round_start_get(self._c)
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 4362, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 4362, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4353
 *         return f"{start.tv_sec}.{start.tv_usec:06}:{begin}:{end}"
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* 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_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperDealiasMidardiscRound.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4364
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def begin(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_5begin_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_5begin_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_28ScamperDealiasMidardiscRound_5begin___get__(((struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_5begin___get__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__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("__get__", 0);

  /* "scamper.pyx":4372
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_midardisc_round_begin_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_dealias_midardisc_round_begin_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4364
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def begin(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasMidardiscRound.begin.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4374
 *         return cscamper_dealias.scamper_dealias_midardisc_round_begin_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def end(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_3end_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_3end_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_28ScamperDealiasMidardiscRound_3end___get__(((struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_3end___get__(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__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("__get__", 0);

  /* "scamper.pyx":4382
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_midardisc_round_end_get(self._c)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperDealiasProbedef:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_dealias_midardisc_round_end_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4382, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4374
 *         return cscamper_dealias.scamper_dealias_midardisc_round_begin_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def end(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasMidardiscRound.end.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_28ScamperDealiasMidardiscRound_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_28ScamperDealiasMidardiscRound_6__reduce_cython__(((struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperDealiasMidardiscRound.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_28ScamperDealiasMidardiscRound_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperDealiasMidardiscRound.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_28ScamperDealiasMidardiscRound_8__setstate_cython__(((struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28ScamperDealiasMidardiscRound_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperDealiasMidardiscRound.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4408
 *     cdef cscamper_dealias.scamper_dealias_probedef_t *_c
 * 
 *     def __init__(self, method, src=None, dst=None, ttl=None, size=None,             # <<<<<<<<<<<<<<
 *                  sport=None, dport=None, icmp_id=None, icmp_sum=None):
 *         cdef cscamper_addr.scamper_addr_t *a
*/

/* Python wrapper */
static int __pyx_pw_7scamper_22ScamperDealiasProbedef_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_22ScamperDealiasProbedef_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_src = 0;
  PyObject *__pyx_v_dst = 0;
  PyObject *__pyx_v_ttl = 0;
  PyObject *__pyx_v_size = 0;
  PyObject *__pyx_v_sport = 0;
  PyObject *__pyx_v_dport = 0;
  PyObject *__pyx_v_icmp_id = 0;
  PyObject *__pyx_v_icmp_sum = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_method,&__pyx_mstate_global->__pyx_n_u_src,&__pyx_mstate_global->__pyx_n_u_dst,&__pyx_mstate_global->__pyx_n_u_ttl_3,&__pyx_mstate_global->__pyx_n_u_size,&__pyx_mstate_global->__pyx_n_u_sport,&__pyx_mstate_global->__pyx_n_u_dport,&__pyx_mstate_global->__pyx_n_u_icmp_id,&__pyx_mstate_global->__pyx_n_u_icmp_sum,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4408, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  9:
        values[8] = __Pyx_ArgRef_VARARGS(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 4408, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":4409
 * 
 *     def __init__(self, method, src=None, dst=None, ttl=None, size=None,
 *                  sport=None, dport=None, icmp_id=None, icmp_sum=None):             # <<<<<<<<<<<<<<
 *         cdef cscamper_addr.scamper_addr_t *a
 * 
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 9, i); __PYX_ERR(0, 4408, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  9:
        values[8] = __Pyx_ArgRef_VARARGS(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4408, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":4408
 *     cdef cscamper_dealias.scamper_dealias_probedef_t *_c
 * 
 *     def __init__(self, method, src=None, dst=None, ttl=None, size=None,             # <<<<<<<<<<<<<<
 *                  sport=None, dport=None, icmp_id=None, icmp_sum=None):
 *         cdef cscamper_addr.scamper_addr_t *a
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":4409
 * 
 *     def __init__(self, method, src=None, dst=None, ttl=None, size=None,
 *                  sport=None, dport=None, icmp_id=None, icmp_sum=None):             # <<<<<<<<<<<<<<
 *         cdef cscamper_addr.scamper_addr_t *a
 * 
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_method = values[0];
    __pyx_v_src = values[1];
    __pyx_v_dst = values[2];
    __pyx_v_ttl = values[3];
    __pyx_v_size = values[4];
    __pyx_v_sport = values[5];
    __pyx_v_dport = values[6];
    __pyx_v_icmp_id = values[7];
    __pyx_v_icmp_sum = values[8];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 9, __pyx_nargs); __PYX_ERR(0, 4408, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef___init__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self), __pyx_v_method, __pyx_v_src, __pyx_v_dst, __pyx_v_ttl, __pyx_v_size, __pyx_v_sport, __pyx_v_dport, __pyx_v_icmp_id, __pyx_v_icmp_sum);

  /* "scamper.pyx":4408
 *     cdef cscamper_dealias.scamper_dealias_probedef_t *_c
 * 
 *     def __init__(self, method, src=None, dst=None, ttl=None, size=None,             # <<<<<<<<<<<<<<
 *                  sport=None, dport=None, icmp_id=None, icmp_sum=None):
 *         cdef cscamper_addr.scamper_addr_t *a
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_22ScamperDealiasProbedef___init__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self, PyObject *__pyx_v_method, PyObject *__pyx_v_src, PyObject *__pyx_v_dst, PyObject *__pyx_v_ttl, PyObject *__pyx_v_size, PyObject *__pyx_v_sport, PyObject *__pyx_v_dport, PyObject *__pyx_v_icmp_id, PyObject *__pyx_v_icmp_sum) {
  scamper_addr_t *__pyx_v_a;
  PyObject *__pyx_v_m = NULL;
  int __pyx_v_x;
  scamper_dealias_probedef_udp_t *__pyx_v_udp;
  scamper_dealias_probedef_icmp_t *__pyx_v_icmp;
  scamper_dealias_probedef_tcp_t *__pyx_v_tcp;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  char const *__pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  scamper_addr_t *__pyx_t_10;
  char const *__pyx_t_11;
  uint8_t __pyx_t_12;
  uint16_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_ttl);
  __Pyx_INCREF(__pyx_v_size);
  __Pyx_INCREF(__pyx_v_sport);
  __Pyx_INCREF(__pyx_v_dport);
  __Pyx_INCREF(__pyx_v_icmp_id);
  __Pyx_INCREF(__pyx_v_icmp_sum);

  /* "scamper.pyx":4412
 *         cdef cscamper_addr.scamper_addr_t *a
 * 
 *         self._c = cscamper_dealias.scamper_dealias_probedef_alloc()             # <<<<<<<<<<<<<<
 *         if self._c == NULL:
 *             raise MemoryError()
*/
  __pyx_v_self->_c = scamper_dealias_probedef_alloc();

  /* "scamper.pyx":4413
 * 
 *         self._c = cscamper_dealias.scamper_dealias_probedef_alloc()
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":4414
 *         self._c = cscamper_dealias.scamper_dealias_probedef_alloc()
 *         if self._c == NULL:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 * 
 *         # check that the method is valid; the rest of the methods depend
*/
    PyErr_NoMemory(); __PYX_ERR(0, 4414, __pyx_L1_error)

    /* "scamper.pyx":4413
 * 
 *         self._c = cscamper_dealias.scamper_dealias_probedef_alloc()
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 * 
*/
  }

  /* "scamper.pyx":4418
 *         # check that the method is valid; the rest of the methods depend
 *         # on the method
 *         if not isinstance(method, str):             # <<<<<<<<<<<<<<
 *             raise TypeError("expected string for method")
 *         m = method.encode('UTF-8')
*/
  __pyx_t_1 = PyUnicode_Check(__pyx_v_method); 
  __pyx_t_2 = (!__pyx_t_1);
  if (unlikely(__pyx_t_2)) {

    /* "scamper.pyx":4419
 *         # on the method
 *         if not isinstance(method, str):
 *             raise TypeError("expected string for method")             # <<<<<<<<<<<<<<
 *         m = method.encode('UTF-8')
 *         if cscamper_dealias.scamper_dealias_probedef_method_set(self._c,m) != 0:
*/
    __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_builtin_TypeError);
    __pyx_t_5 = __pyx_builtin_TypeError; 
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_expected_string_for_method};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4419, __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_ERR(0, 4419, __pyx_L1_error)

    /* "scamper.pyx":4418
 *         # check that the method is valid; the rest of the methods depend
 *         # on the method
 *         if not isinstance(method, str):             # <<<<<<<<<<<<<<
 *             raise TypeError("expected string for method")
 *         m = method.encode('UTF-8')
*/
  }

  /* "scamper.pyx":4420
 *         if not isinstance(method, str):
 *             raise TypeError("expected string for method")
 *         m = method.encode('UTF-8')             # <<<<<<<<<<<<<<
 *         if cscamper_dealias.scamper_dealias_probedef_method_set(self._c,m) != 0:
 *             raise ValueError(f"unknown method {method}")
*/
  __pyx_t_5 = __pyx_v_method;
  __Pyx_INCREF(__pyx_t_5);
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_UTF_8};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4420, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_m = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":4421
 *             raise TypeError("expected string for method")
 *         m = method.encode('UTF-8')
 *         if cscamper_dealias.scamper_dealias_probedef_method_set(self._c,m) != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(f"unknown method {method}")
 * 
*/
  __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_m); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 4421, __pyx_L1_error)
  __pyx_t_2 = (scamper_dealias_probedef_method_set(__pyx_v_self->_c, __pyx_t_7) != 0);
  if (unlikely(__pyx_t_2)) {

    /* "scamper.pyx":4422
 *         m = method.encode('UTF-8')
 *         if cscamper_dealias.scamper_dealias_probedef_method_set(self._c,m) != 0:
 *             raise ValueError(f"unknown method {method}")             # <<<<<<<<<<<<<<
 * 
 *         # set the addresses, if provided
*/
    __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_4 = __pyx_builtin_ValueError; 
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_method, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_unknown_method, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_9};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4422, __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_ERR(0, 4422, __pyx_L1_error)

    /* "scamper.pyx":4421
 *             raise TypeError("expected string for method")
 *         m = method.encode('UTF-8')
 *         if cscamper_dealias.scamper_dealias_probedef_method_set(self._c,m) != 0:             # <<<<<<<<<<<<<<
 *             raise ValueError(f"unknown method {method}")
 * 
*/
  }

  /* "scamper.pyx":4425
 * 
 *         # set the addresses, if provided
 *         if src is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(src, ScamperAddr) and (<ScamperAddr>src)._c != NULL:
 *                 a = (<ScamperAddr>src)._c
*/
  __pyx_t_2 = (__pyx_v_src != Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":4426
 *         # set the addresses, if provided
 *         if src is not None:
 *             if isinstance(src, ScamperAddr) and (<ScamperAddr>src)._c != NULL:             # <<<<<<<<<<<<<<
 *                 a = (<ScamperAddr>src)._c
 *                 if cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a) != 0:
*/
    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_src, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr); 
    if (__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L8_bool_binop_done;
    }
    __pyx_t_1 = (((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_src)->_c != NULL);
    __pyx_t_2 = __pyx_t_1;
    __pyx_L8_bool_binop_done:;
    if (__pyx_t_2) {

      /* "scamper.pyx":4427
 *         if src is not None:
 *             if isinstance(src, ScamperAddr) and (<ScamperAddr>src)._c != NULL:
 *                 a = (<ScamperAddr>src)._c             # <<<<<<<<<<<<<<
 *                 if cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a) != 0:
 *                     raise ValueError(f"invalid address {src}")
*/
      __pyx_t_10 = ((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_src)->_c;
      __pyx_v_a = __pyx_t_10;

      /* "scamper.pyx":4428
 *             if isinstance(src, ScamperAddr) and (<ScamperAddr>src)._c != NULL:
 *                 a = (<ScamperAddr>src)._c
 *                 if cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a) != 0:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {src}")
 *             elif isinstance(src, str):
*/
      __pyx_t_2 = (scamper_dealias_probedef_src_set(__pyx_v_self->_c, __pyx_v_a) != 0);
      if (unlikely(__pyx_t_2)) {

        /* "scamper.pyx":4429
 *                 a = (<ScamperAddr>src)._c
 *                 if cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a) != 0:
 *                     raise ValueError(f"invalid address {src}")             # <<<<<<<<<<<<<<
 *             elif isinstance(src, str):
 *                 a = cscamper_addr.scamper_addr_fromstr(0, src.encode('UTF-8'))
*/
        __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_builtin_ValueError);
        __pyx_t_9 = __pyx_builtin_ValueError; 
        __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_src, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4429, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_invalid_address_2, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4429, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_6 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8};
          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4429, __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_ERR(0, 4429, __pyx_L1_error)

        /* "scamper.pyx":4428
 *             if isinstance(src, ScamperAddr) and (<ScamperAddr>src)._c != NULL:
 *                 a = (<ScamperAddr>src)._c
 *                 if cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a) != 0:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {src}")
 *             elif isinstance(src, str):
*/
      }

      /* "scamper.pyx":4426
 *         # set the addresses, if provided
 *         if src is not None:
 *             if isinstance(src, ScamperAddr) and (<ScamperAddr>src)._c != NULL:             # <<<<<<<<<<<<<<
 *                 a = (<ScamperAddr>src)._c
 *                 if cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a) != 0:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":4430
 *                 if cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a) != 0:
 *                     raise ValueError(f"invalid address {src}")
 *             elif isinstance(src, str):             # <<<<<<<<<<<<<<
 *                 a = cscamper_addr.scamper_addr_fromstr(0, src.encode('UTF-8'))
 *                 if a == NULL:
*/
    __pyx_t_2 = PyUnicode_Check(__pyx_v_src); 
    if (likely(__pyx_t_2)) {

      /* "scamper.pyx":4431
 *                     raise ValueError(f"invalid address {src}")
 *             elif isinstance(src, str):
 *                 a = cscamper_addr.scamper_addr_fromstr(0, src.encode('UTF-8'))             # <<<<<<<<<<<<<<
 *                 if a == NULL:
 *                     raise ValueError(f"invalid address {src}")
*/
      __pyx_t_9 = __pyx_v_src;
      __Pyx_INCREF(__pyx_t_9);
      __pyx_t_6 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_UTF_8};
        __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4431, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 4431, __pyx_L1_error)
      __pyx_v_a = scamper_addr_fromstr(0, __pyx_t_11);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "scamper.pyx":4432
 *             elif isinstance(src, str):
 *                 a = cscamper_addr.scamper_addr_fromstr(0, src.encode('UTF-8'))
 *                 if a == NULL:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {src}")
 *                 x = cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a)
*/
      __pyx_t_2 = (__pyx_v_a == NULL);
      if (unlikely(__pyx_t_2)) {

        /* "scamper.pyx":4433
 *                 a = cscamper_addr.scamper_addr_fromstr(0, src.encode('UTF-8'))
 *                 if a == NULL:
 *                     raise ValueError(f"invalid address {src}")             # <<<<<<<<<<<<<<
 *                 x = cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a)
 *                 cscamper_addr.scamper_addr_free(a)
*/
        __pyx_t_9 = NULL;
        __Pyx_INCREF(__pyx_builtin_ValueError);
        __pyx_t_8 = __pyx_builtin_ValueError; 
        __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_src, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4433, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_invalid_address_2, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4433, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_6 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_5};
          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4433, __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_ERR(0, 4433, __pyx_L1_error)

        /* "scamper.pyx":4432
 *             elif isinstance(src, str):
 *                 a = cscamper_addr.scamper_addr_fromstr(0, src.encode('UTF-8'))
 *                 if a == NULL:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {src}")
 *                 x = cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a)
*/
      }

      /* "scamper.pyx":4434
 *                 if a == NULL:
 *                     raise ValueError(f"invalid address {src}")
 *                 x = cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a)             # <<<<<<<<<<<<<<
 *                 cscamper_addr.scamper_addr_free(a)
 *                 if x != 0:
*/
      __pyx_v_x = scamper_dealias_probedef_src_set(__pyx_v_self->_c, __pyx_v_a);

      /* "scamper.pyx":4435
 *                     raise ValueError(f"invalid address {src}")
 *                 x = cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a)
 *                 cscamper_addr.scamper_addr_free(a)             # <<<<<<<<<<<<<<
 *                 if x != 0:
 *                     raise ValueError(f"invalid address {src}")
*/
      scamper_addr_free(__pyx_v_a);

      /* "scamper.pyx":4436
 *                 x = cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a)
 *                 cscamper_addr.scamper_addr_free(a)
 *                 if x != 0:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {src}")
 *             else:
*/
      __pyx_t_2 = (__pyx_v_x != 0);
      if (unlikely(__pyx_t_2)) {

        /* "scamper.pyx":4437
 *                 cscamper_addr.scamper_addr_free(a)
 *                 if x != 0:
 *                     raise ValueError(f"invalid address {src}")             # <<<<<<<<<<<<<<
 *             else:
 *                 raise TypeError("invalid src")
*/
        __pyx_t_8 = NULL;
        __Pyx_INCREF(__pyx_builtin_ValueError);
        __pyx_t_5 = __pyx_builtin_ValueError; 
        __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_src, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4437, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_invalid_address_2, __pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4437, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_6 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_4};
          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4437, __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_ERR(0, 4437, __pyx_L1_error)

        /* "scamper.pyx":4436
 *                 x = cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a)
 *                 cscamper_addr.scamper_addr_free(a)
 *                 if x != 0:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {src}")
 *             else:
*/
      }

      /* "scamper.pyx":4430
 *                 if cscamper_dealias.scamper_dealias_probedef_src_set(self._c, a) != 0:
 *                     raise ValueError(f"invalid address {src}")
 *             elif isinstance(src, str):             # <<<<<<<<<<<<<<
 *                 a = cscamper_addr.scamper_addr_fromstr(0, src.encode('UTF-8'))
 *                 if a == NULL:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":4439
 *                     raise ValueError(f"invalid address {src}")
 *             else:
 *                 raise TypeError("invalid src")             # <<<<<<<<<<<<<<
 *         if dst is not None:
 *             if isinstance(dst, ScamperAddr) and (<ScamperAddr>dst)._c != NULL:
*/
    /*else*/ {
      __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_builtin_TypeError);
      __pyx_t_4 = __pyx_builtin_TypeError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_invalid_src};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4439, __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_ERR(0, 4439, __pyx_L1_error)
    }
    __pyx_L7:;

    /* "scamper.pyx":4425
 * 
 *         # set the addresses, if provided
 *         if src is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(src, ScamperAddr) and (<ScamperAddr>src)._c != NULL:
 *                 a = (<ScamperAddr>src)._c
*/
  }

  /* "scamper.pyx":4440
 *             else:
 *                 raise TypeError("invalid src")
 *         if dst is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(dst, ScamperAddr) and (<ScamperAddr>dst)._c != NULL:
 *                 a = (<ScamperAddr>dst)._c
*/
  __pyx_t_2 = (__pyx_v_dst != Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":4441
 *                 raise TypeError("invalid src")
 *         if dst is not None:
 *             if isinstance(dst, ScamperAddr) and (<ScamperAddr>dst)._c != NULL:             # <<<<<<<<<<<<<<
 *                 a = (<ScamperAddr>dst)._c
 *                 if cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a) != 0:
*/
    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_dst, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr); 
    if (__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L15_bool_binop_done;
    }
    __pyx_t_1 = (((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_dst)->_c != NULL);
    __pyx_t_2 = __pyx_t_1;
    __pyx_L15_bool_binop_done:;
    if (__pyx_t_2) {

      /* "scamper.pyx":4442
 *         if dst is not None:
 *             if isinstance(dst, ScamperAddr) and (<ScamperAddr>dst)._c != NULL:
 *                 a = (<ScamperAddr>dst)._c             # <<<<<<<<<<<<<<
 *                 if cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a) != 0:
 *                     raise ValueError(f"invalid address {dst}")
*/
      __pyx_t_10 = ((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_dst)->_c;
      __pyx_v_a = __pyx_t_10;

      /* "scamper.pyx":4443
 *             if isinstance(dst, ScamperAddr) and (<ScamperAddr>dst)._c != NULL:
 *                 a = (<ScamperAddr>dst)._c
 *                 if cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a) != 0:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {dst}")
 *             elif isinstance(dst, str):
*/
      __pyx_t_2 = (scamper_dealias_probedef_dst_set(__pyx_v_self->_c, __pyx_v_a) != 0);
      if (unlikely(__pyx_t_2)) {

        /* "scamper.pyx":4444
 *                 a = (<ScamperAddr>dst)._c
 *                 if cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a) != 0:
 *                     raise ValueError(f"invalid address {dst}")             # <<<<<<<<<<<<<<
 *             elif isinstance(dst, str):
 *                 a = cscamper_addr.scamper_addr_fromstr(0, dst.encode('UTF-8'))
*/
        __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_builtin_ValueError);
        __pyx_t_5 = __pyx_builtin_ValueError; 
        __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_dst, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4444, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_invalid_address_2, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4444, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_6 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_9};
          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4444, __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_ERR(0, 4444, __pyx_L1_error)

        /* "scamper.pyx":4443
 *             if isinstance(dst, ScamperAddr) and (<ScamperAddr>dst)._c != NULL:
 *                 a = (<ScamperAddr>dst)._c
 *                 if cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a) != 0:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {dst}")
 *             elif isinstance(dst, str):
*/
      }

      /* "scamper.pyx":4441
 *                 raise TypeError("invalid src")
 *         if dst is not None:
 *             if isinstance(dst, ScamperAddr) and (<ScamperAddr>dst)._c != NULL:             # <<<<<<<<<<<<<<
 *                 a = (<ScamperAddr>dst)._c
 *                 if cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a) != 0:
*/
      goto __pyx_L14;
    }

    /* "scamper.pyx":4445
 *                 if cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a) != 0:
 *                     raise ValueError(f"invalid address {dst}")
 *             elif isinstance(dst, str):             # <<<<<<<<<<<<<<
 *                 a = cscamper_addr.scamper_addr_fromstr(0, dst.encode('UTF-8'))
 *                 if a == NULL:
*/
    __pyx_t_2 = PyUnicode_Check(__pyx_v_dst); 
    if (likely(__pyx_t_2)) {

      /* "scamper.pyx":4446
 *                     raise ValueError(f"invalid address {dst}")
 *             elif isinstance(dst, str):
 *                 a = cscamper_addr.scamper_addr_fromstr(0, dst.encode('UTF-8'))             # <<<<<<<<<<<<<<
 *                 if a == NULL:
 *                     raise ValueError(f"invalid address {dst}")
*/
      __pyx_t_5 = __pyx_v_dst;
      __Pyx_INCREF(__pyx_t_5);
      __pyx_t_6 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_UTF_8};
        __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4446, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_t_3); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 4446, __pyx_L1_error)
      __pyx_v_a = scamper_addr_fromstr(0, __pyx_t_11);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "scamper.pyx":4447
 *             elif isinstance(dst, str):
 *                 a = cscamper_addr.scamper_addr_fromstr(0, dst.encode('UTF-8'))
 *                 if a == NULL:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {dst}")
 *                 x = cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a)
*/
      __pyx_t_2 = (__pyx_v_a == NULL);
      if (unlikely(__pyx_t_2)) {

        /* "scamper.pyx":4448
 *                 a = cscamper_addr.scamper_addr_fromstr(0, dst.encode('UTF-8'))
 *                 if a == NULL:
 *                     raise ValueError(f"invalid address {dst}")             # <<<<<<<<<<<<<<
 *                 x = cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a)
 *                 cscamper_addr.scamper_addr_free(a)
*/
        __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_builtin_ValueError);
        __pyx_t_9 = __pyx_builtin_ValueError; 
        __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_v_dst, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4448, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_invalid_address_2, __pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4448, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_6 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8};
          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4448, __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_ERR(0, 4448, __pyx_L1_error)

        /* "scamper.pyx":4447
 *             elif isinstance(dst, str):
 *                 a = cscamper_addr.scamper_addr_fromstr(0, dst.encode('UTF-8'))
 *                 if a == NULL:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {dst}")
 *                 x = cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a)
*/
      }

      /* "scamper.pyx":4449
 *                 if a == NULL:
 *                     raise ValueError(f"invalid address {dst}")
 *                 x = cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a)             # <<<<<<<<<<<<<<
 *                 cscamper_addr.scamper_addr_free(a)
 *                 if x != 0:
*/
      __pyx_v_x = scamper_dealias_probedef_dst_set(__pyx_v_self->_c, __pyx_v_a);

      /* "scamper.pyx":4450
 *                     raise ValueError(f"invalid address {dst}")
 *                 x = cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a)
 *                 cscamper_addr.scamper_addr_free(a)             # <<<<<<<<<<<<<<
 *                 if x != 0:
 *                     raise ValueError(f"invalid address {dst}")
*/
      scamper_addr_free(__pyx_v_a);

      /* "scamper.pyx":4451
 *                 x = cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a)
 *                 cscamper_addr.scamper_addr_free(a)
 *                 if x != 0:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {dst}")
 *             else:
*/
      __pyx_t_2 = (__pyx_v_x != 0);
      if (unlikely(__pyx_t_2)) {

        /* "scamper.pyx":4452
 *                 cscamper_addr.scamper_addr_free(a)
 *                 if x != 0:
 *                     raise ValueError(f"invalid address {dst}")             # <<<<<<<<<<<<<<
 *             else:
 *                 raise TypeError("invalid dst")
*/
        __pyx_t_9 = NULL;
        __Pyx_INCREF(__pyx_builtin_ValueError);
        __pyx_t_8 = __pyx_builtin_ValueError; 
        __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_dst, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_invalid_address_2, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4452, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_6 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_4};
          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4452, __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_ERR(0, 4452, __pyx_L1_error)

        /* "scamper.pyx":4451
 *                 x = cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a)
 *                 cscamper_addr.scamper_addr_free(a)
 *                 if x != 0:             # <<<<<<<<<<<<<<
 *                     raise ValueError(f"invalid address {dst}")
 *             else:
*/
      }

      /* "scamper.pyx":4445
 *                 if cscamper_dealias.scamper_dealias_probedef_dst_set(self._c, a) != 0:
 *                     raise ValueError(f"invalid address {dst}")
 *             elif isinstance(dst, str):             # <<<<<<<<<<<<<<
 *                 a = cscamper_addr.scamper_addr_fromstr(0, dst.encode('UTF-8'))
 *                 if a == NULL:
*/
      goto __pyx_L14;
    }

    /* "scamper.pyx":4454
 *                     raise ValueError(f"invalid address {dst}")
 *             else:
 *                 raise TypeError("invalid dst")             # <<<<<<<<<<<<<<
 * 
 *         # set other IP-header-level fields
*/
    /*else*/ {
      __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_builtin_TypeError);
      __pyx_t_4 = __pyx_builtin_TypeError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_invalid_dst};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4454, __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_ERR(0, 4454, __pyx_L1_error)
    }
    __pyx_L14:;

    /* "scamper.pyx":4440
 *             else:
 *                 raise TypeError("invalid src")
 *         if dst is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(dst, ScamperAddr) and (<ScamperAddr>dst)._c != NULL:
 *                 a = (<ScamperAddr>dst)._c
*/
  }

  /* "scamper.pyx":4457
 * 
 *         # set other IP-header-level fields
 *         if ttl is not None:             # <<<<<<<<<<<<<<
 *             ttl = int(ttl)
 *             if ttl < 0 or ttl > 255:
*/
  __pyx_t_2 = (__pyx_v_ttl != Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":4458
 *         # set other IP-header-level fields
 *         if ttl is not None:
 *             ttl = int(ttl)             # <<<<<<<<<<<<<<
 *             if ttl < 0 or ttl > 255:
 *                 raise ValueError("invalid TTL")
*/
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_ttl); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_ttl, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "scamper.pyx":4459
 *         if ttl is not None:
 *             ttl = int(ttl)
 *             if ttl < 0 or ttl > 255:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid TTL")
 *             cscamper_dealias.scamper_dealias_probedef_ttl_set(self._c, ttl)
*/
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_ttl, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4459, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4459, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L22_bool_binop_done;
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_ttl, __pyx_mstate_global->__pyx_int_255, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4459, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4459, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __pyx_t_1;
    __pyx_L22_bool_binop_done:;
    if (unlikely(__pyx_t_2)) {

      /* "scamper.pyx":4460
 *             ttl = int(ttl)
 *             if ttl < 0 or ttl > 255:
 *                 raise ValueError("invalid TTL")             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_probedef_ttl_set(self._c, ttl)
 *         if size is not None:
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_invalid_TTL};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4460, __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_ERR(0, 4460, __pyx_L1_error)

      /* "scamper.pyx":4459
 *         if ttl is not None:
 *             ttl = int(ttl)
 *             if ttl < 0 or ttl > 255:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid TTL")
 *             cscamper_dealias.scamper_dealias_probedef_ttl_set(self._c, ttl)
*/
    }

    /* "scamper.pyx":4461
 *             if ttl < 0 or ttl > 255:
 *                 raise ValueError("invalid TTL")
 *             cscamper_dealias.scamper_dealias_probedef_ttl_set(self._c, ttl)             # <<<<<<<<<<<<<<
 *         if size is not None:
 *             size = int(size)
*/
    __pyx_t_12 = __Pyx_PyLong_As_uint8_t(__pyx_v_ttl); if (unlikely((__pyx_t_12 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4461, __pyx_L1_error)
    scamper_dealias_probedef_ttl_set(__pyx_v_self->_c, __pyx_t_12);

    /* "scamper.pyx":4457
 * 
 *         # set other IP-header-level fields
 *         if ttl is not None:             # <<<<<<<<<<<<<<
 *             ttl = int(ttl)
 *             if ttl < 0 or ttl > 255:
*/
  }

  /* "scamper.pyx":4462
 *                 raise ValueError("invalid TTL")
 *             cscamper_dealias.scamper_dealias_probedef_ttl_set(self._c, ttl)
 *         if size is not None:             # <<<<<<<<<<<<<<
 *             size = int(size)
 *             if size < 0 or size > 65535:
*/
  __pyx_t_2 = (__pyx_v_size != Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":4463
 *             cscamper_dealias.scamper_dealias_probedef_ttl_set(self._c, ttl)
 *         if size is not None:
 *             size = int(size)             # <<<<<<<<<<<<<<
 *             if size < 0 or size > 65535:
 *                 raise ValueError("invalid size")
*/
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_size); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4463, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_size, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "scamper.pyx":4464
 *         if size is not None:
 *             size = int(size)
 *             if size < 0 or size > 65535:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid size")
 *             cscamper_dealias.scamper_dealias_probedef_size_set(self._c, size)
*/
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_size, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4464, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4464, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L26_bool_binop_done;
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_size, __pyx_mstate_global->__pyx_int_65535, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4464, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4464, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __pyx_t_1;
    __pyx_L26_bool_binop_done:;
    if (unlikely(__pyx_t_2)) {

      /* "scamper.pyx":4465
 *             size = int(size)
 *             if size < 0 or size > 65535:
 *                 raise ValueError("invalid size")             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_probedef_size_set(self._c, size)
 * 
*/
      __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_4 = __pyx_builtin_ValueError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_invalid_size};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4465, __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_ERR(0, 4465, __pyx_L1_error)

      /* "scamper.pyx":4464
 *         if size is not None:
 *             size = int(size)
 *             if size < 0 or size > 65535:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid size")
 *             cscamper_dealias.scamper_dealias_probedef_size_set(self._c, size)
*/
    }

    /* "scamper.pyx":4466
 *             if size < 0 or size > 65535:
 *                 raise ValueError("invalid size")
 *             cscamper_dealias.scamper_dealias_probedef_size_set(self._c, size)             # <<<<<<<<<<<<<<
 * 
 *         # set transport header values
*/
    __pyx_t_13 = __Pyx_PyLong_As_uint16_t(__pyx_v_size); if (unlikely((__pyx_t_13 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4466, __pyx_L1_error)
    scamper_dealias_probedef_size_set(__pyx_v_self->_c, __pyx_t_13);

    /* "scamper.pyx":4462
 *                 raise ValueError("invalid TTL")
 *             cscamper_dealias.scamper_dealias_probedef_ttl_set(self._c, ttl)
 *         if size is not None:             # <<<<<<<<<<<<<<
 *             size = int(size)
 *             if size < 0 or size > 65535:
*/
  }

  /* "scamper.pyx":4469
 * 
 *         # set transport header values
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)             # <<<<<<<<<<<<<<
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
*/
  __pyx_v_udp = scamper_dealias_probedef_udp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4470
 *         # set transport header values
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)             # <<<<<<<<<<<<<<
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if dport is not None:
*/
  __pyx_v_icmp = scamper_dealias_probedef_icmp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4471
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)             # <<<<<<<<<<<<<<
 *         if dport is not None:
 *             dport = int(dport)
*/
  __pyx_v_tcp = scamper_dealias_probedef_tcp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4472
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if dport is not None:             # <<<<<<<<<<<<<<
 *             dport = int(dport)
 *             if dport < 0 or dport > 65535:
*/
  __pyx_t_2 = (__pyx_v_dport != Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":4473
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if dport is not None:
 *             dport = int(dport)             # <<<<<<<<<<<<<<
 *             if dport < 0 or dport > 65535:
 *                 raise ValueError("invalid dport")
*/
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_dport); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_dport, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "scamper.pyx":4474
 *         if dport is not None:
 *             dport = int(dport)
 *             if dport < 0 or dport > 65535:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid dport")
 *             if udp != NULL:
*/
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dport, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4474, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4474, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L30_bool_binop_done;
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_dport, __pyx_mstate_global->__pyx_int_65535, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4474, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4474, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __pyx_t_1;
    __pyx_L30_bool_binop_done:;
    if (unlikely(__pyx_t_2)) {

      /* "scamper.pyx":4475
 *             dport = int(dport)
 *             if dport < 0 or dport > 65535:
 *                 raise ValueError("invalid dport")             # <<<<<<<<<<<<<<
 *             if udp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_udp_dport_set(udp, dport)
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_invalid_dport};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4475, __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_ERR(0, 4475, __pyx_L1_error)

      /* "scamper.pyx":4474
 *         if dport is not None:
 *             dport = int(dport)
 *             if dport < 0 or dport > 65535:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid dport")
 *             if udp != NULL:
*/
    }

    /* "scamper.pyx":4476
 *             if dport < 0 or dport > 65535:
 *                 raise ValueError("invalid dport")
 *             if udp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_udp_dport_set(udp, dport)
 *             elif tcp != NULL:
*/
    __pyx_t_2 = (__pyx_v_udp != NULL);
    if (__pyx_t_2) {

      /* "scamper.pyx":4477
 *                 raise ValueError("invalid dport")
 *             if udp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_udp_dport_set(udp, dport)             # <<<<<<<<<<<<<<
 *             elif tcp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_tcp_dport_set(tcp, dport)
*/
      __pyx_t_13 = __Pyx_PyLong_As_uint16_t(__pyx_v_dport); if (unlikely((__pyx_t_13 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4477, __pyx_L1_error)
      scamper_dealias_probedef_udp_dport_set(__pyx_v_udp, __pyx_t_13);

      /* "scamper.pyx":4476
 *             if dport < 0 or dport > 65535:
 *                 raise ValueError("invalid dport")
 *             if udp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_udp_dport_set(udp, dport)
 *             elif tcp != NULL:
*/
      goto __pyx_L32;
    }

    /* "scamper.pyx":4478
 *             if udp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_udp_dport_set(udp, dport)
 *             elif tcp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_tcp_dport_set(tcp, dport)
 *             else:
*/
    __pyx_t_2 = (__pyx_v_tcp != NULL);
    if (likely(__pyx_t_2)) {

      /* "scamper.pyx":4479
 *                 cscamper_dealias.scamper_dealias_probedef_udp_dport_set(udp, dport)
 *             elif tcp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_tcp_dport_set(tcp, dport)             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError(f"dport invalid for method {method}")
*/
      __pyx_t_13 = __Pyx_PyLong_As_uint16_t(__pyx_v_dport); if (unlikely((__pyx_t_13 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4479, __pyx_L1_error)
      scamper_dealias_probedef_tcp_dport_set(__pyx_v_tcp, __pyx_t_13);

      /* "scamper.pyx":4478
 *             if udp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_udp_dport_set(udp, dport)
 *             elif tcp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_tcp_dport_set(tcp, dport)
 *             else:
*/
      goto __pyx_L32;
    }

    /* "scamper.pyx":4481
 *                 cscamper_dealias.scamper_dealias_probedef_tcp_dport_set(tcp, dport)
 *             else:
 *                 raise ValueError(f"dport invalid for method {method}")             # <<<<<<<<<<<<<<
 *         if sport is not None:
 *             sport = int(sport)
*/
    /*else*/ {
      __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_4 = __pyx_builtin_ValueError; 
      __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_method, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4481, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_dport_invalid_for_method, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4481, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_5};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4481, __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_ERR(0, 4481, __pyx_L1_error)
    }
    __pyx_L32:;

    /* "scamper.pyx":4472
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if dport is not None:             # <<<<<<<<<<<<<<
 *             dport = int(dport)
 *             if dport < 0 or dport > 65535:
*/
  }

  /* "scamper.pyx":4482
 *             else:
 *                 raise ValueError(f"dport invalid for method {method}")
 *         if sport is not None:             # <<<<<<<<<<<<<<
 *             sport = int(sport)
 *             if sport < 0 or sport > 65535:
*/
  __pyx_t_2 = (__pyx_v_sport != Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":4483
 *                 raise ValueError(f"dport invalid for method {method}")
 *         if sport is not None:
 *             sport = int(sport)             # <<<<<<<<<<<<<<
 *             if sport < 0 or sport > 65535:
 *                 raise ValueError("invalid sport")
*/
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_sport); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4483, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_sport, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "scamper.pyx":4484
 *         if sport is not None:
 *             sport = int(sport)
 *             if sport < 0 or sport > 65535:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid sport")
 *             if udp != NULL:
*/
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_sport, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4484, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4484, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L35_bool_binop_done;
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_sport, __pyx_mstate_global->__pyx_int_65535, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4484, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4484, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __pyx_t_1;
    __pyx_L35_bool_binop_done:;
    if (unlikely(__pyx_t_2)) {

      /* "scamper.pyx":4485
 *             sport = int(sport)
 *             if sport < 0 or sport > 65535:
 *                 raise ValueError("invalid sport")             # <<<<<<<<<<<<<<
 *             if udp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_udp_sport_set(udp, sport)
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_5 = __pyx_builtin_ValueError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_invalid_sport};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4485, __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_ERR(0, 4485, __pyx_L1_error)

      /* "scamper.pyx":4484
 *         if sport is not None:
 *             sport = int(sport)
 *             if sport < 0 or sport > 65535:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid sport")
 *             if udp != NULL:
*/
    }

    /* "scamper.pyx":4486
 *             if sport < 0 or sport > 65535:
 *                 raise ValueError("invalid sport")
 *             if udp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_udp_sport_set(udp, sport)
 *             elif tcp != NULL:
*/
    __pyx_t_2 = (__pyx_v_udp != NULL);
    if (__pyx_t_2) {

      /* "scamper.pyx":4487
 *                 raise ValueError("invalid sport")
 *             if udp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_udp_sport_set(udp, sport)             # <<<<<<<<<<<<<<
 *             elif tcp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_tcp_sport_set(tcp, sport)
*/
      __pyx_t_13 = __Pyx_PyLong_As_uint16_t(__pyx_v_sport); if (unlikely((__pyx_t_13 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4487, __pyx_L1_error)
      scamper_dealias_probedef_udp_sport_set(__pyx_v_udp, __pyx_t_13);

      /* "scamper.pyx":4486
 *             if sport < 0 or sport > 65535:
 *                 raise ValueError("invalid sport")
 *             if udp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_udp_sport_set(udp, sport)
 *             elif tcp != NULL:
*/
      goto __pyx_L37;
    }

    /* "scamper.pyx":4488
 *             if udp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_udp_sport_set(udp, sport)
 *             elif tcp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_tcp_sport_set(tcp, sport)
 *             else:
*/
    __pyx_t_2 = (__pyx_v_tcp != NULL);
    if (likely(__pyx_t_2)) {

      /* "scamper.pyx":4489
 *                 cscamper_dealias.scamper_dealias_probedef_udp_sport_set(udp, sport)
 *             elif tcp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_tcp_sport_set(tcp, sport)             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError(f"sport invalid for method {method}")
*/
      __pyx_t_13 = __Pyx_PyLong_As_uint16_t(__pyx_v_sport); if (unlikely((__pyx_t_13 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4489, __pyx_L1_error)
      scamper_dealias_probedef_tcp_sport_set(__pyx_v_tcp, __pyx_t_13);

      /* "scamper.pyx":4488
 *             if udp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_udp_sport_set(udp, sport)
 *             elif tcp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_tcp_sport_set(tcp, sport)
 *             else:
*/
      goto __pyx_L37;
    }

    /* "scamper.pyx":4491
 *                 cscamper_dealias.scamper_dealias_probedef_tcp_sport_set(tcp, sport)
 *             else:
 *                 raise ValueError(f"sport invalid for method {method}")             # <<<<<<<<<<<<<<
 *         if icmp_id is not None:
 *             icmp_id = int(icmp_id)
*/
    /*else*/ {
      __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_4 = __pyx_builtin_ValueError; 
      __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_method, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4491, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_sport_invalid_for_method, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4491, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_9};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4491, __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_ERR(0, 4491, __pyx_L1_error)
    }
    __pyx_L37:;

    /* "scamper.pyx":4482
 *             else:
 *                 raise ValueError(f"dport invalid for method {method}")
 *         if sport is not None:             # <<<<<<<<<<<<<<
 *             sport = int(sport)
 *             if sport < 0 or sport > 65535:
*/
  }

  /* "scamper.pyx":4492
 *             else:
 *                 raise ValueError(f"sport invalid for method {method}")
 *         if icmp_id is not None:             # <<<<<<<<<<<<<<
 *             icmp_id = int(icmp_id)
 *             if icmp_id < 0 or icmp_id > 65535:
*/
  __pyx_t_2 = (__pyx_v_icmp_id != Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":4493
 *                 raise ValueError(f"sport invalid for method {method}")
 *         if icmp_id is not None:
 *             icmp_id = int(icmp_id)             # <<<<<<<<<<<<<<
 *             if icmp_id < 0 or icmp_id > 65535:
 *                 raise ValueError("invalid icmp_id")
*/
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_icmp_id); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4493, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_icmp_id, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "scamper.pyx":4494
 *         if icmp_id is not None:
 *             icmp_id = int(icmp_id)
 *             if icmp_id < 0 or icmp_id > 65535:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid icmp_id")
 *             if icmp != NULL:
*/
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_icmp_id, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4494, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4494, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L40_bool_binop_done;
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_icmp_id, __pyx_mstate_global->__pyx_int_65535, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4494, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4494, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __pyx_t_1;
    __pyx_L40_bool_binop_done:;
    if (unlikely(__pyx_t_2)) {

      /* "scamper.pyx":4495
 *             icmp_id = int(icmp_id)
 *             if icmp_id < 0 or icmp_id > 65535:
 *                 raise ValueError("invalid icmp_id")             # <<<<<<<<<<<<<<
 *             if icmp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_icmp_id_set(icmp, icmp_id)
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_9 = __pyx_builtin_ValueError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_invalid_icmp_id};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4495, __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_ERR(0, 4495, __pyx_L1_error)

      /* "scamper.pyx":4494
 *         if icmp_id is not None:
 *             icmp_id = int(icmp_id)
 *             if icmp_id < 0 or icmp_id > 65535:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid icmp_id")
 *             if icmp != NULL:
*/
    }

    /* "scamper.pyx":4496
 *             if icmp_id < 0 or icmp_id > 65535:
 *                 raise ValueError("invalid icmp_id")
 *             if icmp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_icmp_id_set(icmp, icmp_id)
 *             else:
*/
    __pyx_t_2 = (__pyx_v_icmp != NULL);
    if (likely(__pyx_t_2)) {

      /* "scamper.pyx":4497
 *                 raise ValueError("invalid icmp_id")
 *             if icmp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_icmp_id_set(icmp, icmp_id)             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError(f"icmp_id invalid for method {method}")
*/
      __pyx_t_13 = __Pyx_PyLong_As_uint16_t(__pyx_v_icmp_id); if (unlikely((__pyx_t_13 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4497, __pyx_L1_error)
      scamper_dealias_probedef_icmp_id_set(__pyx_v_icmp, __pyx_t_13);

      /* "scamper.pyx":4496
 *             if icmp_id < 0 or icmp_id > 65535:
 *                 raise ValueError("invalid icmp_id")
 *             if icmp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_icmp_id_set(icmp, icmp_id)
 *             else:
*/
      goto __pyx_L42;
    }

    /* "scamper.pyx":4499
 *                 cscamper_dealias.scamper_dealias_probedef_icmp_id_set(icmp, icmp_id)
 *             else:
 *                 raise ValueError(f"icmp_id invalid for method {method}")             # <<<<<<<<<<<<<<
 *         if icmp_sum is not None:
 *             icmp_sum = int(icmp_sum)
*/
    /*else*/ {
      __pyx_t_9 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_4 = __pyx_builtin_ValueError; 
      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_method, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4499, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_icmp_id_invalid_for_method, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4499, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_8};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4499, __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_ERR(0, 4499, __pyx_L1_error)
    }
    __pyx_L42:;

    /* "scamper.pyx":4492
 *             else:
 *                 raise ValueError(f"sport invalid for method {method}")
 *         if icmp_id is not None:             # <<<<<<<<<<<<<<
 *             icmp_id = int(icmp_id)
 *             if icmp_id < 0 or icmp_id > 65535:
*/
  }

  /* "scamper.pyx":4500
 *             else:
 *                 raise ValueError(f"icmp_id invalid for method {method}")
 *         if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *             icmp_sum = int(icmp_sum)
 *             if icmp_sum < 0 or icmp_sum > 65535:
*/
  __pyx_t_2 = (__pyx_v_icmp_sum != Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":4501
 *                 raise ValueError(f"icmp_id invalid for method {method}")
 *         if icmp_sum is not None:
 *             icmp_sum = int(icmp_sum)             # <<<<<<<<<<<<<<
 *             if icmp_sum < 0 or icmp_sum > 65535:
 *                 raise ValueError("invalid icmp_sum")
*/
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_v_icmp_sum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4501, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF_SET(__pyx_v_icmp_sum, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "scamper.pyx":4502
 *         if icmp_sum is not None:
 *             icmp_sum = int(icmp_sum)
 *             if icmp_sum < 0 or icmp_sum > 65535:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid icmp_sum")
 *             if icmp != NULL:
*/
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_icmp_sum, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4502, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4502, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_1) {
    } else {
      __pyx_t_2 = __pyx_t_1;
      goto __pyx_L45_bool_binop_done;
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_icmp_sum, __pyx_mstate_global->__pyx_int_65535, Py_GT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4502, __pyx_L1_error)
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 4502, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __pyx_t_1;
    __pyx_L45_bool_binop_done:;
    if (unlikely(__pyx_t_2)) {

      /* "scamper.pyx":4503
 *             icmp_sum = int(icmp_sum)
 *             if icmp_sum < 0 or icmp_sum > 65535:
 *                 raise ValueError("invalid icmp_sum")             # <<<<<<<<<<<<<<
 *             if icmp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_icmp_csum_set(icmp, icmp_sum)
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_invalid_icmp_sum};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4503, __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_ERR(0, 4503, __pyx_L1_error)

      /* "scamper.pyx":4502
 *         if icmp_sum is not None:
 *             icmp_sum = int(icmp_sum)
 *             if icmp_sum < 0 or icmp_sum > 65535:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid icmp_sum")
 *             if icmp != NULL:
*/
    }

    /* "scamper.pyx":4504
 *             if icmp_sum < 0 or icmp_sum > 65535:
 *                 raise ValueError("invalid icmp_sum")
 *             if icmp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_icmp_csum_set(icmp, icmp_sum)
 *             else:
*/
    __pyx_t_2 = (__pyx_v_icmp != NULL);
    if (likely(__pyx_t_2)) {

      /* "scamper.pyx":4505
 *                 raise ValueError("invalid icmp_sum")
 *             if icmp != NULL:
 *                 cscamper_dealias.scamper_dealias_probedef_icmp_csum_set(icmp, icmp_sum)             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError(f"icmp_sum invalid for method {method}")
*/
      __pyx_t_13 = __Pyx_PyLong_As_uint16_t(__pyx_v_icmp_sum); if (unlikely((__pyx_t_13 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4505, __pyx_L1_error)
      scamper_dealias_probedef_icmp_csum_set(__pyx_v_icmp, __pyx_t_13);

      /* "scamper.pyx":4504
 *             if icmp_sum < 0 or icmp_sum > 65535:
 *                 raise ValueError("invalid icmp_sum")
 *             if icmp != NULL:             # <<<<<<<<<<<<<<
 *                 cscamper_dealias.scamper_dealias_probedef_icmp_csum_set(icmp, icmp_sum)
 *             else:
*/
      goto __pyx_L47;
    }

    /* "scamper.pyx":4507
 *                 cscamper_dealias.scamper_dealias_probedef_icmp_csum_set(icmp, icmp_sum)
 *             else:
 *                 raise ValueError(f"icmp_sum invalid for method {method}")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
    /*else*/ {
      __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_4 = __pyx_builtin_ValueError; 
      __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_method, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4507, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_icmp_sum_invalid_for_method, __pyx_t_9); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4507, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_5};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4507, __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_ERR(0, 4507, __pyx_L1_error)
    }
    __pyx_L47:;

    /* "scamper.pyx":4500
 *             else:
 *                 raise ValueError(f"icmp_id invalid for method {method}")
 *         if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *             icmp_sum = int(icmp_sum)
 *             if icmp_sum < 0 or icmp_sum > 65535:
*/
  }

  /* "scamper.pyx":4408
 *     cdef cscamper_dealias.scamper_dealias_probedef_t *_c
 * 
 *     def __init__(self, method, src=None, dst=None, ttl=None, size=None,             # <<<<<<<<<<<<<<
 *                  sport=None, dport=None, icmp_id=None, icmp_sum=None):
 *         cdef cscamper_addr.scamper_addr_t *a
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_m);
  __Pyx_XDECREF(__pyx_v_ttl);
  __Pyx_XDECREF(__pyx_v_size);
  __Pyx_XDECREF(__pyx_v_sport);
  __Pyx_XDECREF(__pyx_v_dport);
  __Pyx_XDECREF(__pyx_v_icmp_id);
  __Pyx_XDECREF(__pyx_v_icmp_sum);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4509
 *                 raise ValueError(f"icmp_sum invalid for method {method}")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_probedef_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_22ScamperDealiasProbedef_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_22ScamperDealiasProbedef_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_22ScamperDealiasProbedef_2__dealloc__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_22ScamperDealiasProbedef_2__dealloc__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":4510
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_probedef_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4511
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_probedef_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    scamper_dealias_probedef_free(__pyx_v_self->_c);

    /* "scamper.pyx":4510
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_probedef_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":4509
 *                 raise ValueError(f"icmp_sum invalid for method {method}")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_probedef_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":4513
 *             cscamper_dealias.scamper_dealias_probedef_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         if self._c == NULL:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_4__str__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_4__str__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  PyObject *__pyx_v_out = NULL;
  uint8_t __pyx_v_ttl;
  uint16_t __pyx_v_size;
  scamper_dealias_probedef_udp_t *__pyx_v_udp;
  scamper_dealias_probedef_icmp_t *__pyx_v_icmp;
  scamper_dealias_probedef_tcp_t *__pyx_v_tcp;
  scamper_addr_t *__pyx_v_dst;
  uint16_t __pyx_v_csum;
  uint16_t __pyx_v_sport;
  uint16_t __pyx_v_dport;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":4515
 *     def __str__(self):
 *         cdef char buf[128]
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         cscamper_dealias.scamper_dealias_probedef_method_tostr(self._c, buf,
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4516
 *         cdef char buf[128]
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         cscamper_dealias.scamper_dealias_probedef_method_tostr(self._c, buf,
 *                                                                sizeof(buf))
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4515
 *     def __str__(self):
 *         cdef char buf[128]
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         cscamper_dealias.scamper_dealias_probedef_method_tostr(self._c, buf,
*/
  }

  /* "scamper.pyx":4517
 *         if self._c == NULL:
 *             return None
 *         cscamper_dealias.scamper_dealias_probedef_method_tostr(self._c, buf,             # <<<<<<<<<<<<<<
 *                                                                sizeof(buf))
 *         out = []
*/
  (void)(scamper_dealias_probedef_method_tostr(__pyx_v_self->_c, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":4519
 *         cscamper_dealias.scamper_dealias_probedef_method_tostr(self._c, buf,
 *                                                                sizeof(buf))
 *         out = []             # <<<<<<<<<<<<<<
 *         out.append("-P " + buf.decode('UTF-8', 'strict'))
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
*/
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4519, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_out = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":4520
 *                                                                sizeof(buf))
 *         out = []
 *         out.append("-P " + buf.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
 *         size = cscamper_dealias.scamper_dealias_probedef_size_get(self._c)
*/
  __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4520, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_P, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4520, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4520, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "scamper.pyx":4521
 *         out = []
 *         out.append("-P " + buf.decode('UTF-8', 'strict'))
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)             # <<<<<<<<<<<<<<
 *         size = cscamper_dealias.scamper_dealias_probedef_size_get(self._c)
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
*/
  __pyx_v_ttl = scamper_dealias_probedef_ttl_get(__pyx_v_self->_c);

  /* "scamper.pyx":4522
 *         out.append("-P " + buf.decode('UTF-8', 'strict'))
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
 *         size = cscamper_dealias.scamper_dealias_probedef_size_get(self._c)             # <<<<<<<<<<<<<<
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
*/
  __pyx_v_size = scamper_dealias_probedef_size_get(__pyx_v_self->_c);

  /* "scamper.pyx":4523
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
 *         size = cscamper_dealias.scamper_dealias_probedef_size_get(self._c)
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)             # <<<<<<<<<<<<<<
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
*/
  __pyx_v_udp = scamper_dealias_probedef_udp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4524
 *         size = cscamper_dealias.scamper_dealias_probedef_size_get(self._c)
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)             # <<<<<<<<<<<<<<
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         dst = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)
*/
  __pyx_v_icmp = scamper_dealias_probedef_icmp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4525
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)             # <<<<<<<<<<<<<<
 *         dst = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)
 *         if icmp != NULL:
*/
  __pyx_v_tcp = scamper_dealias_probedef_tcp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4526
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         dst = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)             # <<<<<<<<<<<<<<
 *         if icmp != NULL:
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
*/
  __pyx_v_dst = scamper_dealias_probedef_dst_get(__pyx_v_self->_c);

  /* "scamper.pyx":4527
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         dst = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)
 *         if icmp != NULL:             # <<<<<<<<<<<<<<
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 *             if csum != 0:
*/
  __pyx_t_1 = (__pyx_v_icmp != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4528
 *         dst = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)
 *         if icmp != NULL:
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)             # <<<<<<<<<<<<<<
 *             if csum != 0:
 *                 out.append(f"-c {csum}")
*/
    __pyx_v_csum = scamper_dealias_probedef_icmp_csum_get(__pyx_v_icmp);

    /* "scamper.pyx":4529
 *         if icmp != NULL:
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 *             if csum != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f"-c {csum}")
 *         if udp != NULL or tcp != NULL:
*/
    __pyx_t_1 = (__pyx_v_csum != 0);
    if (__pyx_t_1) {

      /* "scamper.pyx":4530
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 *             if csum != 0:
 *                 out.append(f"-c {csum}")             # <<<<<<<<<<<<<<
 *         if udp != NULL or tcp != NULL:
 *             if udp != NULL:
*/
      __pyx_t_4 = __Pyx_PyLong_From_uint16_t(__pyx_v_csum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4530, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4530, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_c_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4530, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4530, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "scamper.pyx":4529
 *         if icmp != NULL:
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 *             if csum != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f"-c {csum}")
 *         if udp != NULL or tcp != NULL:
*/
    }

    /* "scamper.pyx":4527
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         dst = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)
 *         if icmp != NULL:             # <<<<<<<<<<<<<<
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 *             if csum != 0:
*/
  }

  /* "scamper.pyx":4531
 *             if csum != 0:
 *                 out.append(f"-c {csum}")
 *         if udp != NULL or tcp != NULL:             # <<<<<<<<<<<<<<
 *             if udp != NULL:
 *                 sport = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
*/
  __pyx_t_6 = (__pyx_v_udp != NULL);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_1 = __pyx_t_6;
    goto __pyx_L7_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_tcp != NULL);
  __pyx_t_1 = __pyx_t_6;
  __pyx_L7_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":4532
 *                 out.append(f"-c {csum}")
 *         if udp != NULL or tcp != NULL:
 *             if udp != NULL:             # <<<<<<<<<<<<<<
 *                 sport = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *                 dport = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
*/
    __pyx_t_1 = (__pyx_v_udp != NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":4533
 *         if udp != NULL or tcp != NULL:
 *             if udp != NULL:
 *                 sport = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)             # <<<<<<<<<<<<<<
 *                 dport = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *             else:
*/
      __pyx_v_sport = scamper_dealias_probedef_udp_sport_get(__pyx_v_udp);

      /* "scamper.pyx":4534
 *             if udp != NULL:
 *                 sport = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *                 dport = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)             # <<<<<<<<<<<<<<
 *             else:
 *                 sport = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
*/
      __pyx_v_dport = scamper_dealias_probedef_udp_dport_get(__pyx_v_udp);

      /* "scamper.pyx":4532
 *                 out.append(f"-c {csum}")
 *         if udp != NULL or tcp != NULL:
 *             if udp != NULL:             # <<<<<<<<<<<<<<
 *                 sport = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *                 dport = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
*/
      goto __pyx_L9;
    }

    /* "scamper.pyx":4536
 *                 dport = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *             else:
 *                 sport = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)             # <<<<<<<<<<<<<<
 *                 dport = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *             if dport != 0:
*/
    /*else*/ {
      __pyx_v_sport = scamper_dealias_probedef_tcp_sport_get(__pyx_v_tcp);

      /* "scamper.pyx":4537
 *             else:
 *                 sport = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *                 dport = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)             # <<<<<<<<<<<<<<
 *             if dport != 0:
 *                 out.append(f"-d {dport}")
*/
      __pyx_v_dport = scamper_dealias_probedef_tcp_dport_get(__pyx_v_tcp);
    }
    __pyx_L9:;

    /* "scamper.pyx":4538
 *                 sport = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *                 dport = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *             if dport != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f"-d {dport}")
 *             if sport != 0:
*/
    __pyx_t_1 = (__pyx_v_dport != 0);
    if (__pyx_t_1) {

      /* "scamper.pyx":4539
 *                 dport = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *             if dport != 0:
 *                 out.append(f"-d {dport}")             # <<<<<<<<<<<<<<
 *             if sport != 0:
 *                 out.append(f"-F {sport}")
*/
      __pyx_t_4 = __Pyx_PyLong_From_uint16_t(__pyx_v_dport); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4539, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4539, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_d_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4539, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4539, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "scamper.pyx":4538
 *                 sport = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *                 dport = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *             if dport != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f"-d {dport}")
 *             if sport != 0:
*/
    }

    /* "scamper.pyx":4540
 *             if dport != 0:
 *                 out.append(f"-d {dport}")
 *             if sport != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f"-F {sport}")
 *         if dst != NULL:
*/
    __pyx_t_1 = (__pyx_v_sport != 0);
    if (__pyx_t_1) {

      /* "scamper.pyx":4541
 *                 out.append(f"-d {dport}")
 *             if sport != 0:
 *                 out.append(f"-F {sport}")             # <<<<<<<<<<<<<<
 *         if dst != NULL:
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
*/
      __pyx_t_4 = __Pyx_PyLong_From_uint16_t(__pyx_v_sport); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_F, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_4); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4541, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "scamper.pyx":4540
 *             if dport != 0:
 *                 out.append(f"-d {dport}")
 *             if sport != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f"-F {sport}")
 *         if dst != NULL:
*/
    }

    /* "scamper.pyx":4531
 *             if csum != 0:
 *                 out.append(f"-c {csum}")
 *         if udp != NULL or tcp != NULL:             # <<<<<<<<<<<<<<
 *             if udp != NULL:
 *                 sport = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
*/
  }

  /* "scamper.pyx":4542
 *             if sport != 0:
 *                 out.append(f"-F {sport}")
 *         if dst != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
 *             out.append("-i " + buf.decode('UTF-8', 'strict'))
*/
  __pyx_t_1 = (__pyx_v_dst != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4543
 *                 out.append(f"-F {sport}")
 *         if dst != NULL:
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *             out.append("-i " + buf.decode('UTF-8', 'strict'))
 *         if size != 0:
*/
    (void)(scamper_addr_tostr(__pyx_v_dst, __pyx_v_buf, (sizeof(__pyx_v_buf))));

    /* "scamper.pyx":4544
 *         if dst != NULL:
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
 *             out.append("-i " + buf.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *         if size != 0:
 *             out.append(f"-s {size}")
*/
    __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4544, __pyx_L1_error)
    __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_i_3, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4544, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4544, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":4542
 *             if sport != 0:
 *                 out.append(f"-F {sport}")
 *         if dst != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
 *             out.append("-i " + buf.decode('UTF-8', 'strict'))
*/
  }

  /* "scamper.pyx":4545
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
 *             out.append("-i " + buf.decode('UTF-8', 'strict'))
 *         if size != 0:             # <<<<<<<<<<<<<<
 *             out.append(f"-s {size}")
 *         if ttl != 0:
*/
  __pyx_t_1 = (__pyx_v_size != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":4546
 *             out.append("-i " + buf.decode('UTF-8', 'strict'))
 *         if size != 0:
 *             out.append(f"-s {size}")             # <<<<<<<<<<<<<<
 *         if ttl != 0:
 *             out.append(f"-t {ttl}")
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_s, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4546, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4546, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":4545
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
 *             out.append("-i " + buf.decode('UTF-8', 'strict'))
 *         if size != 0:             # <<<<<<<<<<<<<<
 *             out.append(f"-s {size}")
 *         if ttl != 0:
*/
  }

  /* "scamper.pyx":4547
 *         if size != 0:
 *             out.append(f"-s {size}")
 *         if ttl != 0:             # <<<<<<<<<<<<<<
 *             out.append(f"-t {ttl}")
 *         return ' '.join(out)
*/
  __pyx_t_1 = (__pyx_v_ttl != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":4548
 *             out.append(f"-s {size}")
 *         if ttl != 0:
 *             out.append(f"-t {ttl}")             # <<<<<<<<<<<<<<
 *         return ' '.join(out)
 * 
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint8_t(__pyx_v_ttl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_t, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4548, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4548, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":4547
 *         if size != 0:
 *             out.append(f"-s {size}")
 *         if ttl != 0:             # <<<<<<<<<<<<<<
 *             out.append(f"-t {ttl}")
 *         return ' '.join(out)
*/
  }

  /* "scamper.pyx":4549
 *         if ttl != 0:
 *             out.append(f"-t {ttl}")
 *         return ' '.join(out)             # <<<<<<<<<<<<<<
 * 
 *     def __repr__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4549, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4513
 *             cscamper_dealias.scamper_dealias_probedef_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         if self._c == NULL:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4551
 *         return ' '.join(out)
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         if self._c == NULL:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_7__repr__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_7__repr__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_6__repr__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_6__repr__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  uint8_t __pyx_v_ttl;
  uint16_t __pyx_v_size;
  scamper_dealias_probedef_udp_t *__pyx_v_udp;
  scamper_dealias_probedef_icmp_t *__pyx_v_icmp;
  scamper_dealias_probedef_tcp_t *__pyx_v_tcp;
  scamper_addr_t *__pyx_v_src;
  scamper_addr_t *__pyx_v_dst;
  PyObject *__pyx_v_out = NULL;
  uint16_t __pyx_v_sp;
  uint16_t __pyx_v_dp;
  uint16_t __pyx_v_icmpid;
  uint16_t __pyx_v_csum;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__repr__", 0);

  /* "scamper.pyx":4553
 *     def __repr__(self):
 *         cdef char buf[128]
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4554
 *         cdef char buf[128]
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
 *         size = cscamper_dealias.scamper_dealias_probedef_size_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4553
 *     def __repr__(self):
 *         cdef char buf[128]
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
*/
  }

  /* "scamper.pyx":4555
 *         if self._c == NULL:
 *             return None
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)             # <<<<<<<<<<<<<<
 *         size = cscamper_dealias.scamper_dealias_probedef_size_get(self._c)
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
*/
  __pyx_v_ttl = scamper_dealias_probedef_ttl_get(__pyx_v_self->_c);

  /* "scamper.pyx":4556
 *             return None
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
 *         size = cscamper_dealias.scamper_dealias_probedef_size_get(self._c)             # <<<<<<<<<<<<<<
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
*/
  __pyx_v_size = scamper_dealias_probedef_size_get(__pyx_v_self->_c);

  /* "scamper.pyx":4557
 *         ttl = cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
 *         size = cscamper_dealias.scamper_dealias_probedef_size_get(self._c)
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)             # <<<<<<<<<<<<<<
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
*/
  __pyx_v_udp = scamper_dealias_probedef_udp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4558
 *         size = cscamper_dealias.scamper_dealias_probedef_size_get(self._c)
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)             # <<<<<<<<<<<<<<
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         src = cscamper_dealias.scamper_dealias_probedef_src_get(self._c)
*/
  __pyx_v_icmp = scamper_dealias_probedef_icmp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4559
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)             # <<<<<<<<<<<<<<
 *         src = cscamper_dealias.scamper_dealias_probedef_src_get(self._c)
 *         dst = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)
*/
  __pyx_v_tcp = scamper_dealias_probedef_tcp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4560
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         src = cscamper_dealias.scamper_dealias_probedef_src_get(self._c)             # <<<<<<<<<<<<<<
 *         dst = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)
 *         cscamper_dealias.scamper_dealias_probedef_method_tostr(self._c, buf,
*/
  __pyx_v_src = scamper_dealias_probedef_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":4561
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         src = cscamper_dealias.scamper_dealias_probedef_src_get(self._c)
 *         dst = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)             # <<<<<<<<<<<<<<
 *         cscamper_dealias.scamper_dealias_probedef_method_tostr(self._c, buf,
 *                                                                sizeof(buf))
*/
  __pyx_v_dst = scamper_dealias_probedef_dst_get(__pyx_v_self->_c);

  /* "scamper.pyx":4562
 *         src = cscamper_dealias.scamper_dealias_probedef_src_get(self._c)
 *         dst = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)
 *         cscamper_dealias.scamper_dealias_probedef_method_tostr(self._c, buf,             # <<<<<<<<<<<<<<
 *                                                                sizeof(buf))
 * 
*/
  (void)(scamper_dealias_probedef_method_tostr(__pyx_v_self->_c, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":4565
 *                                                                sizeof(buf))
 * 
 *         out = []             # <<<<<<<<<<<<<<
 *         out.append("ScamperDealiasProbedef('" + buf.decode('UTF-8', 'strict') + "'")
 * 
*/
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4565, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_out = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":4566
 * 
 *         out = []
 *         out.append("ScamperDealiasProbedef('" + buf.decode('UTF-8', 'strict') + "'")             # <<<<<<<<<<<<<<
 * 
 *         if src != NULL:
*/
  __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4566, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_ScamperDealiasProbedef, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u__13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4566, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4568
 *         out.append("ScamperDealiasProbedef('" + buf.decode('UTF-8', 'strict') + "'")
 * 
 *         if src != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_tostr(src, buf, sizeof(buf))
 *             out.append(", src='" + buf.decode('UTF-8', 'strict') + "'")
*/
  __pyx_t_1 = (__pyx_v_src != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4569
 * 
 *         if src != NULL:
 *             cscamper_addr.scamper_addr_tostr(src, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *             out.append(", src='" + buf.decode('UTF-8', 'strict') + "'")
 *         if dst != NULL:
*/
    (void)(scamper_addr_tostr(__pyx_v_src, __pyx_v_buf, (sizeof(__pyx_v_buf))));

    /* "scamper.pyx":4570
 *         if src != NULL:
 *             cscamper_addr.scamper_addr_tostr(src, buf, sizeof(buf))
 *             out.append(", src='" + buf.decode('UTF-8', 'strict') + "'")             # <<<<<<<<<<<<<<
 *         if dst != NULL:
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
*/
    __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4570, __pyx_L1_error)
    __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_src_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u__13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4570, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4570, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":4568
 *         out.append("ScamperDealiasProbedef('" + buf.decode('UTF-8', 'strict') + "'")
 * 
 *         if src != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_tostr(src, buf, sizeof(buf))
 *             out.append(", src='" + buf.decode('UTF-8', 'strict') + "'")
*/
  }

  /* "scamper.pyx":4571
 *             cscamper_addr.scamper_addr_tostr(src, buf, sizeof(buf))
 *             out.append(", src='" + buf.decode('UTF-8', 'strict') + "'")
 *         if dst != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
 *             out.append(", dst='" + buf.decode('UTF-8', 'strict') + "'")
*/
  __pyx_t_1 = (__pyx_v_dst != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4572
 *             out.append(", src='" + buf.decode('UTF-8', 'strict') + "'")
 *         if dst != NULL:
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *             out.append(", dst='" + buf.decode('UTF-8', 'strict') + "'")
 *         if ttl != 0:
*/
    (void)(scamper_addr_tostr(__pyx_v_dst, __pyx_v_buf, (sizeof(__pyx_v_buf))));

    /* "scamper.pyx":4573
 *         if dst != NULL:
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
 *             out.append(", dst='" + buf.decode('UTF-8', 'strict') + "'")             # <<<<<<<<<<<<<<
 *         if ttl != 0:
 *             out.append(f", ttl={ttl}")
*/
    __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4573, __pyx_L1_error)
    __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_dst_2, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyUnicode_ConcatInPlace(__pyx_t_4, __pyx_mstate_global->__pyx_kp_u__13); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4573, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4573, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":4571
 *             cscamper_addr.scamper_addr_tostr(src, buf, sizeof(buf))
 *             out.append(", src='" + buf.decode('UTF-8', 'strict') + "'")
 *         if dst != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
 *             out.append(", dst='" + buf.decode('UTF-8', 'strict') + "'")
*/
  }

  /* "scamper.pyx":4574
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
 *             out.append(", dst='" + buf.decode('UTF-8', 'strict') + "'")
 *         if ttl != 0:             # <<<<<<<<<<<<<<
 *             out.append(f", ttl={ttl}")
 *         if size != 0:
*/
  __pyx_t_1 = (__pyx_v_ttl != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":4575
 *             out.append(", dst='" + buf.decode('UTF-8', 'strict') + "'")
 *         if ttl != 0:
 *             out.append(f", ttl={ttl}")             # <<<<<<<<<<<<<<
 *         if size != 0:
 *             out.append(f", size={size}")
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint8_t(__pyx_v_ttl); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_ttl_4, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4575, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4575, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":4574
 *             cscamper_addr.scamper_addr_tostr(dst, buf, sizeof(buf))
 *             out.append(", dst='" + buf.decode('UTF-8', 'strict') + "'")
 *         if ttl != 0:             # <<<<<<<<<<<<<<
 *             out.append(f", ttl={ttl}")
 *         if size != 0:
*/
  }

  /* "scamper.pyx":4576
 *         if ttl != 0:
 *             out.append(f", ttl={ttl}")
 *         if size != 0:             # <<<<<<<<<<<<<<
 *             out.append(f", size={size}")
 * 
*/
  __pyx_t_1 = (__pyx_v_size != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":4577
 *             out.append(f", ttl={ttl}")
 *         if size != 0:
 *             out.append(f", size={size}")             # <<<<<<<<<<<<<<
 * 
 *         if udp != NULL:
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_size); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_size_2, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4577, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4577, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":4576
 *         if ttl != 0:
 *             out.append(f", ttl={ttl}")
 *         if size != 0:             # <<<<<<<<<<<<<<
 *             out.append(f", size={size}")
 * 
*/
  }

  /* "scamper.pyx":4579
 *             out.append(f", size={size}")
 * 
 *         if udp != NULL:             # <<<<<<<<<<<<<<
 *             sp = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *             dp = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
*/
  __pyx_t_1 = (__pyx_v_udp != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4580
 * 
 *         if udp != NULL:
 *             sp = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)             # <<<<<<<<<<<<<<
 *             dp = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *             if sp != 0:
*/
    __pyx_v_sp = scamper_dealias_probedef_udp_sport_get(__pyx_v_udp);

    /* "scamper.pyx":4581
 *         if udp != NULL:
 *             sp = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *             dp = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)             # <<<<<<<<<<<<<<
 *             if sp != 0:
 *                 out.append(f", sport={sp}")
*/
    __pyx_v_dp = scamper_dealias_probedef_udp_dport_get(__pyx_v_udp);

    /* "scamper.pyx":4582
 *             sp = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *             dp = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *             if sp != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", sport={sp}")
 *             if dp != 0:
*/
    __pyx_t_1 = (__pyx_v_sp != 0);
    if (__pyx_t_1) {

      /* "scamper.pyx":4583
 *             dp = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *             if sp != 0:
 *                 out.append(f", sport={sp}")             # <<<<<<<<<<<<<<
 *             if dp != 0:
 *                 out.append(f", dport={dp}")
*/
      __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_sp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4583, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4583, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_sport_2, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4583, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4583, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":4582
 *             sp = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *             dp = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *             if sp != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", sport={sp}")
 *             if dp != 0:
*/
    }

    /* "scamper.pyx":4584
 *             if sp != 0:
 *                 out.append(f", sport={sp}")
 *             if dp != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", dport={dp}")
 *         elif tcp != NULL:
*/
    __pyx_t_1 = (__pyx_v_dp != 0);
    if (__pyx_t_1) {

      /* "scamper.pyx":4585
 *                 out.append(f", sport={sp}")
 *             if dp != 0:
 *                 out.append(f", dport={dp}")             # <<<<<<<<<<<<<<
 *         elif tcp != NULL:
 *             sp = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
*/
      __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_dp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_dport_2, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4585, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4585, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":4584
 *             if sp != 0:
 *                 out.append(f", sport={sp}")
 *             if dp != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", dport={dp}")
 *         elif tcp != NULL:
*/
    }

    /* "scamper.pyx":4579
 *             out.append(f", size={size}")
 * 
 *         if udp != NULL:             # <<<<<<<<<<<<<<
 *             sp = cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *             dp = cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
*/
    goto __pyx_L8;
  }

  /* "scamper.pyx":4586
 *             if dp != 0:
 *                 out.append(f", dport={dp}")
 *         elif tcp != NULL:             # <<<<<<<<<<<<<<
 *             sp = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *             dp = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
*/
  __pyx_t_1 = (__pyx_v_tcp != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4587
 *                 out.append(f", dport={dp}")
 *         elif tcp != NULL:
 *             sp = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)             # <<<<<<<<<<<<<<
 *             dp = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *             if sp != 0:
*/
    __pyx_v_sp = scamper_dealias_probedef_tcp_sport_get(__pyx_v_tcp);

    /* "scamper.pyx":4588
 *         elif tcp != NULL:
 *             sp = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *             dp = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)             # <<<<<<<<<<<<<<
 *             if sp != 0:
 *                 out.append(f", sport={sp}")
*/
    __pyx_v_dp = scamper_dealias_probedef_tcp_dport_get(__pyx_v_tcp);

    /* "scamper.pyx":4589
 *             sp = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *             dp = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *             if sp != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", sport={sp}")
 *             if dp != 0:
*/
    __pyx_t_1 = (__pyx_v_sp != 0);
    if (__pyx_t_1) {

      /* "scamper.pyx":4590
 *             dp = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *             if sp != 0:
 *                 out.append(f", sport={sp}")             # <<<<<<<<<<<<<<
 *             if dp != 0:
 *                 out.append(f", dport={dp}")
*/
      __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_sp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_sport_2, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4590, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":4589
 *             sp = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *             dp = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *             if sp != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", sport={sp}")
 *             if dp != 0:
*/
    }

    /* "scamper.pyx":4591
 *             if sp != 0:
 *                 out.append(f", sport={sp}")
 *             if dp != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", dport={dp}")
 *         elif icmp != NULL:
*/
    __pyx_t_1 = (__pyx_v_dp != 0);
    if (__pyx_t_1) {

      /* "scamper.pyx":4592
 *                 out.append(f", sport={sp}")
 *             if dp != 0:
 *                 out.append(f", dport={dp}")             # <<<<<<<<<<<<<<
 *         elif icmp != NULL:
 *             icmpid = cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
*/
      __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_dp); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4592, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4592, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_dport_2, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4592, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4592, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":4591
 *             if sp != 0:
 *                 out.append(f", sport={sp}")
 *             if dp != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", dport={dp}")
 *         elif icmp != NULL:
*/
    }

    /* "scamper.pyx":4586
 *             if dp != 0:
 *                 out.append(f", dport={dp}")
 *         elif tcp != NULL:             # <<<<<<<<<<<<<<
 *             sp = cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *             dp = cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
*/
    goto __pyx_L8;
  }

  /* "scamper.pyx":4593
 *             if dp != 0:
 *                 out.append(f", dport={dp}")
 *         elif icmp != NULL:             # <<<<<<<<<<<<<<
 *             icmpid = cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
*/
  __pyx_t_1 = (__pyx_v_icmp != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4594
 *                 out.append(f", dport={dp}")
 *         elif icmp != NULL:
 *             icmpid = cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)             # <<<<<<<<<<<<<<
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 *             if icmpid != 0:
*/
    __pyx_v_icmpid = scamper_dealias_probedef_icmp_id_get(__pyx_v_icmp);

    /* "scamper.pyx":4595
 *         elif icmp != NULL:
 *             icmpid = cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)             # <<<<<<<<<<<<<<
 *             if icmpid != 0:
 *                 out.append(f", icmp_id={icmpid}")
*/
    __pyx_v_csum = scamper_dealias_probedef_icmp_csum_get(__pyx_v_icmp);

    /* "scamper.pyx":4596
 *             icmpid = cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 *             if icmpid != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", icmp_id={icmpid}")
 *             if csum != 0:
*/
    __pyx_t_1 = (__pyx_v_icmpid != 0);
    if (__pyx_t_1) {

      /* "scamper.pyx":4597
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 *             if icmpid != 0:
 *                 out.append(f", icmp_id={icmpid}")             # <<<<<<<<<<<<<<
 *             if csum != 0:
 *                 out.append(f", icmp_sum={csum}")
*/
      __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_icmpid); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_icmp_id_2, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4597, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":4596
 *             icmpid = cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 *             if icmpid != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", icmp_id={icmpid}")
 *             if csum != 0:
*/
    }

    /* "scamper.pyx":4598
 *             if icmpid != 0:
 *                 out.append(f", icmp_id={icmpid}")
 *             if csum != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", icmp_sum={csum}")
 *         out.append(")")
*/
    __pyx_t_1 = (__pyx_v_csum != 0);
    if (__pyx_t_1) {

      /* "scamper.pyx":4599
 *                 out.append(f", icmp_id={icmpid}")
 *             if csum != 0:
 *                 out.append(f", icmp_sum={csum}")             # <<<<<<<<<<<<<<
 *         out.append(")")
 *         return ''.join(out)
*/
      __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_csum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4599, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4599, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_icmp_sum_2, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4599, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4599, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":4598
 *             if icmpid != 0:
 *                 out.append(f", icmp_id={icmpid}")
 *             if csum != 0:             # <<<<<<<<<<<<<<
 *                 out.append(f", icmp_sum={csum}")
 *         out.append(")")
*/
    }

    /* "scamper.pyx":4593
 *             if dp != 0:
 *                 out.append(f", dport={dp}")
 *         elif icmp != NULL:             # <<<<<<<<<<<<<<
 *             icmpid = cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
 *             csum = cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
*/
  }
  __pyx_L8:;

  /* "scamper.pyx":4600
 *             if csum != 0:
 *                 out.append(f", icmp_sum={csum}")
 *         out.append(")")             # <<<<<<<<<<<<<<
 *         return ''.join(out)
 * 
*/
  __pyx_t_5 = __Pyx_PyList_Append(__pyx_v_out, __pyx_mstate_global->__pyx_kp_u__10); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 4600, __pyx_L1_error)

  /* "scamper.pyx":4601
 *                 out.append(f", icmp_sum={csum}")
 *         out.append(")")
 *         return ''.join(out)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__4, __pyx_v_out); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4601, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4551
 *         return ' '.join(out)
 * 
 *     def __repr__(self):             # <<<<<<<<<<<<<<
 *         cdef char buf[128]
 *         if self._c == NULL:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4603
 *         return ''.join(out)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperDealiasProbedef from_ptr(cscamper_dealias.scamper_dealias_probedef_t *ptr):
 *         cdef ScamperDealiasProbedef pd
*/

static struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_f_7scamper_22ScamperDealiasProbedef_from_ptr(scamper_dealias_probedef_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_pd = 0;
  struct __pyx_obj_7scamper_ScamperDealiasProbedef *__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("from_ptr", 0);

  /* "scamper.pyx":4606
 *     cdef ScamperDealiasProbedef from_ptr(cscamper_dealias.scamper_dealias_probedef_t *ptr):
 *         cdef ScamperDealiasProbedef pd
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         pd = ScamperDealiasProbedef.__new__(ScamperDealiasProbedef)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4607
 *         cdef ScamperDealiasProbedef pd
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         pd = ScamperDealiasProbedef.__new__(ScamperDealiasProbedef)
 *         pd._c = cscamper_dealias.scamper_dealias_probedef_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4606
 *     cdef ScamperDealiasProbedef from_ptr(cscamper_dealias.scamper_dealias_probedef_t *ptr):
 *         cdef ScamperDealiasProbedef pd
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         pd = ScamperDealiasProbedef.__new__(ScamperDealiasProbedef)
*/
  }

  /* "scamper.pyx":4608
 *         if ptr == NULL:
 *             return None
 *         pd = ScamperDealiasProbedef.__new__(ScamperDealiasProbedef)             # <<<<<<<<<<<<<<
 *         pd._c = cscamper_dealias.scamper_dealias_probedef_use(ptr)
 *         return pd
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperDealiasProbedef(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasProbedef), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4608, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_pd = ((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":4609
 *             return None
 *         pd = ScamperDealiasProbedef.__new__(ScamperDealiasProbedef)
 *         pd._c = cscamper_dealias.scamper_dealias_probedef_use(ptr)             # <<<<<<<<<<<<<<
 *         return pd
 * 
*/
  __pyx_v_pd->_c = scamper_dealias_probedef_use(__pyx_v_ptr);

  /* "scamper.pyx":4610
 *         pd = ScamperDealiasProbedef.__new__(ScamperDealiasProbedef)
 *         pd._c = cscamper_dealias.scamper_dealias_probedef_use(ptr)
 *         return pd             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_pd);
  __pyx_r = __pyx_v_pd;
  goto __pyx_L0;

  /* "scamper.pyx":4603
 *         return ''.join(out)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperDealiasProbedef from_ptr(cscamper_dealias.scamper_dealias_probedef_t *ptr):
 *         cdef ScamperDealiasProbedef pd
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pd);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4612
 *         return pd
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_3dst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_3dst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_3dst___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_3dst___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":4620
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_dealias_probedef_dst_get(__pyx_v_self->_c);

  /* "scamper.pyx":4621
 *         """
 *         c_a = cscamper_dealias.scamper_dealias_probedef_dst_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4612
 *         return pd
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.dst.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4623
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_3src___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_3src___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":4631
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_dealias.scamper_dealias_probedef_src_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_dealias_probedef_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":4632
 *         """
 *         c_a = cscamper_dealias.scamper_dealias_probedef_src_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4623
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4634
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_3ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_3ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_3ttl___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_3ttl___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__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("__get__", 0);

  /* "scamper.pyx":4642
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_dealias_probedef_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4642, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4634
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4644
 *         return cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def size(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_4size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_4size_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_4size___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_4size___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__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("__get__", 0);

  /* "scamper.pyx":4652
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_probedef_size_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_dealias_probedef_size_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4652, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4644
 *         return cscamper_dealias.scamper_dealias_probedef_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def size(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4654
 *         return cscamper_dealias.scamper_dealias_probedef_size_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def sport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_5sport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_5sport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_5sport___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_5sport___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self) {
  scamper_dealias_probedef_udp_t *__pyx_v_udp;
  scamper_dealias_probedef_tcp_t *__pyx_v_tcp;
  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("__get__", 0);

  /* "scamper.pyx":4663
 *         :rtype: int
 *         """
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)             # <<<<<<<<<<<<<<
 *         if udp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
*/
  __pyx_v_udp = scamper_dealias_probedef_udp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4664
 *         """
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         if udp != NULL:             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_udp != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4665
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         if udp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)             # <<<<<<<<<<<<<<
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if tcp != NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_dealias_probedef_udp_sport_get(__pyx_v_udp)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4665, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":4664
 *         """
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         if udp != NULL:             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
*/
  }

  /* "scamper.pyx":4666
 *         if udp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)             # <<<<<<<<<<<<<<
 *         if tcp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
*/
  __pyx_v_tcp = scamper_dealias_probedef_tcp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4667
 *             return cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if tcp != NULL:             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *         return None
*/
  __pyx_t_1 = (__pyx_v_tcp != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4668
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if tcp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_dealias_probedef_tcp_sport_get(__pyx_v_tcp)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4668, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":4667
 *             return cscamper_dealias.scamper_dealias_probedef_udp_sport_get(udp)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if tcp != NULL:             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *         return None
*/
  }

  /* "scamper.pyx":4669
 *         if tcp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_tcp_sport_get(tcp)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":4654
 *         return cscamper_dealias.scamper_dealias_probedef_size_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def sport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.sport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4671
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_5dport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_5dport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_5dport___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_5dport___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self) {
  scamper_dealias_probedef_udp_t *__pyx_v_udp;
  scamper_dealias_probedef_tcp_t *__pyx_v_tcp;
  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("__get__", 0);

  /* "scamper.pyx":4680
 *         :rtype: int
 *         """
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)             # <<<<<<<<<<<<<<
 *         if udp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
*/
  __pyx_v_udp = scamper_dealias_probedef_udp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4681
 *         """
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         if udp != NULL:             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_udp != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4682
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         if udp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)             # <<<<<<<<<<<<<<
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if tcp != NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_dealias_probedef_udp_dport_get(__pyx_v_udp)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4682, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":4681
 *         """
 *         udp = cscamper_dealias.scamper_dealias_probedef_udp_get(self._c)
 *         if udp != NULL:             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
*/
  }

  /* "scamper.pyx":4683
 *         if udp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)             # <<<<<<<<<<<<<<
 *         if tcp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
*/
  __pyx_v_tcp = scamper_dealias_probedef_tcp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4684
 *             return cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if tcp != NULL:             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *         return None
*/
  __pyx_t_1 = (__pyx_v_tcp != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4685
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if tcp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_dealias_probedef_tcp_dport_get(__pyx_v_tcp)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4685, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":4684
 *             return cscamper_dealias.scamper_dealias_probedef_udp_dport_get(udp)
 *         tcp = cscamper_dealias.scamper_dealias_probedef_tcp_get(self._c)
 *         if tcp != NULL:             # <<<<<<<<<<<<<<
 *             return cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *         return None
*/
  }

  /* "scamper.pyx":4686
 *         if tcp != NULL:
 *             return cscamper_dealias.scamper_dealias_probedef_tcp_dport_get(tcp)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":4671
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.dport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4688
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_id(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_7icmp_id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_7icmp_id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_7icmp_id___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_7icmp_id___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self) {
  scamper_dealias_probedef_icmp_t *__pyx_v_icmp;
  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("__get__", 0);

  /* "scamper.pyx":4697
 *         :rtype: int
 *         """
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)             # <<<<<<<<<<<<<<
 *         if icmp == NULL:
 *             return None
*/
  __pyx_v_icmp = scamper_dealias_probedef_icmp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4698
 *         """
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         if icmp == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
*/
  __pyx_t_1 = (__pyx_v_icmp == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4699
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         if icmp == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4698
 *         """
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         if icmp == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
*/
  }

  /* "scamper.pyx":4700
 *         if icmp == NULL:
 *             return None
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_dealias_probedef_icmp_id_get(__pyx_v_icmp)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4700, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4688
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_id(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.icmp_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4702
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_sum(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_8icmp_sum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_8icmp_sum_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_8icmp_sum___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_8icmp_sum___get__(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self) {
  scamper_dealias_probedef_icmp_t *__pyx_v_icmp;
  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("__get__", 0);

  /* "scamper.pyx":4711
 *         :rtype: int
 *         """
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)             # <<<<<<<<<<<<<<
 *         if icmp == NULL:
 *             return None
*/
  __pyx_v_icmp = scamper_dealias_probedef_icmp_get(__pyx_v_self->_c);

  /* "scamper.pyx":4712
 *         """
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         if icmp == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
*/
  __pyx_t_1 = (__pyx_v_icmp == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4713
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         if icmp == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4712
 *         """
 *         icmp = cscamper_dealias.scamper_dealias_probedef_icmp_get(self._c)
 *         if icmp == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
*/
  }

  /* "scamper.pyx":4714
 *         if icmp == NULL:
 *             return None
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)             # <<<<<<<<<<<<<<
 * 
 *     def is_udp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_dealias_probedef_icmp_csum_get(__pyx_v_icmp)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4714, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4702
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_id_get(icmp)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_sum(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.icmp_sum.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4716
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that reports if probe used UDP probes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_9is_udp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_22ScamperDealiasProbedef_8is_udp, "\n        get method that reports if probe used UDP probes.\n\n        :returns: True if the probe used UDP probes.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_22ScamperDealiasProbedef_9is_udp = {"is_udp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperDealiasProbedef_9is_udp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_22ScamperDealiasProbedef_8is_udp};
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_9is_udp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_udp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_udp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_udp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_8is_udp(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_8is_udp(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__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("is_udp", 0);

  /* "scamper.pyx":4723
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_probedef_is_udp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_icmp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_probedef_is_udp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4723, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4716
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that reports if probe used UDP probes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.is_udp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4725
 *         return cscamper_dealias.scamper_dealias_probedef_is_udp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that reports if probe used ICMP probes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_11is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_22ScamperDealiasProbedef_10is_icmp, "\n        get method that reports if probe used ICMP probes.\n\n        :returns: True if the probe used ICMP probes.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_22ScamperDealiasProbedef_11is_icmp = {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperDealiasProbedef_11is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_22ScamperDealiasProbedef_10is_icmp};
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_11is_icmp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_icmp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_icmp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_icmp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_10is_icmp(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_10is_icmp(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__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("is_icmp", 0);

  /* "scamper.pyx":4732
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_probedef_is_icmp(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_tcp(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_probedef_is_icmp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4732, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4725
 *         return cscamper_dealias.scamper_dealias_probedef_is_udp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that reports if probe used ICMP probes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.is_icmp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4734
 *         return cscamper_dealias.scamper_dealias_probedef_is_icmp(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that reports if probe used TCP probes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_13is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_22ScamperDealiasProbedef_12is_tcp, "\n        get method that reports if probe used TCP probes.\n\n        :returns: True if the probe used TCP probes.\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_22ScamperDealiasProbedef_13is_tcp = {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperDealiasProbedef_13is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_22ScamperDealiasProbedef_12is_tcp};
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_13is_tcp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tcp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tcp", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tcp", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_12is_tcp(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_12is_tcp(struct __pyx_obj_7scamper_ScamperDealiasProbedef *__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("is_tcp", 0);

  /* "scamper.pyx":4741
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_probedef_is_tcp(self._c)             # <<<<<<<<<<<<<<
 * 
 * class _ScamperDealiasReplyIterator:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_probedef_is_tcp(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4734
 *         return cscamper_dealias.scamper_dealias_probedef_is_icmp(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that reports if probe used TCP probes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.is_tcp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_22ScamperDealiasProbedef_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperDealiasProbedef_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_14__reduce_cython__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_22ScamperDealiasProbedef_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperDealiasProbedef_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_22ScamperDealiasProbedef_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_22ScamperDealiasProbedef_16__setstate_cython__(((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22ScamperDealiasProbedef_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasProbedef *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperDealiasProbedef.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4744
 * 
 * class _ScamperDealiasReplyIterator:
 *     def __init__(self, probe):             # <<<<<<<<<<<<<<
 *         self._probe = probe
 *         self._i = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasReplyIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_28_ScamperDealiasReplyIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_28_ScamperDealiasReplyIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasReplyIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_probe = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_probe,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4744, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4744, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4744, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 4744, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 4744, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4744, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4744, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_probe = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 4744, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperDealiasReplyIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_28_ScamperDealiasReplyIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_probe);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28_ScamperDealiasReplyIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_probe) {
  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("__init__", 0);

  /* "scamper.pyx":4745
 * class _ScamperDealiasReplyIterator:
 *     def __init__(self, probe):
 *         self._probe = probe             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         self._c = probe.reply_count
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_probe_2, __pyx_v_probe) < 0) __PYX_ERR(0, 4745, __pyx_L1_error)

  /* "scamper.pyx":4746
 *     def __init__(self, probe):
 *         self._probe = probe
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         self._c = probe.reply_count
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 4746, __pyx_L1_error)

  /* "scamper.pyx":4747
 *         self._probe = probe
 *         self._i = 0
 *         self._c = probe.reply_count             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_probe, __pyx_mstate_global->__pyx_n_u_reply_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4747, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c, __pyx_t_1) < 0) __PYX_ERR(0, 4747, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":4744
 * 
 * class _ScamperDealiasReplyIterator:
 *     def __init__(self, probe):             # <<<<<<<<<<<<<<
 *         self._probe = probe
 *         self._i = 0
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper._ScamperDealiasReplyIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4749
 *         self._c = probe.reply_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasReplyIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_28_ScamperDealiasReplyIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_28_ScamperDealiasReplyIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasReplyIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4749, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4749, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 4749, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 4749, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4749, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4749, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperDealiasReplyIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_28_ScamperDealiasReplyIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28_ScamperDealiasReplyIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":4750
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":4749
 *         self._c = probe.reply_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4752
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             reply = self._probe.reply(self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasReplyIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_28_ScamperDealiasReplyIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_28_ScamperDealiasReplyIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasReplyIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4752, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4752, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 4752, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 4752, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4752, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4752, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperDealiasReplyIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_28_ScamperDealiasReplyIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28_ScamperDealiasReplyIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_reply = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":4753
 * 
 *     def __next__(self):
 *         if self._i < self._c:             # <<<<<<<<<<<<<<
 *             reply = self._probe.reply(self._i)
 *             self._i += 1
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4753, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4753, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 4753, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":4754
 *     def __next__(self):
 *         if self._i < self._c:
 *             reply = self._probe.reply(self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             return reply
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_probe_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4754, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_reply, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4754, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_reply = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":4755
 *         if self._i < self._c:
 *             reply = self._probe.reply(self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             return reply
 *         raise StopIteration
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_t_1) < 0) __PYX_ERR(0, 4755, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":4756
 *             reply = self._probe.reply(self._i)
 *             self._i += 1
 *             return reply             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_reply);
    __pyx_r = __pyx_v_reply;
    goto __pyx_L0;

    /* "scamper.pyx":4753
 * 
 *     def __next__(self):
 *         if self._i < self._c:             # <<<<<<<<<<<<<<
 *             reply = self._probe.reply(self._i)
 *             self._i += 1
*/
  }

  /* "scamper.pyx":4757
 *             self._i += 1
 *             return reply
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperDealiasProbe:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 4757, __pyx_L1_error)

  /* "scamper.pyx":4752
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             reply = self._probe.reply(self._i)
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperDealiasReplyIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_reply);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4766
 *     cdef cscamper_dealias.scamper_dealias_probe_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_19ScamperDealiasProbe_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_19ScamperDealiasProbe_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasProbe___init__(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_19ScamperDealiasProbe___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":4767
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 4767, __pyx_L1_error)

  /* "scamper.pyx":4766
 *     cdef cscamper_dealias.scamper_dealias_probe_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4769
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_probe_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_19ScamperDealiasProbe_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_19ScamperDealiasProbe_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_19ScamperDealiasProbe_2__dealloc__(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_19ScamperDealiasProbe_2__dealloc__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":4770
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_probe_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4771
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_probe_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_dealias_probe_free(__pyx_v_self->_c);

    /* "scamper.pyx":4770
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_probe_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":4769
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_probe_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":4773
 *             cscamper_dealias.scamper_dealias_probe_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperDealiasProbe from_ptr(cscamper_dealias.scamper_dealias_probe_t *ptr):
 *         cdef ScamperDealiasProbe p
*/

static struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_f_7scamper_19ScamperDealiasProbe_from_ptr(scamper_dealias_probe_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_p = 0;
  struct __pyx_obj_7scamper_ScamperDealiasProbe *__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("from_ptr", 0);

  /* "scamper.pyx":4776
 *     cdef ScamperDealiasProbe from_ptr(cscamper_dealias.scamper_dealias_probe_t *ptr):
 *         cdef ScamperDealiasProbe p
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         p = ScamperDealiasProbe.__new__(ScamperDealiasProbe)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4777
 *         cdef ScamperDealiasProbe p
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         p = ScamperDealiasProbe.__new__(ScamperDealiasProbe)
 *         p._c = cscamper_dealias.scamper_dealias_probe_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperDealiasProbe *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4776
 *     cdef ScamperDealiasProbe from_ptr(cscamper_dealias.scamper_dealias_probe_t *ptr):
 *         cdef ScamperDealiasProbe p
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         p = ScamperDealiasProbe.__new__(ScamperDealiasProbe)
*/
  }

  /* "scamper.pyx":4778
 *         if ptr == NULL:
 *             return None
 *         p = ScamperDealiasProbe.__new__(ScamperDealiasProbe)             # <<<<<<<<<<<<<<
 *         p._c = cscamper_dealias.scamper_dealias_probe_use(ptr)
 *         return p
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperDealiasProbe(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasProbe), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4778, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_p = ((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":4779
 *             return None
 *         p = ScamperDealiasProbe.__new__(ScamperDealiasProbe)
 *         p._c = cscamper_dealias.scamper_dealias_probe_use(ptr)             # <<<<<<<<<<<<<<
 *         return p
 * 
*/
  __pyx_v_p->_c = scamper_dealias_probe_use(__pyx_v_ptr);

  /* "scamper.pyx":4780
 *         p = ScamperDealiasProbe.__new__(ScamperDealiasProbe)
 *         p._c = cscamper_dealias.scamper_dealias_probe_use(ptr)
 *         return p             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_p);
  __pyx_r = __pyx_v_p;
  goto __pyx_L0;

  /* "scamper.pyx":4773
 *             cscamper_dealias.scamper_dealias_probe_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperDealiasProbe from_ptr(cscamper_dealias.scamper_dealias_probe_t *ptr):
 *         cdef ScamperDealiasProbe p
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_p);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4782
 *         return p
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probedef(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_8probedef_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_8probedef_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasProbe_8probedef___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_8probedef___get__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self) {
  scamper_dealias_probedef_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":4790
 *         :rtype: ScamperDealiasProbedef
 *         """
 *         c = cscamper_dealias.scamper_dealias_probe_def_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperDealiasProbedef.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_dealias_probe_def_get(__pyx_v_self->_c);

  /* "scamper.pyx":4791
 *         """
 *         c = cscamper_dealias.scamper_dealias_probe_def_get(self._c)
 *         return ScamperDealiasProbedef.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_22ScamperDealiasProbedef_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4791, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4782
 *         return p
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probedef(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.probedef.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4793
 *         return ScamperDealiasProbedef.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def seq(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_3seq_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_3seq_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasProbe_3seq___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_3seq___get__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__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("__get__", 0);

  /* "scamper.pyx":4802
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_probe_seq_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_dealias_probe_seq_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4802, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4793
 *         return ScamperDealiasProbedef.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def seq(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.seq.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4804
 *         return cscamper_dealias.scamper_dealias_probe_seq_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_2tx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_2tx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasProbe_2tx___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_2tx___get__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":4812
 *         :rtype: datetime
 *         """
 *         c = cscamper_dealias.scamper_dealias_probe_tx_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_dealias_probe_tx_get(__pyx_v_self->_c);

  /* "scamper.pyx":4813
 *         """
 *         c = cscamper_dealias.scamper_dealias_probe_tx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4814
 *         c = cscamper_dealias.scamper_dealias_probe_tx_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4813
 *         """
 *         c = cscamper_dealias.scamper_dealias_probe_tx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":4815
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":4816
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4816, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":4817
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     def reply(self, i=0):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4817, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4816, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 4816, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4816, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4804
 *         return cscamper_dealias.scamper_dealias_probe_seq_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.tx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4819
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def reply(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         reply(i=0)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_5reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_19ScamperDealiasProbe_4reply, "\n        reply(i=0)\n        get method that returns a specific reply for this probe.\n\n        :param int i: the specific reply sought\n        :returns: the reply\n        :rtype: ScamperDealiasReply\n        ");
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasProbe_5reply = {"reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasProbe_5reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasProbe_4reply};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_5reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reply (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4819, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4819, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "reply", 0) < 0) __PYX_ERR(0, 4819, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4819, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("reply", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 4819, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.reply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasProbe_4reply(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_4reply(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_dealias_reply_t *__pyx_v_r;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reply", 0);

  /* "scamper.pyx":4828
 *         :rtype: ScamperDealiasReply
 *         """
 *         r = cscamper_dealias.scamper_dealias_probe_reply_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperDealiasReply.from_ptr(r, self._c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4828, __pyx_L1_error)
  __pyx_v_r = scamper_dealias_probe_reply_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":4829
 *         """
 *         r = cscamper_dealias.scamper_dealias_probe_reply_get(self._c, i)
 *         return ScamperDealiasReply.from_ptr(r, self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_19ScamperDealiasReply_from_ptr(__pyx_v_r, __pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4829, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4819
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def reply(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         reply(i=0)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.reply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4831
 *         return ScamperDealiasReply.from_ptr(r, self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_11reply_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_11reply_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasProbe_11reply_count___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_11reply_count___get__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__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("__get__", 0);

  /* "scamper.pyx":4839
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_probe_replyc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def replies(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_dealias_probe_replyc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4839, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4831
 *         return ScamperDealiasReply.from_ptr(r, self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.reply_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4841
 *         return cscamper_dealias.scamper_dealias_probe_replyc_get(self._c)
 * 
 *     def replies(self):             # <<<<<<<<<<<<<<
 *         return _ScamperDealiasReplyIterator(self)
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_7replies(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasProbe_7replies = {"replies", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasProbe_7replies, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_7replies(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("replies (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("replies", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("replies", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasProbe_6replies(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_6replies(struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("replies", 0);

  /* "scamper.pyx":4842
 * 
 *     def replies(self):
 *         return _ScamperDealiasReplyIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReplyIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4842, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4842, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4841
 *         return cscamper_dealias.scamper_dealias_probe_replyc_get(self._c)
 * 
 *     def replies(self):             # <<<<<<<<<<<<<<
 *         return _ScamperDealiasReplyIterator(self)
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.replies", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4844
 *         return _ScamperDealiasReplyIterator(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ipid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_4ipid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_4ipid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasProbe_4ipid___get__(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_4ipid___get__(struct __pyx_obj_7scamper_ScamperDealiasProbe *__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("__get__", 0);

  /* "scamper.pyx":4852
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_probe_ipid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 * class _ScamperDealiasProbeIterator:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_dealias_probe_ipid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4844
 *         return _ScamperDealiasReplyIterator(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ipid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.ipid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasProbe_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasProbe_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasProbe_8__reduce_cython__(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_19ScamperDealiasProbe_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasProbe_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_19ScamperDealiasProbe_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_19ScamperDealiasProbe_10__setstate_cython__(((struct __pyx_obj_7scamper_ScamperDealiasProbe *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_19ScamperDealiasProbe_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealiasProbe *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperDealiasProbe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4855
 * 
 * class _ScamperDealiasProbeIterator:
 *     def __init__(self, dealias):             # <<<<<<<<<<<<<<
 *         self._dealias = dealias
 *         self._i = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasProbeIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_28_ScamperDealiasProbeIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_28_ScamperDealiasProbeIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasProbeIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_dealias = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_dealias,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4855, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4855, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4855, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 4855, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 4855, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4855, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4855, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_dealias = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 4855, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperDealiasProbeIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_28_ScamperDealiasProbeIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_dealias);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28_ScamperDealiasProbeIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dealias) {
  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("__init__", 0);

  /* "scamper.pyx":4856
 * class _ScamperDealiasProbeIterator:
 *     def __init__(self, dealias):
 *         self._dealias = dealias             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         self._c = dealias.probe_count
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dealias_2, __pyx_v_dealias) < 0) __PYX_ERR(0, 4856, __pyx_L1_error)

  /* "scamper.pyx":4857
 *     def __init__(self, dealias):
 *         self._dealias = dealias
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         self._c = dealias.probe_count
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 4857, __pyx_L1_error)

  /* "scamper.pyx":4858
 *         self._dealias = dealias
 *         self._i = 0
 *         self._c = dealias.probe_count             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dealias, __pyx_mstate_global->__pyx_n_u_probe_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4858, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c, __pyx_t_1) < 0) __PYX_ERR(0, 4858, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":4855
 * 
 * class _ScamperDealiasProbeIterator:
 *     def __init__(self, dealias):             # <<<<<<<<<<<<<<
 *         self._dealias = dealias
 *         self._i = 0
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper._ScamperDealiasProbeIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4860
 *         self._c = dealias.probe_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasProbeIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_28_ScamperDealiasProbeIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_28_ScamperDealiasProbeIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasProbeIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4860, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4860, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 4860, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 4860, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4860, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4860, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperDealiasProbeIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_28_ScamperDealiasProbeIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28_ScamperDealiasProbeIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":4861
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":4860
 *         self._c = dealias.probe_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4863
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             probe = self._dealias.probe(self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasProbeIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_28_ScamperDealiasProbeIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_28_ScamperDealiasProbeIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_28_ScamperDealiasProbeIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4863, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4863, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 4863, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 4863, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4863, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4863, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperDealiasProbeIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_28_ScamperDealiasProbeIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_28_ScamperDealiasProbeIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_probe = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":4864
 * 
 *     def __next__(self):
 *         if self._i < self._c:             # <<<<<<<<<<<<<<
 *             probe = self._dealias.probe(self._i)
 *             self._i += 1
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4864, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 4864, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":4865
 *     def __next__(self):
 *         if self._i < self._c:
 *             probe = self._dealias.probe(self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             return probe
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dealias_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4865, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4865, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_probe, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4865, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_probe = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":4866
 *         if self._i < self._c:
 *             probe = self._dealias.probe(self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             return probe
 *         raise StopIteration
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_t_1) < 0) __PYX_ERR(0, 4866, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":4867
 *             probe = self._dealias.probe(self._i)
 *             self._i += 1
 *             return probe             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_probe);
    __pyx_r = __pyx_v_probe;
    goto __pyx_L0;

    /* "scamper.pyx":4864
 * 
 *     def __next__(self):
 *         if self._i < self._c:             # <<<<<<<<<<<<<<
 *             probe = self._dealias.probe(self._i)
 *             self._i += 1
*/
  }

  /* "scamper.pyx":4868
 *             self._i += 1
 *             return probe
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * class _ScamperDealiasProbedefIterator:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 4868, __pyx_L1_error)

  /* "scamper.pyx":4863
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             probe = self._dealias.probe(self._i)
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperDealiasProbeIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_probe);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4871
 * 
 * class _ScamperDealiasProbedefIterator:
 *     def __init__(self, dealias):             # <<<<<<<<<<<<<<
 *         self._dealias = dealias
 *         self._i = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_31_ScamperDealiasProbedefIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_31_ScamperDealiasProbedefIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_31_ScamperDealiasProbedefIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_31_ScamperDealiasProbedefIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_dealias = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_dealias,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4871, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4871, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4871, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 4871, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 4871, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4871, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 4871, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_dealias = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 4871, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperDealiasProbedefIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_31_ScamperDealiasProbedefIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_dealias);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_31_ScamperDealiasProbedefIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_dealias) {
  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("__init__", 0);

  /* "scamper.pyx":4872
 * class _ScamperDealiasProbedefIterator:
 *     def __init__(self, dealias):
 *         self._dealias = dealias             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         self._c = dealias.probedef_count
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dealias_2, __pyx_v_dealias) < 0) __PYX_ERR(0, 4872, __pyx_L1_error)

  /* "scamper.pyx":4873
 *     def __init__(self, dealias):
 *         self._dealias = dealias
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         self._c = dealias.probedef_count
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 4873, __pyx_L1_error)

  /* "scamper.pyx":4874
 *         self._dealias = dealias
 *         self._i = 0
 *         self._c = dealias.probedef_count             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_dealias, __pyx_mstate_global->__pyx_n_u_probedef_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c, __pyx_t_1) < 0) __PYX_ERR(0, 4874, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":4871
 * 
 * class _ScamperDealiasProbedefIterator:
 *     def __init__(self, dealias):             # <<<<<<<<<<<<<<
 *         self._dealias = dealias
 *         self._i = 0
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper._ScamperDealiasProbedefIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4876
 *         self._c = dealias.probedef_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_31_ScamperDealiasProbedefIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_31_ScamperDealiasProbedefIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_31_ScamperDealiasProbedefIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_31_ScamperDealiasProbedefIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4876, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4876, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 4876, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 4876, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4876, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4876, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperDealiasProbedefIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_31_ScamperDealiasProbedefIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_31_ScamperDealiasProbedefIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":4877
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":4876
 *         self._c = dealias.probedef_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4879
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             pd = self._dealias.probedef(self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_31_ScamperDealiasProbedefIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_31_ScamperDealiasProbedefIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_31_ScamperDealiasProbedefIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_31_ScamperDealiasProbedefIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 4879, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4879, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 4879, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 4879, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 4879, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 4879, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperDealiasProbedefIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_31_ScamperDealiasProbedefIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_31_ScamperDealiasProbedefIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_pd = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":4880
 * 
 *     def __next__(self):
 *         if self._i < self._c:             # <<<<<<<<<<<<<<
 *             pd = self._dealias.probedef(self._i)
 *             self._i += 1
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_c); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4880, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4880, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 4880, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_4) {

    /* "scamper.pyx":4881
 *     def __next__(self):
 *         if self._i < self._c:
 *             pd = self._dealias.probedef(self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             return pd
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_dealias_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4881, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4881, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_probedef, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4881, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_pd = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":4882
 *         if self._i < self._c:
 *             pd = self._dealias.probedef(self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             return pd
 *         raise StopIteration
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4882, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_t_1) < 0) __PYX_ERR(0, 4882, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":4883
 *             pd = self._dealias.probedef(self._i)
 *             self._i += 1
 *             return pd             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_pd);
    __pyx_r = __pyx_v_pd;
    goto __pyx_L0;

    /* "scamper.pyx":4880
 * 
 *     def __next__(self):
 *         if self._i < self._c:             # <<<<<<<<<<<<<<
 *             pd = self._dealias.probedef(self._i)
 *             self._i += 1
*/
  }

  /* "scamper.pyx":4884
 *             self._i += 1
 *             return pd
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperDealias:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 4884, __pyx_L1_error)

  /* "scamper.pyx":4879
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             pd = self._dealias.probedef(self._i)
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperDealiasProbedefIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_pd);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4894
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperDealias_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_14ScamperDealias_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias___init__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperDealias___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":4895
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4895, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 4895, __pyx_L1_error)

  /* "scamper.pyx":4894
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperDealias.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4897
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_14ScamperDealias_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_14ScamperDealias_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_14ScamperDealias_2__dealloc__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_14ScamperDealias_2__dealloc__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":4898
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4899
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_dealias_free(__pyx_v_self->_c);

    /* "scamper.pyx":4898
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_dealias.scamper_dealias_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":4897
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_dealias.scamper_dealias_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":4901
 *             cscamper_dealias.scamper_dealias_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperDealias from_ptr(cscamper_dealias.scamper_dealias_t *ptr):
 *         cdef ScamperDealias dealias = ScamperDealias.__new__(ScamperDealias)
*/

static struct __pyx_obj_7scamper_ScamperDealias *__pyx_f_7scamper_14ScamperDealias_from_ptr(scamper_dealias_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_dealias = 0;
  struct __pyx_obj_7scamper_ScamperDealias *__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("from_ptr", 0);

  /* "scamper.pyx":4903
 *     @staticmethod
 *     cdef ScamperDealias from_ptr(cscamper_dealias.scamper_dealias_t *ptr):
 *         cdef ScamperDealias dealias = ScamperDealias.__new__(ScamperDealias)             # <<<<<<<<<<<<<<
 *         dealias._c = ptr
 *         return dealias
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperDealias(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4903, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_dealias = ((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":4904
 *     cdef ScamperDealias from_ptr(cscamper_dealias.scamper_dealias_t *ptr):
 *         cdef ScamperDealias dealias = ScamperDealias.__new__(ScamperDealias)
 *         dealias._c = ptr             # <<<<<<<<<<<<<<
 *         return dealias
 * 
*/
  __pyx_v_dealias->_c = __pyx_v_ptr;

  /* "scamper.pyx":4905
 *         cdef ScamperDealias dealias = ScamperDealias.__new__(ScamperDealias)
 *         dealias._c = ptr
 *         return dealias             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_dealias);
  __pyx_r = __pyx_v_dealias;
  goto __pyx_L0;

  /* "scamper.pyx":4901
 *             cscamper_dealias.scamper_dealias_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperDealias from_ptr(cscamper_dealias.scamper_dealias_t *ptr):
 *         cdef ScamperDealias dealias = ScamperDealias.__new__(ScamperDealias)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_dealias);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4907
 *         return dealias
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_4inst___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_4inst___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":4916
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":4907
 *         return dealias
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4918
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_4list_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_4list_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_4list___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_4list___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  scamper_list_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":4926
 *         :rtype: ScamperList
 *         """
 *         c = cscamper_dealias.scamper_dealias_list_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperList.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_dealias_list_get(__pyx_v_self->_c);

  /* "scamper.pyx":4927
 *         """
 *         c = cscamper_dealias.scamper_dealias_list_get(self._c)
 *         return ScamperList.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4918
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.list.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4929
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_5cycle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_5cycle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_5cycle___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_5cycle___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  scamper_cycle_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uint16_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":4937
 *         :rtype: ScamperCycle
 *         """
 *         c = cscamper_dealias.scamper_dealias_cycle_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
*/
  __pyx_v_c = scamper_dealias_cycle_get(__pyx_v_self->_c);

  /* "scamper.pyx":4938
 *         """
 *         c = cscamper_dealias.scamper_dealias_cycle_get(self._c)
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 4938, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4938, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4929
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.cycle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4940
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_6userid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_6userid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_6userid___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_6userid___get__(struct __pyx_obj_7scamper_ScamperDealias *__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("__get__", 0);

  /* "scamper.pyx":4948
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_userid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_dealias_userid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4948, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4940
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.userid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4950
 *         return cscamper_dealias.scamper_dealias_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_5start___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_5start___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":4958
 *         :rtype: datetime
 *         """
 *         c = cscamper_dealias.scamper_dealias_start_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_dealias_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":4959
 *         """
 *         c = cscamper_dealias.scamper_dealias_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4960
 *         c = cscamper_dealias.scamper_dealias_start_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4959
 *         """
 *         c = cscamper_dealias.scamper_dealias_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":4961
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 4961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4961, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4961, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":4962
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 4962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 4962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 4962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 4962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 4962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 4962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 4962, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":4963
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     def to_json(self):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 4963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 4962, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 4962, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4962, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4950
 *         return cscamper_dealias.scamper_dealias_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperDealias.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4965
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this alias resolution
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_5to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_4to_json, "\n        get method to obtain a JSON rendering of this alias resolution\n        measurement.\n\n        :returns: json representation\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_5to_json = {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_5to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_4to_json};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_5to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_json (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("to_json", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("to_json", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_4to_json(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_4to_json(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_json", 0);

  /* "scamper.pyx":4973
 *         :rtype: string
 *         """
 *         c = cscamper_dealias.scamper_dealias_tojson(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_dealias_tojson(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":4974
 *         """
 *         c = cscamper_dealias.scamper_dealias_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":4975
 *         c = cscamper_dealias.scamper_dealias_tojson(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":4974
 *         """
 *         c = cscamper_dealias.scamper_dealias_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":4976
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 4976, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":4977
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":4978
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     def is_ally(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":4965
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this alias resolution
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperDealias.to_json", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4980
 *         return out
 * 
 *     def is_ally(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was ally
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_7is_ally(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_6is_ally, "\n        get method to determine if the alias resolution method was ally\n\n        :returns: True if method was ally\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_7is_ally = {"is_ally", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_7is_ally, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_6is_ally};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_7is_ally(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_ally (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_ally", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_ally", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_6is_ally(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_6is_ally(struct __pyx_obj_7scamper_ScamperDealias *__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("is_ally", 0);

  /* "scamper.pyx":4987
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_method_is_ally(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_mercator(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_method_is_ally(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4987, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4980
 *         return out
 * 
 *     def is_ally(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was ally
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.is_ally", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4989
 *         return cscamper_dealias.scamper_dealias_method_is_ally(self._c)
 * 
 *     def is_mercator(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was mercator
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_9is_mercator(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_8is_mercator, "\n        get method to determine if the alias resolution method was mercator\n\n        :returns: True if the method was mercator\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_9is_mercator = {"is_mercator", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_9is_mercator, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_8is_mercator};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_9is_mercator(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_mercator (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_mercator", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_mercator", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_8is_mercator(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_8is_mercator(struct __pyx_obj_7scamper_ScamperDealias *__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("is_mercator", 0);

  /* "scamper.pyx":4996
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_method_is_mercator(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_prefixscan(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_method_is_mercator(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 4996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4989
 *         return cscamper_dealias.scamper_dealias_method_is_ally(self._c)
 * 
 *     def is_mercator(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was mercator
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.is_mercator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4998
 *         return cscamper_dealias.scamper_dealias_method_is_mercator(self._c)
 * 
 *     def is_prefixscan(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was prefixscan
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_11is_prefixscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_10is_prefixscan, "\n        get method to determine if the alias resolution method was prefixscan\n\n        :return: True if the method was prefixscan\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_11is_prefixscan = {"is_prefixscan", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_11is_prefixscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_10is_prefixscan};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_11is_prefixscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_prefixscan (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_prefixscan", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_prefixscan", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_10is_prefixscan(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_10is_prefixscan(struct __pyx_obj_7scamper_ScamperDealias *__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("is_prefixscan", 0);

  /* "scamper.pyx":5005
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_radargun(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_method_is_prefixscan(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5005, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":4998
 *         return cscamper_dealias.scamper_dealias_method_is_mercator(self._c)
 * 
 *     def is_prefixscan(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was prefixscan
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.is_prefixscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5007
 *         return cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c)
 * 
 *     def is_radargun(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was radargun
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_13is_radargun(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_12is_radargun, "\n        get method to determine if the alias resolution method was radargun\n\n        :return: True if the method was radargun\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_13is_radargun = {"is_radargun", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_13is_radargun, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_12is_radargun};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_13is_radargun(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_radargun (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_radargun", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_radargun", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_12is_radargun(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_12is_radargun(struct __pyx_obj_7scamper_ScamperDealias *__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("is_radargun", 0);

  /* "scamper.pyx":5014
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_method_is_radargun(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_bump(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_method_is_radargun(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5014, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5007
 *         return cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c)
 * 
 *     def is_radargun(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was radargun
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.is_radargun", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5016
 *         return cscamper_dealias.scamper_dealias_method_is_radargun(self._c)
 * 
 *     def is_bump(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was bump
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_15is_bump(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_14is_bump, "\n        get method to determine if the alias resolution method was bump\n\n        :return: True if the method was bump\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_15is_bump = {"is_bump", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_15is_bump, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_14is_bump};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_15is_bump(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_bump (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_bump", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_bump", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_14is_bump(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_14is_bump(struct __pyx_obj_7scamper_ScamperDealias *__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("is_bump", 0);

  /* "scamper.pyx":5023
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_method_is_bump(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_midarest(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_method_is_bump(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5016
 *         return cscamper_dealias.scamper_dealias_method_is_radargun(self._c)
 * 
 *     def is_bump(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was bump
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.is_bump", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5025
 *         return cscamper_dealias.scamper_dealias_method_is_bump(self._c)
 * 
 *     def is_midarest(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was midarest
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_17is_midarest(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_16is_midarest, "\n        get method to determine if the alias resolution method was midarest\n\n        :return: True if the method was midarest\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_17is_midarest = {"is_midarest", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_17is_midarest, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_16is_midarest};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_17is_midarest(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_midarest (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_midarest", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_midarest", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_16is_midarest(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_16is_midarest(struct __pyx_obj_7scamper_ScamperDealias *__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("is_midarest", 0);

  /* "scamper.pyx":5032
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_method_is_midarest(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_midardisc(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_method_is_midarest(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5032, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5025
 *         return cscamper_dealias.scamper_dealias_method_is_bump(self._c)
 * 
 *     def is_midarest(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was midarest
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.is_midarest", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5034
 *         return cscamper_dealias.scamper_dealias_method_is_midarest(self._c)
 * 
 *     def is_midardisc(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was midardisc
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_19is_midardisc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_18is_midardisc, "\n        get method to determine if the alias resolution method was midardisc\n\n        :return: True if the method was midardisc\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_19is_midardisc = {"is_midardisc", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_19is_midardisc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_18is_midardisc};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_19is_midardisc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_midardisc (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_midardisc", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_midardisc", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_18is_midardisc(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_18is_midardisc(struct __pyx_obj_7scamper_ScamperDealias *__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("is_midardisc", 0);

  /* "scamper.pyx":5041
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_method_is_midardisc(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def has_aliases(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_method_is_midardisc(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5041, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5034
 *         return cscamper_dealias.scamper_dealias_method_is_midarest(self._c)
 * 
 *     def is_midardisc(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was midardisc
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.is_midardisc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5043
 *         return cscamper_dealias.scamper_dealias_method_is_midardisc(self._c)
 * 
 *     def has_aliases(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the method has aliases to return.  this
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_21has_aliases(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_20has_aliases, "\n        get method to determine if the method has aliases to return.  this\n        method only works with mercator, ally, and prefixscan.\n\n        :returns True if the measurement has aliases to report\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_21has_aliases = {"has_aliases", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_21has_aliases, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_20has_aliases};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_21has_aliases(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("has_aliases (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("has_aliases", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("has_aliases", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_20has_aliases(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_20has_aliases(struct __pyx_obj_7scamper_ScamperDealias *__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("has_aliases", 0);

  /* "scamper.pyx":5051
 *         :rtype: bool
 *         """
 *         return cscamper_dealias.scamper_dealias_result_is_aliases(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def aliases(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_dealias_result_is_aliases(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5051, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5043
 *         return cscamper_dealias.scamper_dealias_method_is_midardisc(self._c)
 * 
 *     def has_aliases(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the method has aliases to return.  this
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.has_aliases", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5053
 *         return cscamper_dealias.scamper_dealias_result_is_aliases(self._c)
 * 
 *     def aliases(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to return pairs of aliases inferred, if any.  this method
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_23aliases(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_22aliases, "\n        get method to return pairs of aliases inferred, if any.  this method\n        only works with mercator, ally, and prefixscan.\n\n        :returns: a pair of :class:`ScamperAddr` structures representing aliases\n        :rtype: tuple of ScamperAddr\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_23aliases = {"aliases", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_23aliases, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_22aliases};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_23aliases(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("aliases (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("aliases", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("aliases", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_22aliases(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_22aliases(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  scamper_dealias_mercator_t *__pyx_v_mc;
  scamper_dealias_probedef_t *__pyx_v_pd;
  scamper_addr_t *__pyx_v_sa;
  uint32_t __pyx_v_probec;
  uint32_t __pyx_v_i;
  scamper_dealias_probe_t *__pyx_v_p;
  uint16_t __pyx_v_replyc;
  uint16_t __pyx_v_j;
  scamper_dealias_reply_t *__pyx_v_r;
  scamper_addr_t *__pyx_v_sb;
  scamper_dealias_ally_t *__pyx_v_ally;
  scamper_addr_t *__pyx_v_addr;
  struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_a = NULL;
  struct __pyx_obj_7scamper_ScamperAddr *__pyx_v_b = NULL;
  scamper_dealias_prefixscan_t *__pyx_v_pf;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  uint32_t __pyx_t_2;
  uint32_t __pyx_t_3;
  uint32_t __pyx_t_4;
  uint16_t __pyx_t_5;
  uint16_t __pyx_t_6;
  uint16_t __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("aliases", 0);

  /* "scamper.pyx":5061
 *         :rtype: tuple of ScamperAddr
 *         """
 *         if not cscamper_dealias.scamper_dealias_result_is_aliases(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
*/
  __pyx_t_1 = (!scamper_dealias_result_is_aliases(__pyx_v_self->_c));
  if (__pyx_t_1) {

    /* "scamper.pyx":5062
 *         """
 *         if not cscamper_dealias.scamper_dealias_result_is_aliases(self._c):
 *             return None             # <<<<<<<<<<<<<<
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5061
 *         :rtype: tuple of ScamperAddr
 *         """
 *         if not cscamper_dealias.scamper_dealias_result_is_aliases(self._c):             # <<<<<<<<<<<<<<
 *             return None
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
*/
  }

  /* "scamper.pyx":5063
 *         if not cscamper_dealias.scamper_dealias_result_is_aliases(self._c):
 *             return None
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):             # <<<<<<<<<<<<<<
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             pd = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
*/
  __pyx_t_1 = scamper_dealias_method_is_mercator(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5064
 *             return None
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)             # <<<<<<<<<<<<<<
 *             pd = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
 *             sa = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
*/
    __pyx_v_mc = scamper_dealias_mercator_get(__pyx_v_self->_c);

    /* "scamper.pyx":5065
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             pd = cscamper_dealias.scamper_dealias_mercator_def_get(mc)             # <<<<<<<<<<<<<<
 *             sa = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
 *             probec = cscamper_dealias.scamper_dealias_probec_get(self._c)
*/
    __pyx_v_pd = scamper_dealias_mercator_def_get(__pyx_v_mc);

    /* "scamper.pyx":5066
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             pd = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
 *             sa = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)             # <<<<<<<<<<<<<<
 *             probec = cscamper_dealias.scamper_dealias_probec_get(self._c)
 *             for i in range(probec):
*/
    __pyx_v_sa = scamper_dealias_probedef_dst_get(__pyx_v_pd);

    /* "scamper.pyx":5067
 *             pd = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
 *             sa = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
 *             probec = cscamper_dealias.scamper_dealias_probec_get(self._c)             # <<<<<<<<<<<<<<
 *             for i in range(probec):
 *                 p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)
*/
    __pyx_v_probec = scamper_dealias_probec_get(__pyx_v_self->_c);

    /* "scamper.pyx":5068
 *             sa = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
 *             probec = cscamper_dealias.scamper_dealias_probec_get(self._c)
 *             for i in range(probec):             # <<<<<<<<<<<<<<
 *                 p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)
 *                 if p == NULL:
*/
    __pyx_t_2 = __pyx_v_probec;
    __pyx_t_3 = __pyx_t_2;
    for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
      __pyx_v_i = __pyx_t_4;

      /* "scamper.pyx":5069
 *             probec = cscamper_dealias.scamper_dealias_probec_get(self._c)
 *             for i in range(probec):
 *                 p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)             # <<<<<<<<<<<<<<
 *                 if p == NULL:
 *                     continue
*/
      __pyx_v_p = scamper_dealias_probe_get(__pyx_v_self->_c, __pyx_v_i);

      /* "scamper.pyx":5070
 *             for i in range(probec):
 *                 p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)
 *                 if p == NULL:             # <<<<<<<<<<<<<<
 *                     continue
 *                 replyc = cscamper_dealias.scamper_dealias_probe_replyc_get(p)
*/
      __pyx_t_1 = (__pyx_v_p == NULL);
      if (__pyx_t_1) {

        /* "scamper.pyx":5071
 *                 p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)
 *                 if p == NULL:
 *                     continue             # <<<<<<<<<<<<<<
 *                 replyc = cscamper_dealias.scamper_dealias_probe_replyc_get(p)
 *                 for j in range(replyc):
*/
        goto __pyx_L5_continue;

        /* "scamper.pyx":5070
 *             for i in range(probec):
 *                 p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)
 *                 if p == NULL:             # <<<<<<<<<<<<<<
 *                     continue
 *                 replyc = cscamper_dealias.scamper_dealias_probe_replyc_get(p)
*/
      }

      /* "scamper.pyx":5072
 *                 if p == NULL:
 *                     continue
 *                 replyc = cscamper_dealias.scamper_dealias_probe_replyc_get(p)             # <<<<<<<<<<<<<<
 *                 for j in range(replyc):
 *                     r = cscamper_dealias.scamper_dealias_probe_reply_get(p, j)
*/
      __pyx_v_replyc = scamper_dealias_probe_replyc_get(__pyx_v_p);

      /* "scamper.pyx":5073
 *                     continue
 *                 replyc = cscamper_dealias.scamper_dealias_probe_replyc_get(p)
 *                 for j in range(replyc):             # <<<<<<<<<<<<<<
 *                     r = cscamper_dealias.scamper_dealias_probe_reply_get(p, j)
 *                     sb = cscamper_dealias.scamper_dealias_reply_src_get(r)
*/
      __pyx_t_5 = __pyx_v_replyc;
      __pyx_t_6 = __pyx_t_5;
      for (__pyx_t_7 = 0; __pyx_t_7 < __pyx_t_6; __pyx_t_7+=1) {
        __pyx_v_j = __pyx_t_7;

        /* "scamper.pyx":5074
 *                 replyc = cscamper_dealias.scamper_dealias_probe_replyc_get(p)
 *                 for j in range(replyc):
 *                     r = cscamper_dealias.scamper_dealias_probe_reply_get(p, j)             # <<<<<<<<<<<<<<
 *                     sb = cscamper_dealias.scamper_dealias_reply_src_get(r)
 *                     if(cscamper_dealias.scamper_dealias_reply_from_target(p, r)
*/
        __pyx_v_r = scamper_dealias_probe_reply_get(__pyx_v_p, __pyx_v_j);

        /* "scamper.pyx":5075
 *                 for j in range(replyc):
 *                     r = cscamper_dealias.scamper_dealias_probe_reply_get(p, j)
 *                     sb = cscamper_dealias.scamper_dealias_reply_src_get(r)             # <<<<<<<<<<<<<<
 *                     if(cscamper_dealias.scamper_dealias_reply_from_target(p, r)
 *                        and cscamper_addr.scamper_addr_cmp(sa, sb) != 0):
*/
        __pyx_v_sb = scamper_dealias_reply_src_get(__pyx_v_r);

        /* "scamper.pyx":5076
 *                     r = cscamper_dealias.scamper_dealias_probe_reply_get(p, j)
 *                     sb = cscamper_dealias.scamper_dealias_reply_src_get(r)
 *                     if(cscamper_dealias.scamper_dealias_reply_from_target(p, r)             # <<<<<<<<<<<<<<
 *                        and cscamper_addr.scamper_addr_cmp(sa, sb) != 0):
 *                         return (ScamperAddr.from_ptr(sa),
*/
        __pyx_t_8 = scamper_dealias_reply_from_target(__pyx_v_p, __pyx_v_r);
        if (__pyx_t_8) {
        } else {
          __pyx_t_1 = __pyx_t_8;
          goto __pyx_L11_bool_binop_done;
        }

        /* "scamper.pyx":5077
 *                     sb = cscamper_dealias.scamper_dealias_reply_src_get(r)
 *                     if(cscamper_dealias.scamper_dealias_reply_from_target(p, r)
 *                        and cscamper_addr.scamper_addr_cmp(sa, sb) != 0):             # <<<<<<<<<<<<<<
 *                         return (ScamperAddr.from_ptr(sa),
 *                                 ScamperAddr.from_ptr(sb))
*/
        __pyx_t_8 = (scamper_addr_cmp(__pyx_v_sa, __pyx_v_sb) != 0);
        __pyx_t_1 = __pyx_t_8;
        __pyx_L11_bool_binop_done:;

        /* "scamper.pyx":5076
 *                     r = cscamper_dealias.scamper_dealias_probe_reply_get(p, j)
 *                     sb = cscamper_dealias.scamper_dealias_reply_src_get(r)
 *                     if(cscamper_dealias.scamper_dealias_reply_from_target(p, r)             # <<<<<<<<<<<<<<
 *                        and cscamper_addr.scamper_addr_cmp(sa, sb) != 0):
 *                         return (ScamperAddr.from_ptr(sa),
*/
        if (__pyx_t_1) {

          /* "scamper.pyx":5078
 *                     if(cscamper_dealias.scamper_dealias_reply_from_target(p, r)
 *                        and cscamper_addr.scamper_addr_cmp(sa, sb) != 0):
 *                         return (ScamperAddr.from_ptr(sa),             # <<<<<<<<<<<<<<
 *                                 ScamperAddr.from_ptr(sb))
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
*/
          __Pyx_XDECREF(__pyx_r);
          __pyx_t_9 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_sa)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5078, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);

          /* "scamper.pyx":5079
 *                        and cscamper_addr.scamper_addr_cmp(sa, sb) != 0):
 *                         return (ScamperAddr.from_ptr(sa),
 *                                 ScamperAddr.from_ptr(sb))             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
*/
          __pyx_t_10 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_sb)); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5079, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_10);

          /* "scamper.pyx":5078
 *                     if(cscamper_dealias.scamper_dealias_reply_from_target(p, r)
 *                        and cscamper_addr.scamper_addr_cmp(sa, sb) != 0):
 *                         return (ScamperAddr.from_ptr(sa),             # <<<<<<<<<<<<<<
 *                                 ScamperAddr.from_ptr(sb))
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
*/
          __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5078, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_11);
          __Pyx_GIVEREF(__pyx_t_9);
          if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, __pyx_t_9) != (0)) __PYX_ERR(0, 5078, __pyx_L1_error);
          __Pyx_GIVEREF(__pyx_t_10);
          if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, __pyx_t_10) != (0)) __PYX_ERR(0, 5078, __pyx_L1_error);
          __pyx_t_9 = 0;
          __pyx_t_10 = 0;
          __pyx_r = __pyx_t_11;
          __pyx_t_11 = 0;
          goto __pyx_L0;

          /* "scamper.pyx":5076
 *                     r = cscamper_dealias.scamper_dealias_probe_reply_get(p, j)
 *                     sb = cscamper_dealias.scamper_dealias_reply_src_get(r)
 *                     if(cscamper_dealias.scamper_dealias_reply_from_target(p, r)             # <<<<<<<<<<<<<<
 *                        and cscamper_addr.scamper_addr_cmp(sa, sb) != 0):
 *                         return (ScamperAddr.from_ptr(sa),
*/
        }
      }
      __pyx_L5_continue:;
    }

    /* "scamper.pyx":5063
 *         if not cscamper_dealias.scamper_dealias_result_is_aliases(self._c):
 *             return None
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):             # <<<<<<<<<<<<<<
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             pd = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":5080
 *                         return (ScamperAddr.from_ptr(sa),
 *                                 ScamperAddr.from_ptr(sb))
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):             # <<<<<<<<<<<<<<
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             pd = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
*/
  __pyx_t_1 = scamper_dealias_method_is_ally(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5081
 *                                 ScamperAddr.from_ptr(sb))
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)             # <<<<<<<<<<<<<<
 *             pd = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
 *             addr = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
*/
    __pyx_v_ally = scamper_dealias_ally_get(__pyx_v_self->_c);

    /* "scamper.pyx":5082
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             pd = cscamper_dealias.scamper_dealias_ally_def0_get(ally)             # <<<<<<<<<<<<<<
 *             addr = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
 *             a = ScamperAddr.from_ptr(addr)
*/
    __pyx_v_pd = scamper_dealias_ally_def0_get(__pyx_v_ally);

    /* "scamper.pyx":5083
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             pd = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
 *             addr = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)             # <<<<<<<<<<<<<<
 *             a = ScamperAddr.from_ptr(addr)
 *             pd = cscamper_dealias.scamper_dealias_ally_def1_get(ally)
*/
    __pyx_v_addr = scamper_dealias_probedef_dst_get(__pyx_v_pd);

    /* "scamper.pyx":5084
 *             pd = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
 *             addr = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
 *             a = ScamperAddr.from_ptr(addr)             # <<<<<<<<<<<<<<
 *             pd = cscamper_dealias.scamper_dealias_ally_def1_get(ally)
 *             addr = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
*/
    __pyx_t_11 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_addr)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5084, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_v_a = ((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_t_11);
    __pyx_t_11 = 0;

    /* "scamper.pyx":5085
 *             addr = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
 *             a = ScamperAddr.from_ptr(addr)
 *             pd = cscamper_dealias.scamper_dealias_ally_def1_get(ally)             # <<<<<<<<<<<<<<
 *             addr = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
 *             b = ScamperAddr.from_ptr(addr)
*/
    __pyx_v_pd = scamper_dealias_ally_def1_get(__pyx_v_ally);

    /* "scamper.pyx":5086
 *             a = ScamperAddr.from_ptr(addr)
 *             pd = cscamper_dealias.scamper_dealias_ally_def1_get(ally)
 *             addr = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)             # <<<<<<<<<<<<<<
 *             b = ScamperAddr.from_ptr(addr)
 *             return (a, b)
*/
    __pyx_v_addr = scamper_dealias_probedef_dst_get(__pyx_v_pd);

    /* "scamper.pyx":5087
 *             pd = cscamper_dealias.scamper_dealias_ally_def1_get(ally)
 *             addr = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
 *             b = ScamperAddr.from_ptr(addr)             # <<<<<<<<<<<<<<
 *             return (a, b)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
*/
    __pyx_t_11 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_addr)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5087, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_v_b = ((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_t_11);
    __pyx_t_11 = 0;

    /* "scamper.pyx":5088
 *             addr = cscamper_dealias.scamper_dealias_probedef_dst_get(pd)
 *             b = ScamperAddr.from_ptr(addr)
 *             return (a, b)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF((PyObject *)__pyx_v_a);
    __Pyx_GIVEREF((PyObject *)__pyx_v_a);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_a)) != (0)) __PYX_ERR(0, 5088, __pyx_L1_error);
    __Pyx_INCREF((PyObject *)__pyx_v_b);
    __Pyx_GIVEREF((PyObject *)__pyx_v_b);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, ((PyObject *)__pyx_v_b)) != (0)) __PYX_ERR(0, 5088, __pyx_L1_error);
    __pyx_r = __pyx_t_11;
    __pyx_t_11 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":5080
 *                         return (ScamperAddr.from_ptr(sa),
 *                                 ScamperAddr.from_ptr(sb))
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):             # <<<<<<<<<<<<<<
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             pd = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
*/
  }

  /* "scamper.pyx":5089
 *             b = ScamperAddr.from_ptr(addr)
 *             return (a, b)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):             # <<<<<<<<<<<<<<
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_a_get(pf)
*/
  __pyx_t_1 = scamper_dealias_method_is_prefixscan(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5090
 *             return (a, b)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)             # <<<<<<<<<<<<<<
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_a_get(pf)
 *             a = ScamperAddr.from_ptr(addr)
*/
    __pyx_v_pf = scamper_dealias_prefixscan_get(__pyx_v_self->_c);

    /* "scamper.pyx":5091
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_a_get(pf)             # <<<<<<<<<<<<<<
 *             a = ScamperAddr.from_ptr(addr)
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_ab_get(pf)
*/
    __pyx_v_addr = scamper_dealias_prefixscan_a_get(__pyx_v_pf);

    /* "scamper.pyx":5092
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_a_get(pf)
 *             a = ScamperAddr.from_ptr(addr)             # <<<<<<<<<<<<<<
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_ab_get(pf)
 *             b = ScamperAddr.from_ptr(addr)
*/
    __pyx_t_11 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_addr)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5092, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_v_a = ((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_t_11);
    __pyx_t_11 = 0;

    /* "scamper.pyx":5093
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_a_get(pf)
 *             a = ScamperAddr.from_ptr(addr)
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_ab_get(pf)             # <<<<<<<<<<<<<<
 *             b = ScamperAddr.from_ptr(addr)
 *             return (a, b)
*/
    __pyx_v_addr = scamper_dealias_prefixscan_ab_get(__pyx_v_pf);

    /* "scamper.pyx":5094
 *             a = ScamperAddr.from_ptr(addr)
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_ab_get(pf)
 *             b = ScamperAddr.from_ptr(addr)             # <<<<<<<<<<<<<<
 *             return (a, b)
 *         return None
*/
    __pyx_t_11 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_addr)); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5094, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_v_b = ((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_t_11);
    __pyx_t_11 = 0;

    /* "scamper.pyx":5095
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_ab_get(pf)
 *             b = ScamperAddr.from_ptr(addr)
 *             return (a, b)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_11 = PyTuple_New(2); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_INCREF((PyObject *)__pyx_v_a);
    __Pyx_GIVEREF((PyObject *)__pyx_v_a);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 0, ((PyObject *)__pyx_v_a)) != (0)) __PYX_ERR(0, 5095, __pyx_L1_error);
    __Pyx_INCREF((PyObject *)__pyx_v_b);
    __Pyx_GIVEREF((PyObject *)__pyx_v_b);
    if (__Pyx_PyTuple_SET_ITEM(__pyx_t_11, 1, ((PyObject *)__pyx_v_b)) != (0)) __PYX_ERR(0, 5095, __pyx_L1_error);
    __pyx_r = __pyx_t_11;
    __pyx_t_11 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":5089
 *             b = ScamperAddr.from_ptr(addr)
 *             return (a, b)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):             # <<<<<<<<<<<<<<
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             addr = cscamper_dealias.scamper_dealias_prefixscan_a_get(pf)
*/
  }
  __pyx_L4:;

  /* "scamper.pyx":5096
 *             b = ScamperAddr.from_ptr(addr)
 *             return (a, b)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     def probedef(self, i=0):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":5053
 *         return cscamper_dealias.scamper_dealias_result_is_aliases(self._c)
 * 
 *     def aliases(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to return pairs of aliases inferred, if any.  this method
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("scamper.ScamperDealias.aliases", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_a);
  __Pyx_XDECREF((PyObject *)__pyx_v_b);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5098
 *         return None
 * 
 *     def probedef(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         probedef(i=0)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_25probedef(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_24probedef, "\n        probedef(i=0)\n        get method to obtain a specific probedef\n\n        :returns: the probedef requested\n        :rtype: ScamperDealiasProbedef\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_25probedef = {"probedef", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_25probedef, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_24probedef};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_25probedef(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("probedef (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5098, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 5098, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "probedef", 0) < 0) __PYX_ERR(0, 5098, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 5098, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("probedef", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 5098, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperDealias.probedef", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_24probedef(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_24probedef(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_dealias_mercator_t *__pyx_v_mc;
  scamper_dealias_probedef_t *__pyx_v_c;
  scamper_dealias_ally_t *__pyx_v_ally;
  scamper_dealias_prefixscan_t *__pyx_v_pf;
  scamper_dealias_radargun_t *__pyx_v_rg;
  scamper_dealias_midarest_t *__pyx_v_me;
  scamper_dealias_midardisc_t *__pyx_v_md;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  uint16_t __pyx_t_3;
  uint32_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("probedef", 0);

  /* "scamper.pyx":5106
 *         :rtype: ScamperDealiasProbedef
 *         """
 *         if i < 0:             # <<<<<<<<<<<<<<
 *             return None
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
*/
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5106, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5106, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "scamper.pyx":5107
 *         """
 *         if i < 0:
 *             return None             # <<<<<<<<<<<<<<
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5106
 *         :rtype: ScamperDealiasProbedef
 *         """
 *         if i < 0:             # <<<<<<<<<<<<<<
 *             return None
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
*/
  }

  /* "scamper.pyx":5108
 *         if i < 0:
 *             return None
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):             # <<<<<<<<<<<<<<
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if i != 0:
*/
  __pyx_t_2 = scamper_dealias_method_is_mercator(__pyx_v_self->_c);
  if (__pyx_t_2) {

    /* "scamper.pyx":5109
 *             return None
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)             # <<<<<<<<<<<<<<
 *             if i != 0:
 *                 return None
*/
    __pyx_v_mc = scamper_dealias_mercator_get(__pyx_v_self->_c);

    /* "scamper.pyx":5110
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if i != 0:             # <<<<<<<<<<<<<<
 *                 return None
 *             c = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
*/
    __pyx_t_2 = (__Pyx_PyLong_BoolNeObjC(__pyx_v_i, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5110, __pyx_L1_error)
    if (__pyx_t_2) {

      /* "scamper.pyx":5111
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if i != 0:
 *                 return None             # <<<<<<<<<<<<<<
 *             c = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
 *             return ScamperDealiasProbedef.from_ptr(c)
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5110
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if i != 0:             # <<<<<<<<<<<<<<
 *                 return None
 *             c = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
*/
    }

    /* "scamper.pyx":5112
 *             if i != 0:
 *                 return None
 *             c = cscamper_dealias.scamper_dealias_mercator_def_get(mc)             # <<<<<<<<<<<<<<
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
*/
    __pyx_v_c = scamper_dealias_mercator_def_get(__pyx_v_mc);

    /* "scamper.pyx":5113
 *                 return None
 *             c = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
 *             return ScamperDealiasProbedef.from_ptr(c)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_22ScamperDealiasProbedef_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5113, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":5108
 *         if i < 0:
 *             return None
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):             # <<<<<<<<<<<<<<
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if i != 0:
*/
  }

  /* "scamper.pyx":5114
 *             c = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):             # <<<<<<<<<<<<<<
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if i == 0:
*/
  __pyx_t_2 = scamper_dealias_method_is_ally(__pyx_v_self->_c);
  if (__pyx_t_2) {

    /* "scamper.pyx":5115
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)             # <<<<<<<<<<<<<<
 *             if i == 0:
 *                 c = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
*/
    __pyx_v_ally = scamper_dealias_ally_get(__pyx_v_self->_c);

    /* "scamper.pyx":5116
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if i == 0:             # <<<<<<<<<<<<<<
 *                 c = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
 *             elif i == 1:
*/
    __pyx_t_2 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_i, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5116, __pyx_L1_error)
    if (__pyx_t_2) {

      /* "scamper.pyx":5117
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if i == 0:
 *                 c = cscamper_dealias.scamper_dealias_ally_def0_get(ally)             # <<<<<<<<<<<<<<
 *             elif i == 1:
 *                 c = cscamper_dealias.scamper_dealias_ally_def1_get(ally)
*/
      __pyx_v_c = scamper_dealias_ally_def0_get(__pyx_v_ally);

      /* "scamper.pyx":5116
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if i == 0:             # <<<<<<<<<<<<<<
 *                 c = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
 *             elif i == 1:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":5118
 *             if i == 0:
 *                 c = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
 *             elif i == 1:             # <<<<<<<<<<<<<<
 *                 c = cscamper_dealias.scamper_dealias_ally_def1_get(ally)
 *             else:
*/
    __pyx_t_2 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_i, __pyx_mstate_global->__pyx_int_1, 1, 0)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5118, __pyx_L1_error)
    if (__pyx_t_2) {

      /* "scamper.pyx":5119
 *                 c = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
 *             elif i == 1:
 *                 c = cscamper_dealias.scamper_dealias_ally_def1_get(ally)             # <<<<<<<<<<<<<<
 *             else:
 *                 return None
*/
      __pyx_v_c = scamper_dealias_ally_def1_get(__pyx_v_ally);

      /* "scamper.pyx":5118
 *             if i == 0:
 *                 c = cscamper_dealias.scamper_dealias_ally_def0_get(ally)
 *             elif i == 1:             # <<<<<<<<<<<<<<
 *                 c = cscamper_dealias.scamper_dealias_ally_def1_get(ally)
 *             else:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":5121
 *                 c = cscamper_dealias.scamper_dealias_ally_def1_get(ally)
 *             else:
 *                 return None             # <<<<<<<<<<<<<<
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
*/
    /*else*/ {
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;
    }
    __pyx_L6:;

    /* "scamper.pyx":5122
 *             else:
 *                 return None
 *             return ScamperDealiasProbedef.from_ptr(c)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_22ScamperDealiasProbedef_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5122, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":5114
 *             c = cscamper_dealias.scamper_dealias_mercator_def_get(mc)
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):             # <<<<<<<<<<<<<<
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if i == 0:
*/
  }

  /* "scamper.pyx":5123
 *                 return None
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):             # <<<<<<<<<<<<<<
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_prefixscan_def_get(pf, i)
*/
  __pyx_t_2 = scamper_dealias_method_is_prefixscan(__pyx_v_self->_c);
  if (__pyx_t_2) {

    /* "scamper.pyx":5124
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)             # <<<<<<<<<<<<<<
 *             c = cscamper_dealias.scamper_dealias_prefixscan_def_get(pf, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
*/
    __pyx_v_pf = scamper_dealias_prefixscan_get(__pyx_v_self->_c);

    /* "scamper.pyx":5125
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_prefixscan_def_get(pf, i)             # <<<<<<<<<<<<<<
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
*/
    __pyx_t_3 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_3 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5125, __pyx_L1_error)
    __pyx_v_c = scamper_dealias_prefixscan_def_get(__pyx_v_pf, __pyx_t_3);

    /* "scamper.pyx":5126
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_prefixscan_def_get(pf, i)
 *             return ScamperDealiasProbedef.from_ptr(c)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_22ScamperDealiasProbedef_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5126, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":5123
 *                 return None
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):             # <<<<<<<<<<<<<<
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_prefixscan_def_get(pf, i)
*/
  }

  /* "scamper.pyx":5127
 *             c = cscamper_dealias.scamper_dealias_prefixscan_def_get(pf, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):             # <<<<<<<<<<<<<<
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_radargun_def_get(rg, i)
*/
  __pyx_t_2 = scamper_dealias_method_is_radargun(__pyx_v_self->_c);
  if (__pyx_t_2) {

    /* "scamper.pyx":5128
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)             # <<<<<<<<<<<<<<
 *             c = cscamper_dealias.scamper_dealias_radargun_def_get(rg, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
*/
    __pyx_v_rg = scamper_dealias_radargun_get(__pyx_v_self->_c);

    /* "scamper.pyx":5129
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_radargun_def_get(rg, i)             # <<<<<<<<<<<<<<
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
*/
    __pyx_t_4 = __Pyx_PyLong_As_uint32_t(__pyx_v_i); if (unlikely((__pyx_t_4 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5129, __pyx_L1_error)
    __pyx_v_c = scamper_dealias_radargun_def_get(__pyx_v_rg, __pyx_t_4);

    /* "scamper.pyx":5130
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_radargun_def_get(rg, i)
 *             return ScamperDealiasProbedef.from_ptr(c)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_22ScamperDealiasProbedef_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":5127
 *             c = cscamper_dealias.scamper_dealias_prefixscan_def_get(pf, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):             # <<<<<<<<<<<<<<
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_radargun_def_get(rg, i)
*/
  }

  /* "scamper.pyx":5131
 *             c = cscamper_dealias.scamper_dealias_radargun_def_get(rg, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):             # <<<<<<<<<<<<<<
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_midarest_def_get(me, i)
*/
  __pyx_t_2 = scamper_dealias_method_is_midarest(__pyx_v_self->_c);
  if (__pyx_t_2) {

    /* "scamper.pyx":5132
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)             # <<<<<<<<<<<<<<
 *             c = cscamper_dealias.scamper_dealias_midarest_def_get(me, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
*/
    __pyx_v_me = scamper_dealias_midarest_get(__pyx_v_self->_c);

    /* "scamper.pyx":5133
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_midarest_def_get(me, i)             # <<<<<<<<<<<<<<
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
*/
    __pyx_t_3 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_3 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5133, __pyx_L1_error)
    __pyx_v_c = scamper_dealias_midarest_def_get(__pyx_v_me, __pyx_t_3);

    /* "scamper.pyx":5134
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_midarest_def_get(me, i)
 *             return ScamperDealiasProbedef.from_ptr(c)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_22ScamperDealiasProbedef_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":5131
 *             c = cscamper_dealias.scamper_dealias_radargun_def_get(rg, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):             # <<<<<<<<<<<<<<
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_midarest_def_get(me, i)
*/
  }

  /* "scamper.pyx":5135
 *             c = cscamper_dealias.scamper_dealias_midarest_def_get(me, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):             # <<<<<<<<<<<<<<
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_midardisc_def_get(md, i)
*/
  __pyx_t_2 = scamper_dealias_method_is_midardisc(__pyx_v_self->_c);
  if (__pyx_t_2) {

    /* "scamper.pyx":5136
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)             # <<<<<<<<<<<<<<
 *             c = cscamper_dealias.scamper_dealias_midardisc_def_get(md, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
*/
    __pyx_v_md = scamper_dealias_midardisc_get(__pyx_v_self->_c);

    /* "scamper.pyx":5137
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_midardisc_def_get(md, i)             # <<<<<<<<<<<<<<
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         return None
*/
    __pyx_t_4 = __Pyx_PyLong_As_uint32_t(__pyx_v_i); if (unlikely((__pyx_t_4 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5137, __pyx_L1_error)
    __pyx_v_c = scamper_dealias_midardisc_def_get(__pyx_v_md, __pyx_t_4);

    /* "scamper.pyx":5138
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_midardisc_def_get(md, i)
 *             return ScamperDealiasProbedef.from_ptr(c)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_22ScamperDealiasProbedef_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5138, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":5135
 *             c = cscamper_dealias.scamper_dealias_midarest_def_get(me, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):             # <<<<<<<<<<<<<<
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             c = cscamper_dealias.scamper_dealias_midardisc_def_get(md, i)
*/
  }

  /* "scamper.pyx":5139
 *             c = cscamper_dealias.scamper_dealias_midardisc_def_get(md, i)
 *             return ScamperDealiasProbedef.from_ptr(c)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":5098
 *         return None
 * 
 *     def probedef(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         probedef(i=0)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.probedef", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5141
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probedef_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_14probedef_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_14probedef_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_14probedef_count___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_14probedef_count___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  scamper_dealias_prefixscan_t *__pyx_v_pf;
  scamper_dealias_radargun_t *__pyx_v_rg;
  scamper_dealias_midarest_t *__pyx_v_me;
  scamper_dealias_midardisc_t *__pyx_v_md;
  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("__get__", 0);

  /* "scamper.pyx":5150
 *         :rtype: int
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):             # <<<<<<<<<<<<<<
 *             return 1
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
*/
  __pyx_t_1 = scamper_dealias_method_is_mercator(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5151
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             return 1             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             return 2
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_1);
    __pyx_r = __pyx_mstate_global->__pyx_int_1;
    goto __pyx_L0;

    /* "scamper.pyx":5150
 *         :rtype: int
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):             # <<<<<<<<<<<<<<
 *             return 1
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
*/
  }

  /* "scamper.pyx":5152
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             return 1
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):             # <<<<<<<<<<<<<<
 *             return 2
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
*/
  __pyx_t_1 = scamper_dealias_method_is_ally(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5153
 *             return 1
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             return 2             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_2);
    __pyx_r = __pyx_mstate_global->__pyx_int_2;
    goto __pyx_L0;

    /* "scamper.pyx":5152
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             return 1
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):             # <<<<<<<<<<<<<<
 *             return 2
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
*/
  }

  /* "scamper.pyx":5154
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             return 2
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):             # <<<<<<<<<<<<<<
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf != NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_prefixscan(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5155
 *             return 2
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)             # <<<<<<<<<<<<<<
 *             if pf != NULL:
 *                 return cscamper_dealias.scamper_dealias_prefixscan_defc_get(pf)
*/
    __pyx_v_pf = scamper_dealias_prefixscan_get(__pyx_v_self->_c);

    /* "scamper.pyx":5156
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf != NULL:             # <<<<<<<<<<<<<<
 *                 return cscamper_dealias.scamper_dealias_prefixscan_defc_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
*/
    __pyx_t_1 = (__pyx_v_pf != NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5157
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf != NULL:
 *                 return cscamper_dealias.scamper_dealias_prefixscan_defc_get(pf)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_dealias_prefixscan_defc_get(__pyx_v_pf)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5157, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":5156
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf != NULL:             # <<<<<<<<<<<<<<
 *                 return cscamper_dealias.scamper_dealias_prefixscan_defc_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
*/
    }

    /* "scamper.pyx":5154
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             return 2
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):             # <<<<<<<<<<<<<<
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf != NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5158
 *             if pf != NULL:
 *                 return cscamper_dealias.scamper_dealias_prefixscan_defc_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):             # <<<<<<<<<<<<<<
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg != NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_radargun(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5159
 *                 return cscamper_dealias.scamper_dealias_prefixscan_defc_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)             # <<<<<<<<<<<<<<
 *             if rg != NULL:
 *                 return cscamper_dealias.scamper_dealias_radargun_defc_get(rg)
*/
    __pyx_v_rg = scamper_dealias_radargun_get(__pyx_v_self->_c);

    /* "scamper.pyx":5160
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg != NULL:             # <<<<<<<<<<<<<<
 *                 return cscamper_dealias.scamper_dealias_radargun_defc_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
*/
    __pyx_t_1 = (__pyx_v_rg != NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5161
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg != NULL:
 *                 return cscamper_dealias.scamper_dealias_radargun_defc_get(rg)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
 *             return 2
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_dealias_radargun_defc_get(__pyx_v_rg)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5161, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":5160
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg != NULL:             # <<<<<<<<<<<<<<
 *                 return cscamper_dealias.scamper_dealias_radargun_defc_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
*/
    }

    /* "scamper.pyx":5158
 *             if pf != NULL:
 *                 return cscamper_dealias.scamper_dealias_prefixscan_defc_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):             # <<<<<<<<<<<<<<
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg != NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5162
 *             if rg != NULL:
 *                 return cscamper_dealias.scamper_dealias_radargun_defc_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):             # <<<<<<<<<<<<<<
 *             return 2
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
*/
  __pyx_t_1 = scamper_dealias_method_is_bump(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5163
 *                 return cscamper_dealias.scamper_dealias_radargun_defc_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
 *             return 2             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_2);
    __pyx_r = __pyx_mstate_global->__pyx_int_2;
    goto __pyx_L0;

    /* "scamper.pyx":5162
 *             if rg != NULL:
 *                 return cscamper_dealias.scamper_dealias_radargun_defc_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):             # <<<<<<<<<<<<<<
 *             return 2
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
*/
  }

  /* "scamper.pyx":5164
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
 *             return 2
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):             # <<<<<<<<<<<<<<
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me != NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_midarest(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5165
 *             return 2
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)             # <<<<<<<<<<<<<<
 *             if me != NULL:
 *                 return cscamper_dealias.scamper_dealias_midarest_defc_get(me)
*/
    __pyx_v_me = scamper_dealias_midarest_get(__pyx_v_self->_c);

    /* "scamper.pyx":5166
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me != NULL:             # <<<<<<<<<<<<<<
 *                 return cscamper_dealias.scamper_dealias_midarest_defc_get(me)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
*/
    __pyx_t_1 = (__pyx_v_me != NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5167
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me != NULL:
 *                 return cscamper_dealias.scamper_dealias_midarest_defc_get(me)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_dealias_midarest_defc_get(__pyx_v_me)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5167, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":5166
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me != NULL:             # <<<<<<<<<<<<<<
 *                 return cscamper_dealias.scamper_dealias_midarest_defc_get(me)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
*/
    }

    /* "scamper.pyx":5164
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
 *             return 2
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):             # <<<<<<<<<<<<<<
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me != NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5168
 *             if me != NULL:
 *                 return cscamper_dealias.scamper_dealias_midarest_defc_get(me)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):             # <<<<<<<<<<<<<<
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             if md != NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_midardisc(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5169
 *                 return cscamper_dealias.scamper_dealias_midarest_defc_get(me)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)             # <<<<<<<<<<<<<<
 *             if md != NULL:
 *                 return cscamper_dealias.scamper_dealias_midardisc_defc_get(md)
*/
    __pyx_v_md = scamper_dealias_midardisc_get(__pyx_v_self->_c);

    /* "scamper.pyx":5170
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             if md != NULL:             # <<<<<<<<<<<<<<
 *                 return cscamper_dealias.scamper_dealias_midardisc_defc_get(md)
 *         return None
*/
    __pyx_t_1 = (__pyx_v_md != NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5171
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             if md != NULL:
 *                 return cscamper_dealias.scamper_dealias_midardisc_defc_get(md)             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_dealias_midardisc_defc_get(__pyx_v_md)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5171, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":5170
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             if md != NULL:             # <<<<<<<<<<<<<<
 *                 return cscamper_dealias.scamper_dealias_midardisc_defc_get(md)
 *         return None
*/
    }

    /* "scamper.pyx":5168
 *             if me != NULL:
 *                 return cscamper_dealias.scamper_dealias_midarest_defc_get(me)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):             # <<<<<<<<<<<<<<
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             if md != NULL:
*/
  }
  __pyx_L3:;

  /* "scamper.pyx":5172
 *             if md != NULL:
 *                 return cscamper_dealias.scamper_dealias_midardisc_defc_get(md)
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     def probedefs(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":5141
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probedef_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperDealias.probedef_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5174
 *         return None
 * 
 *     def probedefs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator to process available probedefs.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_27probedefs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_26probedefs, "\n        get method to obtain an iterator to process available probedefs.\n\n        :returns: an iterator to access the probedefs.\n        :rtype: _ScamperDealiasProbedefIterator\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_27probedefs = {"probedefs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_27probedefs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_26probedefs};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_27probedefs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("probedefs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("probedefs", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("probedefs", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_26probedefs(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_26probedefs(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("probedefs", 0);

  /* "scamper.pyx":5181
 *         :rtype: _ScamperDealiasProbedefIterator
 *         """
 *         return _ScamperDealiasProbedefIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     def probe(self, i=0):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedefIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5181, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5181, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5174
 *         return None
 * 
 *     def probedefs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator to process available probedefs.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperDealias.probedefs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5183
 *         return _ScamperDealiasProbedefIterator(self)
 * 
 *     def probe(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         probe(i=0)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_29probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_28probe, "\n        probe(i=0)\n        get method to obtain a specific probe\n\n        :returns: the probe requested\n        :rtype: ScamperDealiasProbe\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_29probe = {"probe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_29probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_28probe};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_29probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("probe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5183, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 5183, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "probe", 0) < 0) __PYX_ERR(0, 5183, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 5183, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("probe", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 5183, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperDealias.probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_28probe(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_28probe(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_dealias_probe_t *__pyx_v_p;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  uint32_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("probe", 0);

  /* "scamper.pyx":5191
 *         :rtype: ScamperDealiasProbe
 *         """
 *         if i < 0:             # <<<<<<<<<<<<<<
 *             return None
 *         p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)
*/
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_i, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5191, __pyx_L1_error)
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 5191, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "scamper.pyx":5192
 *         """
 *         if i < 0:
 *             return None             # <<<<<<<<<<<<<<
 *         p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)
 *         return ScamperDealiasProbe.from_ptr(p)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5191
 *         :rtype: ScamperDealiasProbe
 *         """
 *         if i < 0:             # <<<<<<<<<<<<<<
 *             return None
 *         p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)
*/
  }

  /* "scamper.pyx":5193
 *         if i < 0:
 *             return None
 *         p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperDealiasProbe.from_ptr(p)
 * 
*/
  __pyx_t_3 = __Pyx_PyLong_As_uint32_t(__pyx_v_i); if (unlikely((__pyx_t_3 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5193, __pyx_L1_error)
  __pyx_v_p = scamper_dealias_probe_get(__pyx_v_self->_c, __pyx_t_3);

  /* "scamper.pyx":5194
 *             return None
 *         p = cscamper_dealias.scamper_dealias_probe_get(self._c, i)
 *         return ScamperDealiasProbe.from_ptr(p)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_19ScamperDealiasProbe_from_ptr(__pyx_v_p)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5194, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5183
 *         return _ScamperDealiasProbedefIterator(self)
 * 
 *     def probe(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         probe(i=0)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5196
 *         return ScamperDealiasProbe.from_ptr(p)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_11probe_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_11probe_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_11probe_count___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_11probe_count___get__(struct __pyx_obj_7scamper_ScamperDealias *__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("__get__", 0);

  /* "scamper.pyx":5205
 *         :rtype: int
 *         """
 *         return cscamper_dealias.scamper_dealias_probec_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def probes(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_dealias_probec_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5205, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5196
 *         return ScamperDealiasProbe.from_ptr(p)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias.probe_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5207
 *         return cscamper_dealias.scamper_dealias_probec_get(self._c)
 * 
 *     def probes(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator to process available probes.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_31probes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperDealias_30probes, "\n        get method to obtain an iterator to process available probes.\n\n        :returns: an iterator to access the probedefs.\n        :rtype: _ScamperDealiasProbeIterator\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_31probes = {"probes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_31probes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_30probes};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_31probes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("probes (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("probes", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("probes", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_30probes(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_30probes(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("probes", 0);

  /* "scamper.pyx":5214
 *         :rtype: _ScamperDealiasProbeIterator
 *         """
 *         return _ScamperDealiasProbeIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbeIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5214, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5214, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5207
 *         return cscamper_dealias.scamper_dealias_probec_get(self._c)
 * 
 *     def probes(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator to process available probes.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperDealias.probes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5216
 *         return _ScamperDealiasProbeIterator(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def startat(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_7startat_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_7startat_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_7startat___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_7startat___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  scamper_dealias_midardisc_t *__pyx_v_md;
  struct timeval const *__pyx_v_tv;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5224
 *         :rtype: datetime
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):             # <<<<<<<<<<<<<<
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             tv = cscamper_dealias.scamper_dealias_midardisc_startat_get(md)
*/
  __pyx_t_1 = scamper_dealias_method_is_midardisc(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5225
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_midardisc_startat_get(md)
 *         else:
*/
    __pyx_v_md = scamper_dealias_midardisc_get(__pyx_v_self->_c);

    /* "scamper.pyx":5226
 *         if cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             tv = cscamper_dealias.scamper_dealias_midardisc_startat_get(md)             # <<<<<<<<<<<<<<
 *         else:
 *             return None
*/
    __pyx_v_tv = scamper_dealias_midardisc_startat_get(__pyx_v_md);

    /* "scamper.pyx":5224
 *         :rtype: datetime
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):             # <<<<<<<<<<<<<<
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             tv = cscamper_dealias.scamper_dealias_midardisc_startat_get(md)
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5228
 *             tv = cscamper_dealias.scamper_dealias_midardisc_startat_get(md)
 *         else:
 *             return None             # <<<<<<<<<<<<<<
 *         if tv == NULL:
 *             return None
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }
  __pyx_L3:;

  /* "scamper.pyx":5229
 *         else:
 *             return None
 *         if tv == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(tv.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_tv == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5230
 *             return None
 *         if tv == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(tv.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], tv.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5229
 *         else:
 *             return None
 *         if tv == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(tv.tv_sec)
*/
  }

  /* "scamper.pyx":5231
 *         if tv == NULL:
 *             return None
 *         t = time.gmtime(tv.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], tv.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5231, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5231, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":5232
 *             return None
 *         t = time.gmtime(tv.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], tv.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5232, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":5233
 *         t = time.gmtime(tv.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], tv.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5233, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 5232, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5232, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5216
 *         return _ScamperDealiasProbeIterator(self)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def startat(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperDealias.startat.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5235
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_probe(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_10wait_probe_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_10wait_probe_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_10wait_probe___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_10wait_probe___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  scamper_dealias_mercator_t *__pyx_v_mc;
  struct timeval const *__pyx_v_tv;
  scamper_dealias_ally_t *__pyx_v_ally;
  scamper_dealias_prefixscan_t *__pyx_v_pf;
  scamper_dealias_radargun_t *__pyx_v_rg;
  scamper_dealias_bump_t *__pyx_v_bump;
  scamper_dealias_midarest_t *__pyx_v_me;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5243
 *         :rtype: timedelta
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):             # <<<<<<<<<<<<<<
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if mc == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_mercator(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5244
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)             # <<<<<<<<<<<<<<
 *             if mc == NULL:
 *                 return None
*/
    __pyx_v_mc = scamper_dealias_mercator_get(__pyx_v_self->_c);

    /* "scamper.pyx":5245
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if mc == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
*/
    __pyx_t_1 = (__pyx_v_mc == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5246
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if mc == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5245
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if mc == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
*/
    }

    /* "scamper.pyx":5247
 *             if mc == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_mercator_wait_timeout_get(__pyx_v_mc);

    /* "scamper.pyx":5243
 *         :rtype: timedelta
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):             # <<<<<<<<<<<<<<
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if mc == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5248
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):             # <<<<<<<<<<<<<<
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if ally == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_ally(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5249
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)             # <<<<<<<<<<<<<<
 *             if ally == NULL:
 *                 return None
*/
    __pyx_v_ally = scamper_dealias_ally_get(__pyx_v_self->_c);

    /* "scamper.pyx":5250
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if ally == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_probe_get(ally)
*/
    __pyx_t_1 = (__pyx_v_ally == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5251
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if ally == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_probe_get(ally)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5250
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if ally == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_probe_get(ally)
*/
    }

    /* "scamper.pyx":5252
 *             if ally == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_probe_get(ally)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_ally_wait_probe_get(__pyx_v_ally);

    /* "scamper.pyx":5248
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):             # <<<<<<<<<<<<<<
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if ally == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5253
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_probe_get(ally)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):             # <<<<<<<<<<<<<<
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_prefixscan(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5254
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_probe_get(ally)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)             # <<<<<<<<<<<<<<
 *             if pf == NULL:
 *                 return None
*/
    __pyx_v_pf = scamper_dealias_prefixscan_get(__pyx_v_self->_c);

    /* "scamper.pyx":5255
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_probe_get(pf)
*/
    __pyx_t_1 = (__pyx_v_pf == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5256
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_probe_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5255
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_probe_get(pf)
*/
    }

    /* "scamper.pyx":5257
 *             if pf == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_probe_get(pf)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_prefixscan_wait_probe_get(__pyx_v_pf);

    /* "scamper.pyx":5253
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_probe_get(ally)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):             # <<<<<<<<<<<<<<
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5258
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_probe_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):             # <<<<<<<<<<<<<<
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_radargun(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5259
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_probe_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)             # <<<<<<<<<<<<<<
 *             if rg == NULL:
 *                 return None
*/
    __pyx_v_rg = scamper_dealias_radargun_get(__pyx_v_self->_c);

    /* "scamper.pyx":5260
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_probe_get(rg)
*/
    __pyx_t_1 = (__pyx_v_rg == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5261
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_probe_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5260
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_probe_get(rg)
*/
    }

    /* "scamper.pyx":5262
 *             if rg == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_probe_get(rg)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
 *             bump = cscamper_dealias.scamper_dealias_bump_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_radargun_wait_probe_get(__pyx_v_rg);

    /* "scamper.pyx":5258
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_probe_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):             # <<<<<<<<<<<<<<
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5263
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_probe_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):             # <<<<<<<<<<<<<<
 *             bump = cscamper_dealias.scamper_dealias_bump_get(self._c)
 *             if bump == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_bump(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5264
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_probe_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
 *             bump = cscamper_dealias.scamper_dealias_bump_get(self._c)             # <<<<<<<<<<<<<<
 *             if bump == NULL:
 *                 return None
*/
    __pyx_v_bump = scamper_dealias_bump_get(__pyx_v_self->_c);

    /* "scamper.pyx":5265
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
 *             bump = cscamper_dealias.scamper_dealias_bump_get(self._c)
 *             if bump == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_bump_wait_probe_get(bump)
*/
    __pyx_t_1 = (__pyx_v_bump == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5266
 *             bump = cscamper_dealias.scamper_dealias_bump_get(self._c)
 *             if bump == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_bump_wait_probe_get(bump)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5265
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):
 *             bump = cscamper_dealias.scamper_dealias_bump_get(self._c)
 *             if bump == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_bump_wait_probe_get(bump)
*/
    }

    /* "scamper.pyx":5267
 *             if bump == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_bump_wait_probe_get(bump)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_bump_wait_probe_get(__pyx_v_bump);

    /* "scamper.pyx":5263
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_probe_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_bump(self._c):             # <<<<<<<<<<<<<<
 *             bump = cscamper_dealias.scamper_dealias_bump_get(self._c)
 *             if bump == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5268
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_bump_wait_probe_get(bump)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):             # <<<<<<<<<<<<<<
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_midarest(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5269
 *             tv = cscamper_dealias.scamper_dealias_bump_wait_probe_get(bump)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)             # <<<<<<<<<<<<<<
 *             if me == NULL:
 *                 return None
*/
    __pyx_v_me = scamper_dealias_midarest_get(__pyx_v_self->_c);

    /* "scamper.pyx":5270
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_probe_get(me)
*/
    __pyx_t_1 = (__pyx_v_me == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5271
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_probe_get(me)
 *         else:
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5270
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_probe_get(me)
*/
    }

    /* "scamper.pyx":5272
 *             if me == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_probe_get(me)             # <<<<<<<<<<<<<<
 *         else:
 *             return None
*/
    __pyx_v_tv = scamper_dealias_midarest_wait_probe_get(__pyx_v_me);

    /* "scamper.pyx":5268
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_bump_wait_probe_get(bump)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):             # <<<<<<<<<<<<<<
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5274
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_probe_get(me)
 *         else:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }
  __pyx_L3:;

  /* "scamper.pyx":5276
 *             return None
 * 
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_3, NULL};
    __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_4, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 5276, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_6, __pyx_t_8, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 5276, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_5, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5235
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_probe(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperDealias.wait_probe.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5278
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_round(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_10wait_round_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_10wait_round_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_10wait_round___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_10wait_round___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  scamper_dealias_radargun_t *__pyx_v_rg;
  struct timeval const *__pyx_v_tv;
  scamper_dealias_midarest_t *__pyx_v_me;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5286
 *         :rtype: timedelta
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_radargun(self._c):             # <<<<<<<<<<<<<<
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_radargun(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5287
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)             # <<<<<<<<<<<<<<
 *             if rg == NULL:
 *                 return None
*/
    __pyx_v_rg = scamper_dealias_radargun_get(__pyx_v_self->_c);

    /* "scamper.pyx":5288
 *         if cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_round_get(rg)
*/
    __pyx_t_1 = (__pyx_v_rg == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5289
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_round_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5288
 *         if cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_round_get(rg)
*/
    }

    /* "scamper.pyx":5290
 *             if rg == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_round_get(rg)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_radargun_wait_round_get(__pyx_v_rg);

    /* "scamper.pyx":5286
 *         :rtype: timedelta
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_radargun(self._c):             # <<<<<<<<<<<<<<
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5291
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_round_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):             # <<<<<<<<<<<<<<
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_midarest(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5292
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_round_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)             # <<<<<<<<<<<<<<
 *             if me == NULL:
 *                 return None
*/
    __pyx_v_me = scamper_dealias_midarest_get(__pyx_v_self->_c);

    /* "scamper.pyx":5293
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_round_get(me)
*/
    __pyx_t_1 = (__pyx_v_me == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5294
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_round_get(me)
 *         else:
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5293
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_round_get(me)
*/
    }

    /* "scamper.pyx":5295
 *             if me == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_round_get(me)             # <<<<<<<<<<<<<<
 *         else:
 *             return None
*/
    __pyx_v_tv = scamper_dealias_midarest_wait_round_get(__pyx_v_me);

    /* "scamper.pyx":5291
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_round_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):             # <<<<<<<<<<<<<<
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5297
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_round_get(me)
 *         else:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }
  __pyx_L3:;

  /* "scamper.pyx":5299
 *             return None
 * 
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5299, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_3, NULL};
    __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_4, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 5299, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_6, __pyx_t_8, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 5299, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_5, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5278
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_round(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperDealias.wait_round.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5301
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_timeout(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_12wait_timeout_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_12wait_timeout_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_12wait_timeout___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_12wait_timeout___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  scamper_dealias_mercator_t *__pyx_v_mc;
  struct timeval const *__pyx_v_tv;
  scamper_dealias_ally_t *__pyx_v_ally;
  scamper_dealias_prefixscan_t *__pyx_v_pf;
  scamper_dealias_radargun_t *__pyx_v_rg;
  scamper_dealias_midarest_t *__pyx_v_me;
  scamper_dealias_midardisc_t *__pyx_v_md;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5310
 *         :rtype: timedelta
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):             # <<<<<<<<<<<<<<
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if mc == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_mercator(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5311
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)             # <<<<<<<<<<<<<<
 *             if mc == NULL:
 *                 return None
*/
    __pyx_v_mc = scamper_dealias_mercator_get(__pyx_v_self->_c);

    /* "scamper.pyx":5312
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if mc == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
*/
    __pyx_t_1 = (__pyx_v_mc == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5313
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if mc == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5312
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if mc == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
*/
    }

    /* "scamper.pyx":5314
 *             if mc == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_mercator_wait_timeout_get(__pyx_v_mc);

    /* "scamper.pyx":5310
 *         :rtype: timedelta
 *         """
 *         if cscamper_dealias.scamper_dealias_method_is_mercator(self._c):             # <<<<<<<<<<<<<<
 *             mc = cscamper_dealias.scamper_dealias_mercator_get(self._c)
 *             if mc == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5315
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):             # <<<<<<<<<<<<<<
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if ally == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_ally(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5316
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)             # <<<<<<<<<<<<<<
 *             if ally == NULL:
 *                 return None
*/
    __pyx_v_ally = scamper_dealias_ally_get(__pyx_v_self->_c);

    /* "scamper.pyx":5317
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if ally == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_timeout_get(ally)
*/
    __pyx_t_1 = (__pyx_v_ally == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5318
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if ally == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_timeout_get(ally)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5317
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if ally == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_timeout_get(ally)
*/
    }

    /* "scamper.pyx":5319
 *             if ally == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_timeout_get(ally)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_ally_wait_timeout_get(__pyx_v_ally);

    /* "scamper.pyx":5315
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_mercator_wait_timeout_get(mc)
 *         elif cscamper_dealias.scamper_dealias_method_is_ally(self._c):             # <<<<<<<<<<<<<<
 *             ally = cscamper_dealias.scamper_dealias_ally_get(self._c)
 *             if ally == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5320
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_timeout_get(ally)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):             # <<<<<<<<<<<<<<
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_prefixscan(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5321
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_timeout_get(ally)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)             # <<<<<<<<<<<<<<
 *             if pf == NULL:
 *                 return None
*/
    __pyx_v_pf = scamper_dealias_prefixscan_get(__pyx_v_self->_c);

    /* "scamper.pyx":5322
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_timeout_get(pf)
*/
    __pyx_t_1 = (__pyx_v_pf == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5323
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_timeout_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5322
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_timeout_get(pf)
*/
    }

    /* "scamper.pyx":5324
 *             if pf == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_timeout_get(pf)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_prefixscan_wait_timeout_get(__pyx_v_pf);

    /* "scamper.pyx":5320
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_ally_wait_timeout_get(ally)
 *         elif cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c):             # <<<<<<<<<<<<<<
 *             pf = cscamper_dealias.scamper_dealias_prefixscan_get(self._c)
 *             if pf == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5325
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_timeout_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):             # <<<<<<<<<<<<<<
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_radargun(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5326
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_timeout_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)             # <<<<<<<<<<<<<<
 *             if rg == NULL:
 *                 return None
*/
    __pyx_v_rg = scamper_dealias_radargun_get(__pyx_v_self->_c);

    /* "scamper.pyx":5327
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_timeout_get(rg)
*/
    __pyx_t_1 = (__pyx_v_rg == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5328
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_timeout_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5327
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_timeout_get(rg)
*/
    }

    /* "scamper.pyx":5329
 *             if rg == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_timeout_get(rg)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_radargun_wait_timeout_get(__pyx_v_rg);

    /* "scamper.pyx":5325
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_prefixscan_wait_timeout_get(pf)
 *         elif cscamper_dealias.scamper_dealias_method_is_radargun(self._c):             # <<<<<<<<<<<<<<
 *             rg = cscamper_dealias.scamper_dealias_radargun_get(self._c)
 *             if rg == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5330
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_timeout_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):             # <<<<<<<<<<<<<<
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_midarest(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5331
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_timeout_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)             # <<<<<<<<<<<<<<
 *             if me == NULL:
 *                 return None
*/
    __pyx_v_me = scamper_dealias_midarest_get(__pyx_v_self->_c);

    /* "scamper.pyx":5332
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_timeout_get(me)
*/
    __pyx_t_1 = (__pyx_v_me == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5333
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_timeout_get(me)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5332
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_timeout_get(me)
*/
    }

    /* "scamper.pyx":5334
 *             if me == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_timeout_get(me)             # <<<<<<<<<<<<<<
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
*/
    __pyx_v_tv = scamper_dealias_midarest_wait_timeout_get(__pyx_v_me);

    /* "scamper.pyx":5330
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_radargun_wait_timeout_get(rg)
 *         elif cscamper_dealias.scamper_dealias_method_is_midarest(self._c):             # <<<<<<<<<<<<<<
 *             me = cscamper_dealias.scamper_dealias_midarest_get(self._c)
 *             if me == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5335
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_timeout_get(me)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):             # <<<<<<<<<<<<<<
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             if md == NULL:
*/
  __pyx_t_1 = scamper_dealias_method_is_midardisc(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":5336
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_timeout_get(me)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)             # <<<<<<<<<<<<<<
 *             if md == NULL:
 *                 return None
*/
    __pyx_v_md = scamper_dealias_midardisc_get(__pyx_v_self->_c);

    /* "scamper.pyx":5337
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             if md == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midardisc_wait_timeout_get(md)
*/
    __pyx_t_1 = (__pyx_v_md == NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":5338
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             if md == NULL:
 *                 return None             # <<<<<<<<<<<<<<
 *             tv = cscamper_dealias.scamper_dealias_midardisc_wait_timeout_get(md)
 *         else:
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":5337
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             if md == NULL:             # <<<<<<<<<<<<<<
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midardisc_wait_timeout_get(md)
*/
    }

    /* "scamper.pyx":5339
 *             if md == NULL:
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midardisc_wait_timeout_get(md)             # <<<<<<<<<<<<<<
 *         else:
 *             return None
*/
    __pyx_v_tv = scamper_dealias_midardisc_wait_timeout_get(__pyx_v_md);

    /* "scamper.pyx":5335
 *                 return None
 *             tv = cscamper_dealias.scamper_dealias_midarest_wait_timeout_get(me)
 *         elif cscamper_dealias.scamper_dealias_method_is_midardisc(self._c):             # <<<<<<<<<<<<<<
 *             md = cscamper_dealias.scamper_dealias_midardisc_get(self._c)
 *             if md == NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":5341
 *             tv = cscamper_dealias.scamper_dealias_midardisc_wait_timeout_get(md)
 *         else:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
*/
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }
  __pyx_L3:;

  /* "scamper.pyx":5343
 *             return None
 * 
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_tv->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = __Pyx_PyLong_From_suseconds_t(__pyx_v_tv->tv_usec); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 5343, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_3, NULL};
    __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_4, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 5343, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_6, __pyx_t_8, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 5343, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_5, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5301
 *         return datetime.timedelta(seconds=tv.tv_sec, microseconds=tv.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_timeout(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperDealias.wait_timeout.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":4892
 *     """
 *     cdef cscamper_dealias.scamper_dealias_t *_c
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperDealias_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_5_inst___get__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_5_inst___get__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperDealias_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_14ScamperDealias_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperDealias_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 4892, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperDealias._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperDealias_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_14ScamperDealias_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperDealias_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_33__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_33__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_33__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_33__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_32__reduce_cython__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_32__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperDealias.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperDealias_35__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperDealias_35__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_35__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperDealias_35__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperDealias.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperDealias_34__setstate_cython__(((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperDealias_34__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperDealias *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperDealias.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5352
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_20ScamperNeighbourdisc_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_20ScamperNeighbourdisc_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_20ScamperNeighbourdisc___init__(((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_20ScamperNeighbourdisc___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":5353
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 5353, __pyx_L1_error)

  /* "scamper.pyx":5352
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperNeighbourdisc.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5355
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_neighbourdisc.scamper_neighbourdisc_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_20ScamperNeighbourdisc_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_20ScamperNeighbourdisc_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_20ScamperNeighbourdisc_2__dealloc__(((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_20ScamperNeighbourdisc_2__dealloc__(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":5356
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_neighbourdisc.scamper_neighbourdisc_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5357
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_neighbourdisc.scamper_neighbourdisc_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_neighbourdisc_free(__pyx_v_self->_c);

    /* "scamper.pyx":5356
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_neighbourdisc.scamper_neighbourdisc_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":5355
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_neighbourdisc.scamper_neighbourdisc_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":5359
 *             cscamper_neighbourdisc.scamper_neighbourdisc_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperNeighbourdisc from_ptr(cscamper_neighbourdisc.scamper_neighbourdisc_t *ptr):
 *         cdef ScamperNeighbourdisc nd
*/

static struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_f_7scamper_20ScamperNeighbourdisc_from_ptr(scamper_neighbourdisc_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_nd = 0;
  struct __pyx_obj_7scamper_ScamperNeighbourdisc *__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("from_ptr", 0);

  /* "scamper.pyx":5362
 *     cdef ScamperNeighbourdisc from_ptr(cscamper_neighbourdisc.scamper_neighbourdisc_t *ptr):
 *         cdef ScamperNeighbourdisc nd
 *         nd = ScamperNeighbourdisc.__new__(ScamperNeighbourdisc)             # <<<<<<<<<<<<<<
 *         nd._c = ptr
 *         return nd
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperNeighbourdisc(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperNeighbourdisc), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5362, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_nd = ((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":5363
 *         cdef ScamperNeighbourdisc nd
 *         nd = ScamperNeighbourdisc.__new__(ScamperNeighbourdisc)
 *         nd._c = ptr             # <<<<<<<<<<<<<<
 *         return nd
 * 
*/
  __pyx_v_nd->_c = __pyx_v_ptr;

  /* "scamper.pyx":5364
 *         nd = ScamperNeighbourdisc.__new__(ScamperNeighbourdisc)
 *         nd._c = ptr
 *         return nd             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_nd);
  __pyx_r = __pyx_v_nd;
  goto __pyx_L0;

  /* "scamper.pyx":5359
 *             cscamper_neighbourdisc.scamper_neighbourdisc_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperNeighbourdisc from_ptr(cscamper_neighbourdisc.scamper_neighbourdisc_t *ptr):
 *         cdef ScamperNeighbourdisc nd
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperNeighbourdisc.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_nd);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5366
 *         return nd
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperNeighbourdisc_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperNeighbourdisc_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperNeighbourdisc_4inst___get__(((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperNeighbourdisc_4inst___get__(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5375
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 *     def to_json(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":5366
 *         return nd
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5377
 *         return self._inst
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this neighbourdisc
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperNeighbourdisc_5to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_20ScamperNeighbourdisc_4to_json, "\n        get method to obtain a JSON rendering of this neighbourdisc\n        measurement.\n\n        :returns: json representation\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_20ScamperNeighbourdisc_5to_json = {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperNeighbourdisc_5to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_20ScamperNeighbourdisc_4to_json};
static PyObject *__pyx_pw_7scamper_20ScamperNeighbourdisc_5to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_json (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("to_json", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("to_json", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_20ScamperNeighbourdisc_4to_json(((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperNeighbourdisc_4to_json(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_json", 0);

  /* "scamper.pyx":5385
 *         :rtype: string
 *         """
 *         c = cscamper_neighbourdisc.scamper_neighbourdisc_tojson(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_neighbourdisc_tojson(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":5386
 *         """
 *         c = cscamper_neighbourdisc.scamper_neighbourdisc_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5387
 *         c = cscamper_neighbourdisc.scamper_neighbourdisc_tojson(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5386
 *         """
 *         c = cscamper_neighbourdisc.scamper_neighbourdisc_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":5388
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5388, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":5389
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":5390
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":5377
 *         return self._inst
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this neighbourdisc
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperNeighbourdisc.to_json", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5350
 * cdef class ScamperNeighbourdisc:
 *     cdef cscamper_neighbourdisc.scamper_neighbourdisc_t *_c
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperNeighbourdisc_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperNeighbourdisc_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperNeighbourdisc_5_inst___get__(((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperNeighbourdisc_5_inst___get__(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_20ScamperNeighbourdisc_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_20ScamperNeighbourdisc_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperNeighbourdisc_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_20ScamperNeighbourdisc_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 5350, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperNeighbourdisc._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_20ScamperNeighbourdisc_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_20ScamperNeighbourdisc_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperNeighbourdisc_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_20ScamperNeighbourdisc_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperNeighbourdisc_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20ScamperNeighbourdisc_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperNeighbourdisc_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20ScamperNeighbourdisc_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_20ScamperNeighbourdisc_6__reduce_cython__(((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperNeighbourdisc_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperNeighbourdisc.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperNeighbourdisc_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20ScamperNeighbourdisc_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperNeighbourdisc_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20ScamperNeighbourdisc_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperNeighbourdisc.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20ScamperNeighbourdisc_8__setstate_cython__(((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperNeighbourdisc_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperNeighbourdisc *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperNeighbourdisc.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5403
 *     cdef cscamper_tbit.scamper_tbit_pkt_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperTbitPkt_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_14ScamperTbitPkt_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTbitPkt___init__(((struct __pyx_obj_7scamper_ScamperTbitPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperTbitPkt___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":5404
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5404, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 5404, __pyx_L1_error)

  /* "scamper.pyx":5403
 *     cdef cscamper_tbit.scamper_tbit_pkt_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTbitPkt.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5406
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tbit.scamper_tbit_pkt_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_14ScamperTbitPkt_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_14ScamperTbitPkt_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_14ScamperTbitPkt_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTbitPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_14ScamperTbitPkt_2__dealloc__(struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":5407
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tbit.scamper_tbit_pkt_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5408
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_tbit.scamper_tbit_pkt_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_tbit_pkt_free(__pyx_v_self->_c);

    /* "scamper.pyx":5407
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tbit.scamper_tbit_pkt_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":5406
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tbit.scamper_tbit_pkt_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":5410
 *             cscamper_tbit.scamper_tbit_pkt_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTbitPkt from_ptr(cscamper_tbit.scamper_tbit_pkt_t *ptr):
 *         cdef ScamperTbitPkt pkt = ScamperTbitPkt.__new__(ScamperTbitPkt)
*/

static struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_f_7scamper_14ScamperTbitPkt_from_ptr(scamper_tbit_pkt_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_pkt = 0;
  struct __pyx_obj_7scamper_ScamperTbitPkt *__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("from_ptr", 0);

  /* "scamper.pyx":5412
 *     @staticmethod
 *     cdef ScamperTbitPkt from_ptr(cscamper_tbit.scamper_tbit_pkt_t *ptr):
 *         cdef ScamperTbitPkt pkt = ScamperTbitPkt.__new__(ScamperTbitPkt)             # <<<<<<<<<<<<<<
 *         pkt._c = cscamper_tbit.scamper_tbit_pkt_use(ptr)
 *         return pkt
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTbitPkt(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTbitPkt), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5412, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_pkt = ((struct __pyx_obj_7scamper_ScamperTbitPkt *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":5413
 *     cdef ScamperTbitPkt from_ptr(cscamper_tbit.scamper_tbit_pkt_t *ptr):
 *         cdef ScamperTbitPkt pkt = ScamperTbitPkt.__new__(ScamperTbitPkt)
 *         pkt._c = cscamper_tbit.scamper_tbit_pkt_use(ptr)             # <<<<<<<<<<<<<<
 *         return pkt
 * 
*/
  __pyx_v_pkt->_c = scamper_tbit_pkt_use(__pyx_v_ptr);

  /* "scamper.pyx":5414
 *         cdef ScamperTbitPkt pkt = ScamperTbitPkt.__new__(ScamperTbitPkt)
 *         pkt._c = cscamper_tbit.scamper_tbit_pkt_use(ptr)
 *         return pkt             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_pkt);
  __pyx_r = __pyx_v_pkt;
  goto __pyx_L0;

  /* "scamper.pyx":5410
 *             cscamper_tbit.scamper_tbit_pkt_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTbitPkt from_ptr(cscamper_tbit.scamper_tbit_pkt_t *ptr):
 *         cdef ScamperTbitPkt pkt = ScamperTbitPkt.__new__(ScamperTbitPkt)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbitPkt.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pkt);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5416
 *         return pkt
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def timestamp(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_9timestamp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_9timestamp_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTbitPkt_9timestamp___get__(((struct __pyx_obj_7scamper_ScamperTbitPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_9timestamp___get__(struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5425
 *         :rtype: datetime
 *         """
 *         c = cscamper_tbit.scamper_tbit_pkt_tv_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_tbit_pkt_tv_get(__pyx_v_self->_c);

  /* "scamper.pyx":5426
 *         """
 *         c = cscamper_tbit.scamper_tbit_pkt_tv_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5427
 *         c = cscamper_tbit.scamper_tbit_pkt_tv_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5426
 *         """
 *         c = cscamper_tbit.scamper_tbit_pkt_tv_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":5428
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5428, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":5429
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5429, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":5430
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     def is_tx(self):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5430, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 5429, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5429, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5416
 *         return pkt
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def timestamp(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperTbitPkt.timestamp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5432
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def is_tx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the packet was transmitted by the
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_5is_tx(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperTbitPkt_4is_tx, "\n        get method that returns True if the packet was transmitted by the\n        tbit client.\n\n        :returns: True if the packet was transmitted\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperTbitPkt_5is_tx = {"is_tx", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTbitPkt_5is_tx, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTbitPkt_4is_tx};
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_5is_tx(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tx (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tx", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tx", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTbitPkt_4is_tx(((struct __pyx_obj_7scamper_ScamperTbitPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_4is_tx(struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self) {
  uint8_t __pyx_v_d;
  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("is_tx", 0);

  /* "scamper.pyx":5440
 *         :rtype: bool
 *         """
 *         d = cscamper_tbit.scamper_tbit_pkt_dir_get(self._c)             # <<<<<<<<<<<<<<
 *         return d == 1
 * 
*/
  __pyx_v_d = scamper_tbit_pkt_dir_get(__pyx_v_self->_c);

  /* "scamper.pyx":5441
 *         """
 *         d = cscamper_tbit.scamper_tbit_pkt_dir_get(self._c)
 *         return d == 1             # <<<<<<<<<<<<<<
 * 
 *     def is_rx(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_d == 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5441, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5432
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def is_tx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the packet was transmitted by the
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbitPkt.is_tx", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5443
 *         return d == 1
 * 
 *     def is_rx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the packet was received by the
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_7is_rx(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperTbitPkt_6is_rx, "\n        get method that returns True if the packet was received by the\n        tbit client.\n\n        :returns: True if the packet was received\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperTbitPkt_7is_rx = {"is_rx", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTbitPkt_7is_rx, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTbitPkt_6is_rx};
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_7is_rx(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_rx (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_rx", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_rx", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTbitPkt_6is_rx(((struct __pyx_obj_7scamper_ScamperTbitPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_6is_rx(struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self) {
  uint8_t __pyx_v_d;
  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("is_rx", 0);

  /* "scamper.pyx":5451
 *         :rtype: bool
 *         """
 *         d = cscamper_tbit.scamper_tbit_pkt_dir_get(self._c)             # <<<<<<<<<<<<<<
 *         return d == 2
 * 
*/
  __pyx_v_d = scamper_tbit_pkt_dir_get(__pyx_v_self->_c);

  /* "scamper.pyx":5452
 *         """
 *         d = cscamper_tbit.scamper_tbit_pkt_dir_get(self._c)
 *         return d == 2             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_d == 2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5443
 *         return d == 1
 * 
 *     def is_rx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the packet was received by the
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbitPkt.is_rx", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5454
 *         return d == 2
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def data(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_4data_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_4data_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperTbitPkt_4data___get__(((struct __pyx_obj_7scamper_ScamperTbitPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_4data___get__(struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self) {
  uint16_t __pyx_v_s;
  uint8_t const *__pyx_v_ptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":5464
 *         cdef uint16_t s
 *         cdef const uint8_t *ptr
 *         s = cscamper_tbit.scamper_tbit_pkt_len_get(self._c)             # <<<<<<<<<<<<<<
 *         ptr = cscamper_tbit.scamper_tbit_pkt_data_get(self._c)
 *         if s == 0 or ptr == NULL:
*/
  __pyx_v_s = scamper_tbit_pkt_len_get(__pyx_v_self->_c);

  /* "scamper.pyx":5465
 *         cdef const uint8_t *ptr
 *         s = cscamper_tbit.scamper_tbit_pkt_len_get(self._c)
 *         ptr = cscamper_tbit.scamper_tbit_pkt_data_get(self._c)             # <<<<<<<<<<<<<<
 *         if s == 0 or ptr == NULL:
 *             return None
*/
  __pyx_v_ptr = scamper_tbit_pkt_data_get(__pyx_v_self->_c);

  /* "scamper.pyx":5466
 *         s = cscamper_tbit.scamper_tbit_pkt_len_get(self._c)
 *         ptr = cscamper_tbit.scamper_tbit_pkt_data_get(self._c)
 *         if s == 0 or ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return ptr[:s]
*/
  __pyx_t_2 = (__pyx_v_s == 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_ptr == NULL);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":5467
 *         ptr = cscamper_tbit.scamper_tbit_pkt_data_get(self._c)
 *         if s == 0 or ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return ptr[:s]
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5466
 *         s = cscamper_tbit.scamper_tbit_pkt_len_get(self._c)
 *         ptr = cscamper_tbit.scamper_tbit_pkt_data_get(self._c)
 *         if s == 0 or ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return ptr[:s]
*/
  }

  /* "scamper.pyx":5468
 *         if s == 0 or ptr == NULL:
 *             return None
 *         return ptr[:s]             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTbit:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_ptr) + 0, __pyx_v_s - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5468, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5454
 *         return d == 2
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def data(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTbitPkt.data.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperTbitPkt_9__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTbitPkt_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_9__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperTbitPkt_8__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTbitPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_8__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTbitPkt.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperTbitPkt_11__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTbitPkt_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperTbitPkt_11__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTbitPkt.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperTbitPkt_10__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTbitPkt *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperTbitPkt_10__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbitPkt *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTbitPkt.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5475
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperTbit_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_11ScamperTbit_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit___init__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperTbit___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":5476
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 5476, __pyx_L1_error)

  /* "scamper.pyx":5475
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTbit.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5478
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tbit.scamper_tbit_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_11ScamperTbit_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_11ScamperTbit_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_11ScamperTbit_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_11ScamperTbit_2__dealloc__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":5479
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tbit.scamper_tbit_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5480
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_tbit.scamper_tbit_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
*/
    scamper_tbit_free(__pyx_v_self->_c);

    /* "scamper.pyx":5479
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_tbit.scamper_tbit_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":5478
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_tbit.scamper_tbit_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":5482
 *             cscamper_tbit.scamper_tbit_free(self._c)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self._pktc
 * 
*/

/* Python wrapper */
static Py_ssize_t __pyx_pw_7scamper_11ScamperTbit_5__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_7scamper_11ScamperTbit_5__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_4__len__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_7scamper_11ScamperTbit_4__len__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  Py_ssize_t __pyx_r;

  /* "scamper.pyx":5483
 * 
 *     def __len__(self):
 *         return self._pktc             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_r = __pyx_v_self->_pktc;
  goto __pyx_L0;

  /* "scamper.pyx":5482
 *             cscamper_tbit.scamper_tbit_free(self._c)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self._pktc
 * 
*/

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "scamper.pyx":5485
 *         return self._pktc
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_7__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_7__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_6__iter__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_6__iter__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":5486
 * 
 *     def __iter__(self):
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_v_self->_i = 0;

  /* "scamper.pyx":5487
 *     def __iter__(self):
 *         self._i = 0
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":5485
 *         return self._pktc
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5489
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i >= self._pktc:
 *             raise StopIteration
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_9__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_9__next__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_8__next__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_8__next__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  scamper_tbit_pkt_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_error_without_exception = 0; /* StopIteration */
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":5490
 * 
 *     def __next__(self):
 *         if self._i >= self._pktc:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         c = cscamper_tbit.scamper_tbit_pkt_get(self._c, self._i)
*/
  __pyx_t_1 = (__pyx_v_self->_i >= __pyx_v_self->_pktc);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":5491
 *     def __next__(self):
 *         if self._i >= self._pktc:
 *             raise StopIteration             # <<<<<<<<<<<<<<
 *         c = cscamper_tbit.scamper_tbit_pkt_get(self._c, self._i)
 *         self._i = self._i + 1
*/
    __pyx_error_without_exception = 1;
    goto __pyx_L1_error;;

    /* "scamper.pyx":5490
 * 
 *     def __next__(self):
 *         if self._i >= self._pktc:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         c = cscamper_tbit.scamper_tbit_pkt_get(self._c, self._i)
*/
  }

  /* "scamper.pyx":5492
 *         if self._i >= self._pktc:
 *             raise StopIteration
 *         c = cscamper_tbit.scamper_tbit_pkt_get(self._c, self._i)             # <<<<<<<<<<<<<<
 *         self._i = self._i + 1
 *         return ScamperTbitPkt.from_ptr(c)
*/
  __pyx_v_c = scamper_tbit_pkt_get(__pyx_v_self->_c, __pyx_v_self->_i);

  /* "scamper.pyx":5493
 *             raise StopIteration
 *         c = cscamper_tbit.scamper_tbit_pkt_get(self._c, self._i)
 *         self._i = self._i + 1             # <<<<<<<<<<<<<<
 *         return ScamperTbitPkt.from_ptr(c)
 * 
*/
  __pyx_v_self->_i = (__pyx_v_self->_i + 1);

  /* "scamper.pyx":5494
 *         c = cscamper_tbit.scamper_tbit_pkt_get(self._c, self._i)
 *         self._i = self._i + 1
 *         return ScamperTbitPkt.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_14ScamperTbitPkt_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5489
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i >= self._pktc:
 *             raise StopIteration
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  if (!__pyx_error_without_exception) {
    __Pyx_AddTraceback("scamper.ScamperTbit.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5496
 *         return ScamperTbitPkt.from_ptr(c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTbit from_ptr(cscamper_tbit.scamper_tbit_t *ptr):
 *         cdef ScamperTbit tbit = ScamperTbit.__new__(ScamperTbit)
*/

static struct __pyx_obj_7scamper_ScamperTbit *__pyx_f_7scamper_11ScamperTbit_from_ptr(scamper_tbit_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_tbit = 0;
  struct __pyx_obj_7scamper_ScamperTbit *__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("from_ptr", 0);

  /* "scamper.pyx":5498
 *     @staticmethod
 *     cdef ScamperTbit from_ptr(cscamper_tbit.scamper_tbit_t *ptr):
 *         cdef ScamperTbit tbit = ScamperTbit.__new__(ScamperTbit)             # <<<<<<<<<<<<<<
 *         tbit._c = ptr
 *         tbit._pktc = cscamper_tbit.scamper_tbit_pktc_get(ptr)
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTbit(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTbit), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5498, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_tbit = ((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":5499
 *     cdef ScamperTbit from_ptr(cscamper_tbit.scamper_tbit_t *ptr):
 *         cdef ScamperTbit tbit = ScamperTbit.__new__(ScamperTbit)
 *         tbit._c = ptr             # <<<<<<<<<<<<<<
 *         tbit._pktc = cscamper_tbit.scamper_tbit_pktc_get(ptr)
 *         return tbit
*/
  __pyx_v_tbit->_c = __pyx_v_ptr;

  /* "scamper.pyx":5500
 *         cdef ScamperTbit tbit = ScamperTbit.__new__(ScamperTbit)
 *         tbit._c = ptr
 *         tbit._pktc = cscamper_tbit.scamper_tbit_pktc_get(ptr)             # <<<<<<<<<<<<<<
 *         return tbit
 * 
*/
  __pyx_v_tbit->_pktc = scamper_tbit_pktc_get(__pyx_v_ptr);

  /* "scamper.pyx":5501
 *         tbit._c = ptr
 *         tbit._pktc = cscamper_tbit.scamper_tbit_pktc_get(ptr)
 *         return tbit             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_tbit);
  __pyx_r = __pyx_v_tbit;
  goto __pyx_L0;

  /* "scamper.pyx":5496
 *         return ScamperTbitPkt.from_ptr(c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTbit from_ptr(cscamper_tbit.scamper_tbit_t *ptr):
 *         cdef ScamperTbit tbit = ScamperTbit.__new__(ScamperTbit)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_tbit);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5503
 *         return tbit
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_4inst___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_4inst___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5512
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":5503
 *         return tbit
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5514
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_4list_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_4list_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_4list___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_4list___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  scamper_list_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":5522
 *         :rtype: ScamperList
 *         """
 *         c = cscamper_tbit.scamper_tbit_list_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperList.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_tbit_list_get(__pyx_v_self->_c);

  /* "scamper.pyx":5523
 *         """
 *         c = cscamper_tbit.scamper_tbit_list_get(self._c)
 *         return ScamperList.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5514
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit.list.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5525
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_5cycle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_5cycle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_5cycle___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_5cycle___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  scamper_cycle_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uint16_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5533
 *         :rtype: ScamperCycle
 *         """
 *         c = cscamper_tbit.scamper_tbit_cycle_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
*/
  __pyx_v_c = scamper_tbit_cycle_get(__pyx_v_self->_c);

  /* "scamper.pyx":5534
 *         """
 *         c = cscamper_tbit.scamper_tbit_cycle_get(self._c)
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5534, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5525
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit.cycle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5536
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_3src___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_3src___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":5544
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_tbit.scamper_tbit_src_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_tbit_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":5545
 *         """
 *         c_a = cscamper_tbit.scamper_tbit_src_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5545, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5536
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5547
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_3dst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_3dst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_3dst___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_3dst___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":5555
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_tbit.scamper_tbit_dst_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_tbit_dst_get(__pyx_v_self->_c);

  /* "scamper.pyx":5556
 *         """
 *         c_a = cscamper_tbit.scamper_tbit_dst_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5556, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5547
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit.dst.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5558
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_6userid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_6userid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_6userid___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_6userid___get__(struct __pyx_obj_7scamper_ScamperTbit *__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("__get__", 0);

  /* "scamper.pyx":5566
 *         :rtype: int
 *         """
 *         return cscamper_tbit.scamper_tbit_userid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_tbit_userid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5566, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5558
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit.userid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5568
 *         return cscamper_tbit.scamper_tbit_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_5start___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_5start___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5576
 *         :rtype: datetime
 *         """
 *         c = cscamper_tbit.scamper_tbit_start_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_tbit_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":5577
 *         """
 *         c = cscamper_tbit.scamper_tbit_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5578
 *         c = cscamper_tbit.scamper_tbit_start_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5577
 *         """
 *         c = cscamper_tbit.scamper_tbit_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":5579
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5579, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":5580
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5580, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":5581
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     def to_json(self):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5581, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 5580, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5580, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5568
 *         return cscamper_tbit.scamper_tbit_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperTbit.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5583
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this TBIT measurement.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_11to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperTbit_10to_json, "\n        get method to obtain a JSON rendering of this TBIT measurement.\n\n        :returns: json representation\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperTbit_11to_json = {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTbit_11to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperTbit_10to_json};
static PyObject *__pyx_pw_7scamper_11ScamperTbit_11to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_json (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("to_json", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("to_json", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_10to_json(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_10to_json(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_json", 0);

  /* "scamper.pyx":5590
 *         :rtype: string
 *         """
 *         c = cscamper_tbit.scamper_tbit_tojson(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_tbit_tojson(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":5591
 *         """
 *         c = cscamper_tbit.scamper_tbit_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5592
 *         c = cscamper_tbit.scamper_tbit_tojson(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5591
 *         """
 *         c = cscamper_tbit.scamper_tbit_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":5593
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5593, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5593, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":5594
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":5595
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":5583
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this TBIT measurement.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTbit.to_json", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5597
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def result(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_6result_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_6result_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_6result___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_6result___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5606
 *         """
 *         cdef char buf[128]
 *         cscamper_tbit.scamper_tbit_result_tostr(self._c, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_tbit_result_tostr(__pyx_v_self->_c, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":5607
 *         cdef char buf[128]
 *         cscamper_tbit.scamper_tbit_result_tostr(self._c, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5607, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5607, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5597
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def result(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperTbit.result.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5609
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def pkt_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_9pkt_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_9pkt_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_9pkt_count___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_9pkt_count___get__(struct __pyx_obj_7scamper_ScamperTbit *__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("__get__", 0);

  /* "scamper.pyx":5617
 *         :rtype: int
 *         """
 *         return cscamper_tbit.scamper_tbit_pktc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_tbit_pktc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5617, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5609
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def pkt_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit.pkt_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5619
 *         return cscamper_tbit.scamper_tbit_pktc_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def client_mss(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_10client_mss_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_10client_mss_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_10client_mss___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_10client_mss___get__(struct __pyx_obj_7scamper_ScamperTbit *__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("__get__", 0);

  /* "scamper.pyx":5627
 *         :rtype: int
 *         """
 *         return cscamper_tbit.scamper_tbit_client_mss_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_tbit_client_mss_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5627, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5619
 *         return cscamper_tbit.scamper_tbit_pktc_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def client_mss(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit.client_mss.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5629
 *         return cscamper_tbit.scamper_tbit_client_mss_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def client_wscale(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_13client_wscale_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_13client_wscale_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_13client_wscale___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_13client_wscale___get__(struct __pyx_obj_7scamper_ScamperTbit *__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("__get__", 0);

  /* "scamper.pyx":5637
 *         :rtype: int
 *         """
 *         return cscamper_tbit.scamper_tbit_client_wscale_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tbit_client_wscale_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5637, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5629
 *         return cscamper_tbit.scamper_tbit_client_mss_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def client_wscale(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit.client_wscale.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5639
 *         return cscamper_tbit.scamper_tbit_client_wscale_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def client_ipttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_12client_ipttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_12client_ipttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_12client_ipttl___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_12client_ipttl___get__(struct __pyx_obj_7scamper_ScamperTbit *__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("__get__", 0);

  /* "scamper.pyx":5647
 *         :rtype: int
 *         """
 *         return cscamper_tbit.scamper_tbit_client_ipttl_get(self._c)             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_tbit_client_ipttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5639
 *         return cscamper_tbit.scamper_tbit_client_wscale_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def client_ipttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit.client_ipttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5473
 *     cdef cscamper_tbit.scamper_tbit_t *_c
 *     cdef uint32_t _i, _pktc
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTbit_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_5_inst___get__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_5_inst___get__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperTbit_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperTbit_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperTbit_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 5473, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTbit._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperTbit_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_11ScamperTbit_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperTbit_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperTbit_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTbit_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperTbit_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_12__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTbit.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTbit_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperTbit_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTbit_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperTbit_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTbit.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperTbit_14__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTbit_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTbit *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTbit.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5657
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_12ScamperSting_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_12ScamperSting_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_12ScamperSting___init__(((struct __pyx_obj_7scamper_ScamperSting *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_12ScamperSting___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":5658
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5658, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 5658, __pyx_L1_error)

  /* "scamper.pyx":5657
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperSting.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5660
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_sting.scamper_sting_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_12ScamperSting_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_12ScamperSting_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_12ScamperSting_2__dealloc__(((struct __pyx_obj_7scamper_ScamperSting *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_12ScamperSting_2__dealloc__(struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":5661
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_sting.scamper_sting_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5662
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_sting.scamper_sting_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_sting_free(__pyx_v_self->_c);

    /* "scamper.pyx":5661
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_sting.scamper_sting_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":5660
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_sting.scamper_sting_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":5664
 *             cscamper_sting.scamper_sting_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperSting from_ptr(cscamper_sting.scamper_sting_t *ptr):
 *         cdef ScamperSting sting = ScamperSting.__new__(ScamperSting)
*/

static struct __pyx_obj_7scamper_ScamperSting *__pyx_f_7scamper_12ScamperSting_from_ptr(scamper_sting_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperSting *__pyx_v_sting = 0;
  struct __pyx_obj_7scamper_ScamperSting *__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("from_ptr", 0);

  /* "scamper.pyx":5666
 *     @staticmethod
 *     cdef ScamperSting from_ptr(cscamper_sting.scamper_sting_t *ptr):
 *         cdef ScamperSting sting = ScamperSting.__new__(ScamperSting)             # <<<<<<<<<<<<<<
 *         sting._c = ptr
 *         return sting
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperSting(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperSting), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5666, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_sting = ((struct __pyx_obj_7scamper_ScamperSting *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":5667
 *     cdef ScamperSting from_ptr(cscamper_sting.scamper_sting_t *ptr):
 *         cdef ScamperSting sting = ScamperSting.__new__(ScamperSting)
 *         sting._c = ptr             # <<<<<<<<<<<<<<
 *         return sting
 * 
*/
  __pyx_v_sting->_c = __pyx_v_ptr;

  /* "scamper.pyx":5668
 *         cdef ScamperSting sting = ScamperSting.__new__(ScamperSting)
 *         sting._c = ptr
 *         return sting             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_sting);
  __pyx_r = __pyx_v_sting;
  goto __pyx_L0;

  /* "scamper.pyx":5664
 *             cscamper_sting.scamper_sting_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperSting from_ptr(cscamper_sting.scamper_sting_t *ptr):
 *         cdef ScamperSting sting = ScamperSting.__new__(ScamperSting)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSting.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sting);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5670
 *         return sting
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSting_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSting_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSting_4inst___get__(((struct __pyx_obj_7scamper_ScamperSting *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSting_4inst___get__(struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5679
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":5670
 *         return sting
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5655
 * cdef class ScamperSting:
 *     cdef cscamper_sting.scamper_sting_t *_c
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSting_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSting_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSting_5_inst___get__(((struct __pyx_obj_7scamper_ScamperSting *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSting_5_inst___get__(struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_12ScamperSting_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_12ScamperSting_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSting_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperSting *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_12ScamperSting_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 5655, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSting._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_12ScamperSting_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_12ScamperSting_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSting_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperSting *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_12ScamperSting_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSting_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_12ScamperSting_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperSting_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_12ScamperSting_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperSting_4__reduce_cython__(((struct __pyx_obj_7scamper_ScamperSting *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSting_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperSting.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSting_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_12ScamperSting_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperSting_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_12ScamperSting_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperSting.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_12ScamperSting_6__setstate_cython__(((struct __pyx_obj_7scamper_ScamperSting *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSting_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSting *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperSting.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5692
 *     cdef cscamper_sniff.scamper_sniff_pkt_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_15ScamperSniffPkt_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_15ScamperSniffPkt_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_15ScamperSniffPkt___init__(((struct __pyx_obj_7scamper_ScamperSniffPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_15ScamperSniffPkt___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":5693
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 5693, __pyx_L1_error)

  /* "scamper.pyx":5692
 *     cdef cscamper_sniff.scamper_sniff_pkt_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperSniffPkt.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5695
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_sniff.scamper_sniff_pkt_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_15ScamperSniffPkt_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_15ScamperSniffPkt_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_15ScamperSniffPkt_2__dealloc__(((struct __pyx_obj_7scamper_ScamperSniffPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_15ScamperSniffPkt_2__dealloc__(struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":5696
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_sniff.scamper_sniff_pkt_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5697
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_sniff.scamper_sniff_pkt_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_sniff_pkt_free(__pyx_v_self->_c);

    /* "scamper.pyx":5696
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_sniff.scamper_sniff_pkt_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":5695
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_sniff.scamper_sniff_pkt_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":5699
 *             cscamper_sniff.scamper_sniff_pkt_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperSniffPkt from_ptr(cscamper_sniff.scamper_sniff_pkt_t *ptr):
 *         cdef ScamperSniffPkt pkt = ScamperSniffPkt.__new__(ScamperSniffPkt)
*/

static struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_f_7scamper_15ScamperSniffPkt_from_ptr(scamper_sniff_pkt_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_pkt = 0;
  struct __pyx_obj_7scamper_ScamperSniffPkt *__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("from_ptr", 0);

  /* "scamper.pyx":5701
 *     @staticmethod
 *     cdef ScamperSniffPkt from_ptr(cscamper_sniff.scamper_sniff_pkt_t *ptr):
 *         cdef ScamperSniffPkt pkt = ScamperSniffPkt.__new__(ScamperSniffPkt)             # <<<<<<<<<<<<<<
 *         pkt._c = cscamper_sniff.scamper_sniff_pkt_use(ptr)
 *         return pkt
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperSniffPkt(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperSniffPkt), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5701, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_pkt = ((struct __pyx_obj_7scamper_ScamperSniffPkt *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":5702
 *     cdef ScamperSniffPkt from_ptr(cscamper_sniff.scamper_sniff_pkt_t *ptr):
 *         cdef ScamperSniffPkt pkt = ScamperSniffPkt.__new__(ScamperSniffPkt)
 *         pkt._c = cscamper_sniff.scamper_sniff_pkt_use(ptr)             # <<<<<<<<<<<<<<
 *         return pkt
 * 
*/
  __pyx_v_pkt->_c = scamper_sniff_pkt_use(__pyx_v_ptr);

  /* "scamper.pyx":5703
 *         cdef ScamperSniffPkt pkt = ScamperSniffPkt.__new__(ScamperSniffPkt)
 *         pkt._c = cscamper_sniff.scamper_sniff_pkt_use(ptr)
 *         return pkt             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_pkt);
  __pyx_r = __pyx_v_pkt;
  goto __pyx_L0;

  /* "scamper.pyx":5699
 *             cscamper_sniff.scamper_sniff_pkt_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperSniffPkt from_ptr(cscamper_sniff.scamper_sniff_pkt_t *ptr):
 *         cdef ScamperSniffPkt pkt = ScamperSniffPkt.__new__(ScamperSniffPkt)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSniffPkt.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pkt);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5705
 *         return pkt
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperSniffPkt_2rx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperSniffPkt_2rx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperSniffPkt_2rx___get__(((struct __pyx_obj_7scamper_ScamperSniffPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperSniffPkt_2rx___get__(struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5713
 *         :rtype: datetime
 *         """
 *         c = cscamper_sniff.scamper_sniff_pkt_tv_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_sniff_pkt_tv_get(__pyx_v_self->_c);

  /* "scamper.pyx":5714
 *         """
 *         c = cscamper_sniff.scamper_sniff_pkt_tv_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5715
 *         c = cscamper_sniff.scamper_sniff_pkt_tv_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5714
 *         """
 *         c = cscamper_sniff.scamper_sniff_pkt_tv_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":5716
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5716, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":5717
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5717, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":5718
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5717, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 5717, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5717, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5705
 *         return pkt
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperSniffPkt.rx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5720
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def data(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperSniffPkt_4data_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperSniffPkt_4data_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperSniffPkt_4data___get__(((struct __pyx_obj_7scamper_ScamperSniffPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperSniffPkt_4data___get__(struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self) {
  uint8_t const *__pyx_v_data;
  uint16_t __pyx_v_length;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":5729
 *         """
 *         cdef const uint8_t *data
 *         data = cscamper_sniff.scamper_sniff_pkt_data_get(self._c)             # <<<<<<<<<<<<<<
 *         length = cscamper_sniff.scamper_sniff_pkt_len_get(self._c)
 *         if data == NULL or length == 0:
*/
  __pyx_v_data = scamper_sniff_pkt_data_get(__pyx_v_self->_c);

  /* "scamper.pyx":5730
 *         cdef const uint8_t *data
 *         data = cscamper_sniff.scamper_sniff_pkt_data_get(self._c)
 *         length = cscamper_sniff.scamper_sniff_pkt_len_get(self._c)             # <<<<<<<<<<<<<<
 *         if data == NULL or length == 0:
 *             return None
*/
  __pyx_v_length = scamper_sniff_pkt_len_get(__pyx_v_self->_c);

  /* "scamper.pyx":5731
 *         data = cscamper_sniff.scamper_sniff_pkt_data_get(self._c)
 *         length = cscamper_sniff.scamper_sniff_pkt_len_get(self._c)
 *         if data == NULL or length == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return data[:length]
*/
  __pyx_t_2 = (__pyx_v_data == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_length == 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":5732
 *         length = cscamper_sniff.scamper_sniff_pkt_len_get(self._c)
 *         if data == NULL or length == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return data[:length]
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5731
 *         data = cscamper_sniff.scamper_sniff_pkt_data_get(self._c)
 *         length = cscamper_sniff.scamper_sniff_pkt_len_get(self._c)
 *         if data == NULL or length == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return data[:length]
*/
  }

  /* "scamper.pyx":5733
 *         if data == NULL or length == 0:
 *             return None
 *         return data[:length]             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperSniff:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_data) + 0, __pyx_v_length - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5733, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5720
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def data(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperSniffPkt.data.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperSniffPkt_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperSniffPkt_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperSniffPkt_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperSniffPkt_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperSniffPkt_4__reduce_cython__(((struct __pyx_obj_7scamper_ScamperSniffPkt *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperSniffPkt_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperSniffPkt.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperSniffPkt_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperSniffPkt_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperSniffPkt_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperSniffPkt_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperSniffPkt.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_15ScamperSniffPkt_6__setstate_cython__(((struct __pyx_obj_7scamper_ScamperSniffPkt *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperSniffPkt_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniffPkt *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperSniffPkt.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5745
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_12ScamperSniff_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_12ScamperSniff_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff___init__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_12ScamperSniff___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":5746
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5746, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 5746, __pyx_L1_error)

  /* "scamper.pyx":5745
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperSniff.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5748
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_sniff.scamper_sniff_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_12ScamperSniff_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_12ScamperSniff_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_12ScamperSniff_2__dealloc__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_12ScamperSniff_2__dealloc__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":5749
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_sniff.scamper_sniff_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5750
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_sniff.scamper_sniff_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
*/
    scamper_sniff_free(__pyx_v_self->_c);

    /* "scamper.pyx":5749
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_sniff.scamper_sniff_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":5748
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_sniff.scamper_sniff_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":5752
 *             cscamper_sniff.scamper_sniff_free(self._c)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self._pktc
 * 
*/

/* Python wrapper */
static Py_ssize_t __pyx_pw_7scamper_12ScamperSniff_5__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_7scamper_12ScamperSniff_5__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_4__len__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_7scamper_12ScamperSniff_4__len__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  Py_ssize_t __pyx_r;

  /* "scamper.pyx":5753
 * 
 *     def __len__(self):
 *         return self._pktc             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __pyx_r = __pyx_v_self->_pktc;
  goto __pyx_L0;

  /* "scamper.pyx":5752
 *             cscamper_sniff.scamper_sniff_free(self._c)
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return self._pktc
 * 
*/

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "scamper.pyx":5755
 *         return self._pktc
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_7__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_7__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_6__iter__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_6__iter__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":5756
 * 
 *     def __iter__(self):
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_v_self->_i = 0;

  /* "scamper.pyx":5757
 *     def __iter__(self):
 *         self._i = 0
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":5755
 *         return self._pktc
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5759
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i >= self._pktc:
 *             raise StopIteration
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_9__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_9__next__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_8__next__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_8__next__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  scamper_sniff_pkt_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_error_without_exception = 0; /* StopIteration */
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":5760
 * 
 *     def __next__(self):
 *         if self._i >= self._pktc:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         c = cscamper_sniff.scamper_sniff_pkt_get(self._c, self._i)
*/
  __pyx_t_1 = (__pyx_v_self->_i >= __pyx_v_self->_pktc);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":5761
 *     def __next__(self):
 *         if self._i >= self._pktc:
 *             raise StopIteration             # <<<<<<<<<<<<<<
 *         c = cscamper_sniff.scamper_sniff_pkt_get(self._c, self._i)
 *         self._i = self._i + 1
*/
    __pyx_error_without_exception = 1;
    goto __pyx_L1_error;;

    /* "scamper.pyx":5760
 * 
 *     def __next__(self):
 *         if self._i >= self._pktc:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         c = cscamper_sniff.scamper_sniff_pkt_get(self._c, self._i)
*/
  }

  /* "scamper.pyx":5762
 *         if self._i >= self._pktc:
 *             raise StopIteration
 *         c = cscamper_sniff.scamper_sniff_pkt_get(self._c, self._i)             # <<<<<<<<<<<<<<
 *         self._i = self._i + 1
 *         return ScamperSniffPkt.from_ptr(c)
*/
  __pyx_v_c = scamper_sniff_pkt_get(__pyx_v_self->_c, __pyx_v_self->_i);

  /* "scamper.pyx":5763
 *             raise StopIteration
 *         c = cscamper_sniff.scamper_sniff_pkt_get(self._c, self._i)
 *         self._i = self._i + 1             # <<<<<<<<<<<<<<
 *         return ScamperSniffPkt.from_ptr(c)
 * 
*/
  __pyx_v_self->_i = (__pyx_v_self->_i + 1);

  /* "scamper.pyx":5764
 *         c = cscamper_sniff.scamper_sniff_pkt_get(self._c, self._i)
 *         self._i = self._i + 1
 *         return ScamperSniffPkt.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_15ScamperSniffPkt_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5764, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5759
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i >= self._pktc:
 *             raise StopIteration
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  if (!__pyx_error_without_exception) {
    __Pyx_AddTraceback("scamper.ScamperSniff.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5766
 *         return ScamperSniffPkt.from_ptr(c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperSniff from_ptr(cscamper_sniff.scamper_sniff_t *ptr):
 *         cdef ScamperSniff sniff = ScamperSniff.__new__(ScamperSniff)
*/

static struct __pyx_obj_7scamper_ScamperSniff *__pyx_f_7scamper_12ScamperSniff_from_ptr(scamper_sniff_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_sniff = 0;
  struct __pyx_obj_7scamper_ScamperSniff *__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("from_ptr", 0);

  /* "scamper.pyx":5768
 *     @staticmethod
 *     cdef ScamperSniff from_ptr(cscamper_sniff.scamper_sniff_t *ptr):
 *         cdef ScamperSniff sniff = ScamperSniff.__new__(ScamperSniff)             # <<<<<<<<<<<<<<
 *         sniff._c = ptr
 *         sniff._pktc = cscamper_sniff.scamper_sniff_pktc_get(ptr)
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperSniff(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperSniff), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5768, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_sniff = ((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":5769
 *     cdef ScamperSniff from_ptr(cscamper_sniff.scamper_sniff_t *ptr):
 *         cdef ScamperSniff sniff = ScamperSniff.__new__(ScamperSniff)
 *         sniff._c = ptr             # <<<<<<<<<<<<<<
 *         sniff._pktc = cscamper_sniff.scamper_sniff_pktc_get(ptr)
 *         return sniff
*/
  __pyx_v_sniff->_c = __pyx_v_ptr;

  /* "scamper.pyx":5770
 *         cdef ScamperSniff sniff = ScamperSniff.__new__(ScamperSniff)
 *         sniff._c = ptr
 *         sniff._pktc = cscamper_sniff.scamper_sniff_pktc_get(ptr)             # <<<<<<<<<<<<<<
 *         return sniff
 * 
*/
  __pyx_v_sniff->_pktc = scamper_sniff_pktc_get(__pyx_v_ptr);

  /* "scamper.pyx":5771
 *         sniff._c = ptr
 *         sniff._pktc = cscamper_sniff.scamper_sniff_pktc_get(ptr)
 *         return sniff             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_sniff);
  __pyx_r = __pyx_v_sniff;
  goto __pyx_L0;

  /* "scamper.pyx":5766
 *         return ScamperSniffPkt.from_ptr(c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperSniff from_ptr(cscamper_sniff.scamper_sniff_t *ptr):
 *         cdef ScamperSniff sniff = ScamperSniff.__new__(ScamperSniff)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSniff.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_sniff);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5773
 *         return sniff
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_4inst___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_4inst___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5782
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":5773
 *         return sniff
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5784
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_4list_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_4list_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_4list___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_4list___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  scamper_list_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":5792
 *         :rtype: ScamperList
 *         """
 *         c = cscamper_sniff.scamper_sniff_list_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperList.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_sniff_list_get(__pyx_v_self->_c);

  /* "scamper.pyx":5793
 *         """
 *         c = cscamper_sniff.scamper_sniff_list_get(self._c)
 *         return ScamperList.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5793, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5784
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSniff.list.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5795
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_5cycle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_5cycle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_5cycle___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_5cycle___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  scamper_cycle_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uint16_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5803
 *         :rtype: ScamperCycle
 *         """
 *         c = cscamper_sniff.scamper_sniff_cycle_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
*/
  __pyx_v_c = scamper_sniff_cycle_get(__pyx_v_self->_c);

  /* "scamper.pyx":5804
 *         """
 *         c = cscamper_sniff.scamper_sniff_cycle_get(self._c)
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5804, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5804, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5795
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSniff.cycle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5806
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop_reason(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_11stop_reason_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_11stop_reason_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_11stop_reason___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_11stop_reason___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  uint8_t __pyx_v_c;
  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;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5814
 *         :rtype: ScamperSniffStop
 *         """
 *         c = cscamper_sniff.scamper_sniff_stop_reason_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperSniffStop(c)
 * 
*/
  __pyx_v_c = scamper_sniff_stop_reason_get(__pyx_v_self->_c);

  /* "scamper.pyx":5815
 *         """
 *         c = cscamper_sniff.scamper_sniff_stop_reason_get(self._c)
 *         return ScamperSniffStop(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperSniffStop); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyLong_From_uint8_t(__pyx_v_c); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5806
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def stop_reason(self):
 *         """
*/

  /* 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_AddTraceback("scamper.ScamperSniff.stop_reason.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5817
 *         return ScamperSniffStop(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_6userid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_6userid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_6userid___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_6userid___get__(struct __pyx_obj_7scamper_ScamperSniff *__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("__get__", 0);

  /* "scamper.pyx":5825
 *         :rtype: int
 *         """
 *         return cscamper_sniff.scamper_sniff_userid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_sniff_userid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5817
 *         return ScamperSniffStop(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSniff.userid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5827
 *         return cscamper_sniff.scamper_sniff_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_3src___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_3src___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":5836
 *         :rtype: ScamperAddr
 *         """
 *         c = cscamper_sniff.scamper_sniff_src_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_sniff_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":5837
 *         """
 *         c = cscamper_sniff.scamper_sniff_src_get(self._c)
 *         return ScamperAddr.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5837, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5827
 *         return cscamper_sniff.scamper_sniff_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSniff.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5839
 *         return ScamperAddr.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_5start___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_5start___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5847
 *         :rtype: datetime
 *         """
 *         c = cscamper_sniff.scamper_sniff_start_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_sniff_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":5848
 *         """
 *         c = cscamper_sniff.scamper_sniff_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5849
 *         c = cscamper_sniff.scamper_sniff_start_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5848
 *         """
 *         c = cscamper_sniff.scamper_sniff_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":5850
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5850, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":5851
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":5852
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5851, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 5851, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5851, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5839
 *         return ScamperAddr.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperSniff.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5854
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def finish(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_6finish_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_6finish_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_6finish___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_6finish___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5862
 *         :rtype: datetime
 *         """
 *         c = cscamper_sniff.scamper_sniff_finish_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_sniff_finish_get(__pyx_v_self->_c);

  /* "scamper.pyx":5863
 *         """
 *         c = cscamper_sniff.scamper_sniff_finish_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5864
 *         c = cscamper_sniff.scamper_sniff_finish_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5863
 *         """
 *         c = cscamper_sniff.scamper_sniff_finish_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":5865
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5865, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5865, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":5866
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 5866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 5866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 5866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 5866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 5866, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":5867
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5867, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5867, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 5867, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 5866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 5866, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5866, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5854
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def finish(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperSniff.finish.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5869
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def limit_pkt_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_15limit_pkt_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_15limit_pkt_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_15limit_pkt_count___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_15limit_pkt_count___get__(struct __pyx_obj_7scamper_ScamperSniff *__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("__get__", 0);

  /* "scamper.pyx":5878
 *         :rtype: int
 *         """
 *         return cscamper_sniff.scamper_sniff_limit_pktc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_sniff_limit_pktc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5869
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def limit_pkt_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSniff.limit_pkt_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5880
 *         return cscamper_sniff.scamper_sniff_limit_pktc_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def limit_time(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_10limit_time_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_10limit_time_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_10limit_time___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_10limit_time___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5889
 *         :rtype: timedelta
 *         """
 *         c = cscamper_sniff.scamper_sniff_limit_time_get(self._c)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=c.tv_sec,
 *                                   microseconds=c.tv_usec)
*/
  __pyx_v_c = scamper_sniff_limit_time_get(__pyx_v_self->_c);

  /* "scamper.pyx":5890
 *         """
 *         c = cscamper_sniff.scamper_sniff_limit_time_get(self._c)
 *         return datetime.timedelta(seconds=c.tv_sec,             # <<<<<<<<<<<<<<
 *                                   microseconds=c.tv_usec)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 5890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5890, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "scamper.pyx":5891
 *         c = cscamper_sniff.scamper_sniff_limit_time_get(self._c)
 *         return datetime.timedelta(seconds=c.tv_sec,
 *                                   microseconds=c.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_5 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 5891, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 5890, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 5890, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 5890, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5890, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5880
 *         return cscamper_sniff.scamper_sniff_limit_pktc_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def limit_time(self):
 *         """
*/

  /* 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_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperSniff.limit_time.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5893
 *                                   microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_id(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_7icmp_id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_7icmp_id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_7icmp_id___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_7icmp_id___get__(struct __pyx_obj_7scamper_ScamperSniff *__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("__get__", 0);

  /* "scamper.pyx":5901
 *         :rtype: int
 *         """
 *         return cscamper_sniff.scamper_sniff_icmpid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_sniff_icmpid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5893
 *                                   microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def icmp_id(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSniff.icmp_id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5903
 *         return cscamper_sniff.scamper_sniff_icmpid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def pkt_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_9pkt_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_9pkt_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_9pkt_count___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_9pkt_count___get__(struct __pyx_obj_7scamper_ScamperSniff *__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("__get__", 0);

  /* "scamper.pyx":5911
 *         :rtype: int
 *         """
 *         return cscamper_sniff.scamper_sniff_pktc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def pkt(self, i=0):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_sniff_pktc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5911, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5903
 *         return cscamper_sniff.scamper_sniff_icmpid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def pkt_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSniff.pkt_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5913
 *         return cscamper_sniff.scamper_sniff_pktc_get(self._c)
 * 
 *     def pkt(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         pkt(i=0)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_11pkt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_12ScamperSniff_10pkt, "\n        pkt(i=0)\n        get method to obtain a specific packet\n\n        :returns: the requested packet\n        :rtype: ScamperSniffPkt\n        ");
static PyMethodDef __pyx_mdef_7scamper_12ScamperSniff_11pkt = {"pkt", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperSniff_11pkt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperSniff_10pkt};
static PyObject *__pyx_pw_7scamper_12ScamperSniff_11pkt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("pkt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 5913, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 5913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "pkt", 0) < 0) __PYX_ERR(0, 5913, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 5913, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_int_0));
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("pkt", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 5913, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperSniff.pkt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_10pkt(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_10pkt(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_sniff_pkt_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("pkt", 0);

  /* "scamper.pyx":5921
 *         :rtype: ScamperSniffPkt
 *         """
 *         c = cscamper_sniff.scamper_sniff_pkt_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperSniffPkt.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 5921, __pyx_L1_error)
  __pyx_v_c = scamper_sniff_pkt_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":5922
 *         """
 *         c = cscamper_sniff.scamper_sniff_pkt_get(self._c, i)
 *         return ScamperSniffPkt.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_15ScamperSniffPkt_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5922, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5913
 *         return cscamper_sniff.scamper_sniff_pktc_get(self._c)
 * 
 *     def pkt(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         pkt(i=0)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperSniff.pkt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5743
 *     cdef cscamper_sniff.scamper_sniff_t *_c
 *     cdef uint32_t _i, _pktc
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_12ScamperSniff_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_5_inst___get__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_5_inst___get__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_12ScamperSniff_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_12ScamperSniff_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_12ScamperSniff_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 5743, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperSniff._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_12ScamperSniff_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_12ScamperSniff_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_12ScamperSniff_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_12ScamperSniff_13__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperSniff_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_12ScamperSniff_13__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_12__reduce_cython__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_12__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperSniff.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_12ScamperSniff_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_12ScamperSniff_15__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperSniff_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_12ScamperSniff_15__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperSniff.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_12ScamperSniff_14__setstate_cython__(((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_12ScamperSniff_14__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperSniff *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperSniff.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5934
 *     cdef cscamper_host.scamper_host_rr_mx_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_13ScamperHostMX_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_13ScamperHostMX_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_13ScamperHostMX___init__(((struct __pyx_obj_7scamper_ScamperHostMX *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_13ScamperHostMX___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":5935
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5935, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 5935, __pyx_L1_error)

  /* "scamper.pyx":5934
 *     cdef cscamper_host.scamper_host_rr_mx_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostMX.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5937
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_mx_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_13ScamperHostMX_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_13ScamperHostMX_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_13ScamperHostMX_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHostMX *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_13ScamperHostMX_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":5938
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_mx_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5939
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_mx_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_host_rr_mx_free(__pyx_v_self->_c);

    /* "scamper.pyx":5938
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_mx_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":5937
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_mx_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":5941
 *             cscamper_host.scamper_host_rr_mx_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostMX from_ptr(cscamper_host.scamper_host_rr_mx_t *ptr):
 *         cdef ScamperHostMX mx
*/

static struct __pyx_obj_7scamper_ScamperHostMX *__pyx_f_7scamper_13ScamperHostMX_from_ptr(scamper_host_rr_mx_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_mx = 0;
  struct __pyx_obj_7scamper_ScamperHostMX *__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("from_ptr", 0);

  /* "scamper.pyx":5944
 *     cdef ScamperHostMX from_ptr(cscamper_host.scamper_host_rr_mx_t *ptr):
 *         cdef ScamperHostMX mx
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         mx = ScamperHostMX.__new__(ScamperHostMX)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5945
 *         cdef ScamperHostMX mx
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         mx = ScamperHostMX.__new__(ScamperHostMX)
 *         mx._c = cscamper_host.scamper_host_rr_mx_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperHostMX *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5944
 *     cdef ScamperHostMX from_ptr(cscamper_host.scamper_host_rr_mx_t *ptr):
 *         cdef ScamperHostMX mx
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         mx = ScamperHostMX.__new__(ScamperHostMX)
*/
  }

  /* "scamper.pyx":5946
 *         if ptr == NULL:
 *             return None
 *         mx = ScamperHostMX.__new__(ScamperHostMX)             # <<<<<<<<<<<<<<
 *         mx._c = cscamper_host.scamper_host_rr_mx_use(ptr)
 *         return mx
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHostMX(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostMX), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5946, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_mx = ((struct __pyx_obj_7scamper_ScamperHostMX *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":5947
 *             return None
 *         mx = ScamperHostMX.__new__(ScamperHostMX)
 *         mx._c = cscamper_host.scamper_host_rr_mx_use(ptr)             # <<<<<<<<<<<<<<
 *         return mx
 * 
*/
  __pyx_v_mx->_c = scamper_host_rr_mx_use(__pyx_v_ptr);

  /* "scamper.pyx":5948
 *         mx = ScamperHostMX.__new__(ScamperHostMX)
 *         mx._c = cscamper_host.scamper_host_rr_mx_use(ptr)
 *         return mx             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_mx);
  __pyx_r = __pyx_v_mx;
  goto __pyx_L0;

  /* "scamper.pyx":5941
 *             cscamper_host.scamper_host_rr_mx_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostMX from_ptr(cscamper_host.scamper_host_rr_mx_t *ptr):
 *         cdef ScamperHostMX mx
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostMX.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_mx);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5950
 *         return mx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def pref(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostMX_4pref_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostMX_4pref_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostMX_4pref___get__(((struct __pyx_obj_7scamper_ScamperHostMX *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostMX_4pref___get__(struct __pyx_obj_7scamper_ScamperHostMX *__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("__get__", 0);

  /* "scamper.pyx":5959
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_mx_preference_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_mx_preference_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5959, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5950
 *         return mx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def pref(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostMX.pref.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5961
 *         return cscamper_host.scamper_host_rr_mx_preference_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def exch(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostMX_4exch_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostMX_4exch_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostMX_4exch___get__(((struct __pyx_obj_7scamper_ScamperHostMX *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostMX_4exch___get__(struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self) {
  char const *__pyx_v_mx_exch;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":5970
 *         :rtype: string
 *         """
 *         mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(self._c)             # <<<<<<<<<<<<<<
 *         if mx_exch == NULL:
 *             return None
*/
  __pyx_v_mx_exch = scamper_host_rr_mx_exchange_get(__pyx_v_self->_c);

  /* "scamper.pyx":5971
 *         """
 *         mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(self._c)
 *         if mx_exch == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return mx_exch.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_mx_exch == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5972
 *         mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(self._c)
 *         if mx_exch == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return mx_exch.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5971
 *         """
 *         mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(self._c)
 *         if mx_exch == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return mx_exch.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":5973
 *         if mx_exch == NULL:
 *             return None
 *         return mx_exch.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperHostSOA:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_mx_exch); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 5973, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_mx_exch, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 5973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5961
 *         return cscamper_host.scamper_host_rr_mx_preference_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def exch(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostMX.exch.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostMX_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_13ScamperHostMX_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_13ScamperHostMX_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_13ScamperHostMX_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_13ScamperHostMX_4__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHostMX *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostMX_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostMX.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostMX_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_13ScamperHostMX_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_13ScamperHostMX_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_13ScamperHostMX_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostMX.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_13ScamperHostMX_6__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHostMX *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostMX_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostMX *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostMX.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5982
 *     cdef cscamper_host.scamper_host_rr_soa_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperHostSOA_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_14ScamperHostSOA_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHostSOA___init__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperHostSOA___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":5983
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 5983, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 5983, __pyx_L1_error)

  /* "scamper.pyx":5982
 *     cdef cscamper_host.scamper_host_rr_soa_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostSOA.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5985
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_soa_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_14ScamperHostSOA_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_14ScamperHostSOA_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_14ScamperHostSOA_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_14ScamperHostSOA_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":5986
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_soa_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5987
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_soa_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_host_rr_soa_free(__pyx_v_self->_c);

    /* "scamper.pyx":5986
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_soa_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":5985
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_soa_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":5989
 *             cscamper_host.scamper_host_rr_soa_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostSOA from_ptr(cscamper_host.scamper_host_rr_soa_t *ptr):
 *         cdef ScamperHostSOA soa
*/

static struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_f_7scamper_14ScamperHostSOA_from_ptr(scamper_host_rr_soa_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_soa = 0;
  struct __pyx_obj_7scamper_ScamperHostSOA *__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("from_ptr", 0);

  /* "scamper.pyx":5992
 *     cdef ScamperHostSOA from_ptr(cscamper_host.scamper_host_rr_soa_t *ptr):
 *         cdef ScamperHostSOA soa
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         soa = ScamperHostSOA.__new__(ScamperHostSOA)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":5993
 *         cdef ScamperHostSOA soa
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         soa = ScamperHostSOA.__new__(ScamperHostSOA)
 *         soa._c = cscamper_host.scamper_host_rr_soa_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperHostSOA *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":5992
 *     cdef ScamperHostSOA from_ptr(cscamper_host.scamper_host_rr_soa_t *ptr):
 *         cdef ScamperHostSOA soa
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         soa = ScamperHostSOA.__new__(ScamperHostSOA)
*/
  }

  /* "scamper.pyx":5994
 *         if ptr == NULL:
 *             return None
 *         soa = ScamperHostSOA.__new__(ScamperHostSOA)             # <<<<<<<<<<<<<<
 *         soa._c = cscamper_host.scamper_host_rr_soa_use(ptr)
 *         return soa
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHostSOA(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostSOA), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5994, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_soa = ((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":5995
 *             return None
 *         soa = ScamperHostSOA.__new__(ScamperHostSOA)
 *         soa._c = cscamper_host.scamper_host_rr_soa_use(ptr)             # <<<<<<<<<<<<<<
 *         return soa
 * 
*/
  __pyx_v_soa->_c = scamper_host_rr_soa_use(__pyx_v_ptr);

  /* "scamper.pyx":5996
 *         soa = ScamperHostSOA.__new__(ScamperHostSOA)
 *         soa._c = cscamper_host.scamper_host_rr_soa_use(ptr)
 *         return soa             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_soa);
  __pyx_r = __pyx_v_soa;
  goto __pyx_L0;

  /* "scamper.pyx":5989
 *             cscamper_host.scamper_host_rr_soa_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostSOA from_ptr(cscamper_host.scamper_host_rr_soa_t *ptr):
 *         cdef ScamperHostSOA soa
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostSOA.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_soa);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":5998
 *         return soa
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mname(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_5mname_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_5mname_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostSOA_5mname___get__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_5mname___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self) {
  char const *__pyx_v_mname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6007
 *         :rtype: string
 *         """
 *         mname = cscamper_host.scamper_host_rr_soa_mname_get(self._c)             # <<<<<<<<<<<<<<
 *         if mname == NULL:
 *             return None
*/
  __pyx_v_mname = scamper_host_rr_soa_mname_get(__pyx_v_self->_c);

  /* "scamper.pyx":6008
 *         """
 *         mname = cscamper_host.scamper_host_rr_soa_mname_get(self._c)
 *         if mname == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return mname.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_mname == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6009
 *         mname = cscamper_host.scamper_host_rr_soa_mname_get(self._c)
 *         if mname == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return mname.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6008
 *         """
 *         mname = cscamper_host.scamper_host_rr_soa_mname_get(self._c)
 *         if mname == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return mname.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":6010
 *         if mname == NULL:
 *             return None
 *         return mname.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_mname); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6010, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_mname, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":5998
 *         return soa
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mname(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostSOA.mname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6012
 *         return mname.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rname(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_5rname_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_5rname_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostSOA_5rname___get__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_5rname___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self) {
  char const *__pyx_v_rname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6022
 *         :rtype: string
 *         """
 *         rname = cscamper_host.scamper_host_rr_soa_rname_get(self._c)             # <<<<<<<<<<<<<<
 *         if rname == NULL:
 *             return None
*/
  __pyx_v_rname = scamper_host_rr_soa_rname_get(__pyx_v_self->_c);

  /* "scamper.pyx":6023
 *         """
 *         rname = cscamper_host.scamper_host_rr_soa_rname_get(self._c)
 *         if rname == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return rname.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_rname == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6024
 *         rname = cscamper_host.scamper_host_rr_soa_rname_get(self._c)
 *         if rname == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return rname.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6023
 *         """
 *         rname = cscamper_host.scamper_host_rr_soa_rname_get(self._c)
 *         if rname == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return rname.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":6025
 *         if rname == NULL:
 *             return None
 *         return rname.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_rname); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6025, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_rname, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6012
 *         return mname.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rname(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostSOA.rname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6027
 *         return rname.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def serial(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_6serial_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_6serial_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostSOA_6serial___get__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_6serial___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__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("__get__", 0);

  /* "scamper.pyx":6036
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_soa_serial_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_soa_serial_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6027
 *         return rname.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def serial(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostSOA.serial.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6038
 *         return cscamper_host.scamper_host_rr_soa_serial_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def refresh(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_7refresh_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_7refresh_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostSOA_7refresh___get__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_7refresh___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__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("__get__", 0);

  /* "scamper.pyx":6048
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_soa_refresh_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_soa_refresh_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6038
 *         return cscamper_host.scamper_host_rr_soa_serial_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def refresh(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostSOA.refresh.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6050
 *         return cscamper_host.scamper_host_rr_soa_refresh_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def retry(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_5retry_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_5retry_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostSOA_5retry___get__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_5retry___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__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("__get__", 0);

  /* "scamper.pyx":6060
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_soa_retry_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_soa_retry_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6050
 *         return cscamper_host.scamper_host_rr_soa_refresh_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def retry(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostSOA.retry.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6062
 *         return cscamper_host.scamper_host_rr_soa_retry_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def expire(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_6expire_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_6expire_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostSOA_6expire___get__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_6expire___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__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("__get__", 0);

  /* "scamper.pyx":6072
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_soa_expire_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_soa_expire_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6062
 *         return cscamper_host.scamper_host_rr_soa_retry_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def expire(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostSOA.expire.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6074
 *         return cscamper_host.scamper_host_rr_soa_expire_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def minimum(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_7minimum_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_7minimum_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostSOA_7minimum___get__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_7minimum___get__(struct __pyx_obj_7scamper_ScamperHostSOA *__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("__get__", 0);

  /* "scamper.pyx":6084
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_soa_minimum_get(self._c)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperHostTXT:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_soa_minimum_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6074
 *         return cscamper_host.scamper_host_rr_soa_expire_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def minimum(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostSOA.minimum.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperHostSOA_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostSOA_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHostSOA_4__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostSOA.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperHostSOA_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostSOA_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperHostSOA_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostSOA.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperHostSOA_6__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHostSOA *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostSOA_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSOA *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostSOA.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6094
 *     cdef uint16_t _i
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperHostTXT_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_14ScamperHostTXT_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHostTXT___init__(((struct __pyx_obj_7scamper_ScamperHostTXT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperHostTXT___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":6095
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6095, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 6095, __pyx_L1_error)

  /* "scamper.pyx":6094
 *     cdef uint16_t _i
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostTXT.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6097
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_txt_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_14ScamperHostTXT_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_14ScamperHostTXT_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_14ScamperHostTXT_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHostTXT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_14ScamperHostTXT_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":6098
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_txt_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6099
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_txt_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_host_rr_txt_free(__pyx_v_self->_c);

    /* "scamper.pyx":6098
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_txt_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":6097
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_txt_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":6101
 *             cscamper_host.scamper_host_rr_txt_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostTXT from_ptr(cscamper_host.scamper_host_rr_txt_t *ptr):
 *         cdef ScamperHostTXT txt
*/

static struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_f_7scamper_14ScamperHostTXT_from_ptr(scamper_host_rr_txt_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_txt = 0;
  struct __pyx_obj_7scamper_ScamperHostTXT *__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("from_ptr", 0);

  /* "scamper.pyx":6104
 *     cdef ScamperHostTXT from_ptr(cscamper_host.scamper_host_rr_txt_t *ptr):
 *         cdef ScamperHostTXT txt
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         txt = ScamperHostTXT.__new__(ScamperHostTXT)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6105
 *         cdef ScamperHostTXT txt
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         txt = ScamperHostTXT.__new__(ScamperHostTXT)
 *         txt._c = cscamper_host.scamper_host_rr_txt_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperHostTXT *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6104
 *     cdef ScamperHostTXT from_ptr(cscamper_host.scamper_host_rr_txt_t *ptr):
 *         cdef ScamperHostTXT txt
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         txt = ScamperHostTXT.__new__(ScamperHostTXT)
*/
  }

  /* "scamper.pyx":6106
 *         if ptr == NULL:
 *             return None
 *         txt = ScamperHostTXT.__new__(ScamperHostTXT)             # <<<<<<<<<<<<<<
 *         txt._c = cscamper_host.scamper_host_rr_txt_use(ptr)
 *         return txt
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHostTXT(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostTXT), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6106, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_txt = ((struct __pyx_obj_7scamper_ScamperHostTXT *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":6107
 *             return None
 *         txt = ScamperHostTXT.__new__(ScamperHostTXT)
 *         txt._c = cscamper_host.scamper_host_rr_txt_use(ptr)             # <<<<<<<<<<<<<<
 *         return txt
 * 
*/
  __pyx_v_txt->_c = scamper_host_rr_txt_use(__pyx_v_ptr);

  /* "scamper.pyx":6108
 *         txt = ScamperHostTXT.__new__(ScamperHostTXT)
 *         txt._c = cscamper_host.scamper_host_rr_txt_use(ptr)
 *         return txt             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_txt);
  __pyx_r = __pyx_v_txt;
  goto __pyx_L0;

  /* "scamper.pyx":6101
 *             cscamper_host.scamper_host_rr_txt_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostTXT from_ptr(cscamper_host.scamper_host_rr_txt_t *ptr):
 *         cdef ScamperHostTXT txt
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostTXT.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_txt);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6110
 *         return txt
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_5__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_5__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostTXT_4__iter__(((struct __pyx_obj_7scamper_ScamperHostTXT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_4__iter__(struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":6111
 * 
 *     def __iter__(self):
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_v_self->_i = 0;

  /* "scamper.pyx":6112
 *     def __iter__(self):
 *         self._i = 0
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":6110
 *         return txt
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6114
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         strc = cscamper_host.scamper_host_rr_txt_strc_get(self._c)
 *         while self._i < strc:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_7__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_7__next__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostTXT_6__next__(((struct __pyx_obj_7scamper_ScamperHostTXT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_6__next__(struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self) {
  uint16_t __pyx_v_strc;
  char const *__pyx_v_txt;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_error_without_exception = 0; /* StopIteration */
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":6115
 * 
 *     def __next__(self):
 *         strc = cscamper_host.scamper_host_rr_txt_strc_get(self._c)             # <<<<<<<<<<<<<<
 *         while self._i < strc:
 *             txt = cscamper_host.scamper_host_rr_txt_str_get(self._c, self._i)
*/
  __pyx_v_strc = scamper_host_rr_txt_strc_get(__pyx_v_self->_c);

  /* "scamper.pyx":6116
 *     def __next__(self):
 *         strc = cscamper_host.scamper_host_rr_txt_strc_get(self._c)
 *         while self._i < strc:             # <<<<<<<<<<<<<<
 *             txt = cscamper_host.scamper_host_rr_txt_str_get(self._c, self._i)
 *             self._i += 1
*/
  while (1) {
    __pyx_t_1 = (__pyx_v_self->_i < __pyx_v_strc);
    if (!__pyx_t_1) break;

    /* "scamper.pyx":6117
 *         strc = cscamper_host.scamper_host_rr_txt_strc_get(self._c)
 *         while self._i < strc:
 *             txt = cscamper_host.scamper_host_rr_txt_str_get(self._c, self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             if txt != NULL:
*/
    __pyx_v_txt = scamper_host_rr_txt_str_get(__pyx_v_self->_c, __pyx_v_self->_i);

    /* "scamper.pyx":6118
 *         while self._i < strc:
 *             txt = cscamper_host.scamper_host_rr_txt_str_get(self._c, self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             if txt != NULL:
 *                 return txt.decode('UTF-8', 'strict')
*/
    __pyx_v_self->_i = (__pyx_v_self->_i + 1);

    /* "scamper.pyx":6119
 *             txt = cscamper_host.scamper_host_rr_txt_str_get(self._c, self._i)
 *             self._i += 1
 *             if txt != NULL:             # <<<<<<<<<<<<<<
 *                 return txt.decode('UTF-8', 'strict')
 *         raise StopIteration
*/
    __pyx_t_1 = (__pyx_v_txt != NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":6120
 *             self._i += 1
 *             if txt != NULL:
 *                 return txt.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_txt); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6120, __pyx_L1_error)
      __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_txt, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6120, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":6119
 *             txt = cscamper_host.scamper_host_rr_txt_str_get(self._c, self._i)
 *             self._i += 1
 *             if txt != NULL:             # <<<<<<<<<<<<<<
 *                 return txt.decode('UTF-8', 'strict')
 *         raise StopIteration
*/
    }
  }

  /* "scamper.pyx":6121
 *             if txt != NULL:
 *                 return txt.decode('UTF-8', 'strict')
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_error_without_exception = 1;
  goto __pyx_L1_error;;

  /* "scamper.pyx":6114
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         strc = cscamper_host.scamper_host_rr_txt_strc_get(self._c)
 *         while self._i < strc:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  if (!__pyx_error_without_exception) {
    __Pyx_AddTraceback("scamper.ScamperHostTXT.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6123
 *         raise StopIteration
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def strc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_4strc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_4strc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostTXT_4strc___get__(((struct __pyx_obj_7scamper_ScamperHostTXT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_4strc___get__(struct __pyx_obj_7scamper_ScamperHostTXT *__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("__get__", 0);

  /* "scamper.pyx":6131
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_txt_strc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def str(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_txt_strc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6131, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6123
 *         raise StopIteration
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def strc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostTXT.strc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6133
 *         return cscamper_host.scamper_host_rr_txt_strc_get(self._c)
 * 
 *     def str(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a string from this TXT record.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_9str(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperHostTXT_8str, "\n        get method to obtain a string from this TXT record.\n\n        :param int i: The string of interest\n        :returns: the string\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperHostTXT_9str = {"str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostTXT_9str, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHostTXT_8str};
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_9str(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("str (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6133, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6133, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "str", 0) < 0) __PYX_ERR(0, 6133, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("str", 1, 1, 1, i); __PYX_ERR(0, 6133, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6133, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("str", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6133, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostTXT.str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperHostTXT_8str(((struct __pyx_obj_7scamper_ScamperHostTXT *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_8str(struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self, PyObject *__pyx_v_i) {
  char const *__pyx_v_txt;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("str", 0);

  /* "scamper.pyx":6141
 *         :rtype: string
 *         """
 *         txt = cscamper_host.scamper_host_rr_txt_str_get(self._c, i)             # <<<<<<<<<<<<<<
 *         if txt == NULL:
 *             return None
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6141, __pyx_L1_error)
  __pyx_v_txt = scamper_host_rr_txt_str_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":6142
 *         """
 *         txt = cscamper_host.scamper_host_rr_txt_str_get(self._c, i)
 *         if txt == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return txt.decode('UTF-8', 'strict')
*/
  __pyx_t_2 = (__pyx_v_txt == NULL);
  if (__pyx_t_2) {

    /* "scamper.pyx":6143
 *         txt = cscamper_host.scamper_host_rr_txt_str_get(self._c, i)
 *         if txt == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return txt.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6142
 *         """
 *         txt = cscamper_host.scamper_host_rr_txt_str_get(self._c, i)
 *         if txt == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return txt.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":6144
 *         if txt == NULL:
 *             return None
 *         return txt.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperHostOPTElem:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_ssize_strlen(__pyx_v_txt); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6144, __pyx_L1_error)
  __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_txt, 0, __pyx_t_3, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6144, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6133
 *         return cscamper_host.scamper_host_rr_txt_strc_get(self._c)
 * 
 *     def str(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a string from this TXT record.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperHostTXT.str", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperHostTXT_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostTXT_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHostTXT_10__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHostTXT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostTXT.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperHostTXT_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostTXT_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperHostTXT_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostTXT.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperHostTXT_12__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHostTXT *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostTXT_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostTXT *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostTXT.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6153
 *     cdef cscamper_host.scamper_host_rr_opt_elem_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_18ScamperHostOPTElem_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_18ScamperHostOPTElem_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_18ScamperHostOPTElem___init__(((struct __pyx_obj_7scamper_ScamperHostOPTElem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_18ScamperHostOPTElem___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":6154
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6154, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 6154, __pyx_L1_error)

  /* "scamper.pyx":6153
 *     cdef cscamper_host.scamper_host_rr_opt_elem_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostOPTElem.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6156
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_opt_elem_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_18ScamperHostOPTElem_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_18ScamperHostOPTElem_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_18ScamperHostOPTElem_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHostOPTElem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_18ScamperHostOPTElem_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":6157
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_opt_elem_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6158
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_opt_elem_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_host_rr_opt_elem_free(__pyx_v_self->_c);

    /* "scamper.pyx":6157
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_opt_elem_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":6156
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_opt_elem_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":6160
 *             cscamper_host.scamper_host_rr_opt_elem_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostOPTElem from_ptr(cscamper_host.scamper_host_rr_opt_elem_t *ptr):
 *         cdef ScamperHostOPTElem elem
*/

static struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_f_7scamper_18ScamperHostOPTElem_from_ptr(scamper_host_rr_opt_elem_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_elem = 0;
  struct __pyx_obj_7scamper_ScamperHostOPTElem *__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("from_ptr", 0);

  /* "scamper.pyx":6163
 *     cdef ScamperHostOPTElem from_ptr(cscamper_host.scamper_host_rr_opt_elem_t *ptr):
 *         cdef ScamperHostOPTElem elem
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         elem = ScamperHostOPTElem.__new__(ScamperHostOPTElem)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6164
 *         cdef ScamperHostOPTElem elem
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         elem = ScamperHostOPTElem.__new__(ScamperHostOPTElem)
 *         elem._c = cscamper_host.scamper_host_rr_opt_elem_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperHostOPTElem *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6163
 *     cdef ScamperHostOPTElem from_ptr(cscamper_host.scamper_host_rr_opt_elem_t *ptr):
 *         cdef ScamperHostOPTElem elem
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         elem = ScamperHostOPTElem.__new__(ScamperHostOPTElem)
*/
  }

  /* "scamper.pyx":6165
 *         if ptr == NULL:
 *             return None
 *         elem = ScamperHostOPTElem.__new__(ScamperHostOPTElem)             # <<<<<<<<<<<<<<
 *         elem._c = cscamper_host.scamper_host_rr_opt_elem_use(ptr)
 *         return elem
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHostOPTElem(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostOPTElem), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6165, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_elem = ((struct __pyx_obj_7scamper_ScamperHostOPTElem *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":6166
 *             return None
 *         elem = ScamperHostOPTElem.__new__(ScamperHostOPTElem)
 *         elem._c = cscamper_host.scamper_host_rr_opt_elem_use(ptr)             # <<<<<<<<<<<<<<
 *         return elem
 * 
*/
  __pyx_v_elem->_c = scamper_host_rr_opt_elem_use(__pyx_v_ptr);

  /* "scamper.pyx":6167
 *         elem = ScamperHostOPTElem.__new__(ScamperHostOPTElem)
 *         elem._c = cscamper_host.scamper_host_rr_opt_elem_use(ptr)
 *         return elem             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_elem);
  __pyx_r = __pyx_v_elem;
  goto __pyx_L0;

  /* "scamper.pyx":6160
 *             cscamper_host.scamper_host_rr_opt_elem_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostOPTElem from_ptr(cscamper_host.scamper_host_rr_opt_elem_t *ptr):
 *         cdef ScamperHostOPTElem elem
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostOPTElem.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_elem);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6169
 *         return elem
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return cscamper_host.scamper_host_rr_opt_elem_len_get(self._c)
 * 
*/

/* Python wrapper */
static Py_ssize_t __pyx_pw_7scamper_18ScamperHostOPTElem_5__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_7scamper_18ScamperHostOPTElem_5__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_18ScamperHostOPTElem_4__len__(((struct __pyx_obj_7scamper_ScamperHostOPTElem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_7scamper_18ScamperHostOPTElem_4__len__(struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self) {
  Py_ssize_t __pyx_r;

  /* "scamper.pyx":6170
 * 
 *     def __len__(self):
 *         return cscamper_host.scamper_host_rr_opt_elem_len_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_r = scamper_host_rr_opt_elem_len_get(__pyx_v_self->_c);
  goto __pyx_L0;

  /* "scamper.pyx":6169
 *         return elem
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return cscamper_host.scamper_host_rr_opt_elem_len_get(self._c)
 * 
*/

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "scamper.pyx":6172
 *         return cscamper_host.scamper_host_rr_opt_elem_len_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def code_num(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperHostOPTElem_8code_num_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_18ScamperHostOPTElem_8code_num_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_18ScamperHostOPTElem_8code_num___get__(((struct __pyx_obj_7scamper_ScamperHostOPTElem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperHostOPTElem_8code_num___get__(struct __pyx_obj_7scamper_ScamperHostOPTElem *__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("__get__", 0);

  /* "scamper.pyx":6180
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_opt_elem_code_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_opt_elem_code_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6172
 *         return cscamper_host.scamper_host_rr_opt_elem_len_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def code_num(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostOPTElem.code_num.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6182
 *         return cscamper_host.scamper_host_rr_opt_elem_code_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def code(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperHostOPTElem_4code_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_18ScamperHostOPTElem_4code_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_18ScamperHostOPTElem_4code___get__(((struct __pyx_obj_7scamper_ScamperHostOPTElem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperHostOPTElem_4code___get__(struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  uint16_t __pyx_v_v;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6191
 *         """
 *         cdef char buf[128]
 *         v = cscamper_host.scamper_host_rr_opt_elem_code_get(self._c)             # <<<<<<<<<<<<<<
 *         cscamper_host.scamper_host_rr_opt_elem_code_tostr(v, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')
*/
  __pyx_v_v = scamper_host_rr_opt_elem_code_get(__pyx_v_self->_c);

  /* "scamper.pyx":6192
 *         cdef char buf[128]
 *         v = cscamper_host.scamper_host_rr_opt_elem_code_get(self._c)
 *         cscamper_host.scamper_host_rr_opt_elem_code_tostr(v, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_host_rr_opt_elem_code_tostr(__pyx_v_v, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":6193
 *         v = cscamper_host.scamper_host_rr_opt_elem_code_get(self._c)
 *         cscamper_host.scamper_host_rr_opt_elem_code_tostr(v, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6193, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6193, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6182
 *         return cscamper_host.scamper_host_rr_opt_elem_code_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def code(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostOPTElem.code.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6195
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def data(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperHostOPTElem_4data_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_18ScamperHostOPTElem_4data_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_18ScamperHostOPTElem_4data___get__(((struct __pyx_obj_7scamper_ScamperHostOPTElem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperHostOPTElem_4data___get__(struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self) {
  uint8_t const *__pyx_v_data;
  uint16_t __pyx_v_length;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":6204
 *         """
 *         cdef const uint8_t *data
 *         data = cscamper_host.scamper_host_rr_opt_elem_data_get(self._c)             # <<<<<<<<<<<<<<
 *         length = cscamper_host.scamper_host_rr_opt_elem_len_get(self._c)
 *         if data == NULL or length == 0:
*/
  __pyx_v_data = scamper_host_rr_opt_elem_data_get(__pyx_v_self->_c);

  /* "scamper.pyx":6205
 *         cdef const uint8_t *data
 *         data = cscamper_host.scamper_host_rr_opt_elem_data_get(self._c)
 *         length = cscamper_host.scamper_host_rr_opt_elem_len_get(self._c)             # <<<<<<<<<<<<<<
 *         if data == NULL or length == 0:
 *             return None
*/
  __pyx_v_length = scamper_host_rr_opt_elem_len_get(__pyx_v_self->_c);

  /* "scamper.pyx":6206
 *         data = cscamper_host.scamper_host_rr_opt_elem_data_get(self._c)
 *         length = cscamper_host.scamper_host_rr_opt_elem_len_get(self._c)
 *         if data == NULL or length == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return data[:length]
*/
  __pyx_t_2 = (__pyx_v_data == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_length == 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":6207
 *         length = cscamper_host.scamper_host_rr_opt_elem_len_get(self._c)
 *         if data == NULL or length == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return data[:length]
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6206
 *         data = cscamper_host.scamper_host_rr_opt_elem_data_get(self._c)
 *         length = cscamper_host.scamper_host_rr_opt_elem_len_get(self._c)
 *         if data == NULL or length == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return data[:length]
*/
  }

  /* "scamper.pyx":6208
 *         if data == NULL or length == 0:
 *             return None
 *         return data[:length]             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperHostOPT:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_data) + 0, __pyx_v_length - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6208, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6195
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def data(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostOPTElem.data.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperHostOPTElem_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_18ScamperHostOPTElem_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperHostOPTElem_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_18ScamperHostOPTElem_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_18ScamperHostOPTElem_6__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHostOPTElem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperHostOPTElem_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostOPTElem.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_18ScamperHostOPTElem_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_18ScamperHostOPTElem_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperHostOPTElem_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_18ScamperHostOPTElem_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostOPTElem.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_18ScamperHostOPTElem_8__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHostOPTElem *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_18ScamperHostOPTElem_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPTElem *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostOPTElem.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6218
 *     cdef uint16_t _i, _elemc
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperHostOPT_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_14ScamperHostOPT_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHostOPT___init__(((struct __pyx_obj_7scamper_ScamperHostOPT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperHostOPT___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":6219
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6219, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 6219, __pyx_L1_error)

  /* "scamper.pyx":6218
 *     cdef uint16_t _i, _elemc
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostOPT.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6221
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_opt_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_14ScamperHostOPT_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_14ScamperHostOPT_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_14ScamperHostOPT_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHostOPT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_14ScamperHostOPT_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":6222
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_opt_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6223
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_opt_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_host_rr_opt_free(__pyx_v_self->_c);

    /* "scamper.pyx":6222
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_opt_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":6221
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_opt_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":6225
 *             cscamper_host.scamper_host_rr_opt_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostOPT from_ptr(cscamper_host.scamper_host_rr_opt_t *ptr):
 *         cdef ScamperHostOPT opt
*/

static struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_f_7scamper_14ScamperHostOPT_from_ptr(scamper_host_rr_opt_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_opt = 0;
  struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("from_ptr", 0);

  /* "scamper.pyx":6228
 *     cdef ScamperHostOPT from_ptr(cscamper_host.scamper_host_rr_opt_t *ptr):
 *         cdef ScamperHostOPT opt
 *         opt = ScamperHostOPT.__new__(ScamperHostOPT)             # <<<<<<<<<<<<<<
 *         if ptr != NULL:
 *             opt._c = cscamper_host.scamper_host_rr_opt_use(ptr)
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHostOPT(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostOPT), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6228, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_opt = ((struct __pyx_obj_7scamper_ScamperHostOPT *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":6229
 *         cdef ScamperHostOPT opt
 *         opt = ScamperHostOPT.__new__(ScamperHostOPT)
 *         if ptr != NULL:             # <<<<<<<<<<<<<<
 *             opt._c = cscamper_host.scamper_host_rr_opt_use(ptr)
 *             opt._elemc = cscamper_host.scamper_host_rr_opt_elemc_get(ptr)
*/
  __pyx_t_2 = (__pyx_v_ptr != NULL);
  if (__pyx_t_2) {

    /* "scamper.pyx":6230
 *         opt = ScamperHostOPT.__new__(ScamperHostOPT)
 *         if ptr != NULL:
 *             opt._c = cscamper_host.scamper_host_rr_opt_use(ptr)             # <<<<<<<<<<<<<<
 *             opt._elemc = cscamper_host.scamper_host_rr_opt_elemc_get(ptr)
 *         return opt
*/
    __pyx_v_opt->_c = scamper_host_rr_opt_use(__pyx_v_ptr);

    /* "scamper.pyx":6231
 *         if ptr != NULL:
 *             opt._c = cscamper_host.scamper_host_rr_opt_use(ptr)
 *             opt._elemc = cscamper_host.scamper_host_rr_opt_elemc_get(ptr)             # <<<<<<<<<<<<<<
 *         return opt
 * 
*/
    __pyx_v_opt->_elemc = scamper_host_rr_opt_elemc_get(__pyx_v_ptr);

    /* "scamper.pyx":6229
 *         cdef ScamperHostOPT opt
 *         opt = ScamperHostOPT.__new__(ScamperHostOPT)
 *         if ptr != NULL:             # <<<<<<<<<<<<<<
 *             opt._c = cscamper_host.scamper_host_rr_opt_use(ptr)
 *             opt._elemc = cscamper_host.scamper_host_rr_opt_elemc_get(ptr)
*/
  }

  /* "scamper.pyx":6232
 *             opt._c = cscamper_host.scamper_host_rr_opt_use(ptr)
 *             opt._elemc = cscamper_host.scamper_host_rr_opt_elemc_get(ptr)
 *         return opt             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_opt);
  __pyx_r = __pyx_v_opt;
  goto __pyx_L0;

  /* "scamper.pyx":6225
 *             cscamper_host.scamper_host_rr_opt_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostOPT from_ptr(cscamper_host.scamper_host_rr_opt_t *ptr):
 *         cdef ScamperHostOPT opt
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostOPT.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_opt);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6234
 *         return opt
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_5__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_5__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostOPT_4__iter__(((struct __pyx_obj_7scamper_ScamperHostOPT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_4__iter__(struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":6235
 * 
 *     def __iter__(self):
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_v_self->_i = 0;

  /* "scamper.pyx":6236
 *     def __iter__(self):
 *         self._i = 0
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":6234
 *         return opt
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6238
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._elemc:
 *             elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_7__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_7__next__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostOPT_6__next__(((struct __pyx_obj_7scamper_ScamperHostOPT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_6__next__(struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self) {
  scamper_host_rr_opt_elem_t *__pyx_v_elem;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_error_without_exception = 0; /* StopIteration */
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":6239
 * 
 *     def __next__(self):
 *         while self._i < self._elemc:             # <<<<<<<<<<<<<<
 *             elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, self._i)
 *             self._i += 1
*/
  while (1) {
    __pyx_t_1 = (__pyx_v_self->_i < __pyx_v_self->_elemc);
    if (!__pyx_t_1) break;

    /* "scamper.pyx":6240
 *     def __next__(self):
 *         while self._i < self._elemc:
 *             elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             if elem != NULL:
*/
    __pyx_v_elem = scamper_host_rr_opt_elem_get(__pyx_v_self->_c, __pyx_v_self->_i);

    /* "scamper.pyx":6241
 *         while self._i < self._elemc:
 *             elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             if elem != NULL:
 *                 return ScamperHostOPTElem.from_ptr(elem)
*/
    __pyx_v_self->_i = (__pyx_v_self->_i + 1);

    /* "scamper.pyx":6242
 *             elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, self._i)
 *             self._i += 1
 *             if elem != NULL:             # <<<<<<<<<<<<<<
 *                 return ScamperHostOPTElem.from_ptr(elem)
 *         raise StopIteration
*/
    __pyx_t_1 = (__pyx_v_elem != NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":6243
 *             self._i += 1
 *             if elem != NULL:
 *                 return ScamperHostOPTElem.from_ptr(elem)             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_18ScamperHostOPTElem_from_ptr(__pyx_v_elem)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6243, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":6242
 *             elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, self._i)
 *             self._i += 1
 *             if elem != NULL:             # <<<<<<<<<<<<<<
 *                 return ScamperHostOPTElem.from_ptr(elem)
 *         raise StopIteration
*/
    }
  }

  /* "scamper.pyx":6244
 *             if elem != NULL:
 *                 return ScamperHostOPTElem.from_ptr(elem)
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_error_without_exception = 1;
  goto __pyx_L1_error;;

  /* "scamper.pyx":6238
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._elemc:
 *             elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, self._i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  if (!__pyx_error_without_exception) {
    __Pyx_AddTraceback("scamper.ScamperHostOPT.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6246
 *         raise StopIteration
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def elemc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_5elemc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_5elemc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHostOPT_5elemc___get__(((struct __pyx_obj_7scamper_ScamperHostOPT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_5elemc___get__(struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":6254
 *         :rtype: int
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return 0
 *         return cscamper_host.scamper_host_rr_opt_elemc_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6255
 *         """
 *         if self._c == NULL:
 *             return 0             # <<<<<<<<<<<<<<
 *         return cscamper_host.scamper_host_rr_opt_elemc_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __pyx_r = __pyx_mstate_global->__pyx_int_0;
    goto __pyx_L0;

    /* "scamper.pyx":6254
 *         :rtype: int
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return 0
 *         return cscamper_host.scamper_host_rr_opt_elemc_get(self._c)
*/
  }

  /* "scamper.pyx":6256
 *         if self._c == NULL:
 *             return 0
 *         return cscamper_host.scamper_host_rr_opt_elemc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def elem(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_opt_elemc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6246
 *         raise StopIteration
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def elemc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostOPT.elemc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6258
 *         return cscamper_host.scamper_host_rr_opt_elemc_get(self._c)
 * 
 *     def elem(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a specific element from this OPT record.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_9elem(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperHostOPT_8elem, "\n        get method to obtain a specific element from this OPT record.\n\n        :param int i: The element of interest\n        :returns: the element\n        :rtype: ScamperHostOPTElem\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperHostOPT_9elem = {"elem", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostOPT_9elem, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHostOPT_8elem};
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_9elem(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("elem (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6258, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6258, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "elem", 0) < 0) __PYX_ERR(0, 6258, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("elem", 1, 1, 1, i); __PYX_ERR(0, 6258, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6258, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("elem", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6258, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostOPT.elem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperHostOPT_8elem(((struct __pyx_obj_7scamper_ScamperHostOPT *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_8elem(struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_host_rr_opt_elem_t *__pyx_v_elem;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  uint16_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("elem", 0);

  /* "scamper.pyx":6266
 *         :rtype: ScamperHostOPTElem
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, i)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6267
 *         """
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, i)
 *         if elem == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6266
 *         :rtype: ScamperHostOPTElem
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, i)
*/
  }

  /* "scamper.pyx":6268
 *         if self._c == NULL:
 *             return None
 *         elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, i)             # <<<<<<<<<<<<<<
 *         if elem == NULL:
 *             return None
*/
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6268, __pyx_L1_error)
  __pyx_v_elem = scamper_host_rr_opt_elem_get(__pyx_v_self->_c, __pyx_t_2);

  /* "scamper.pyx":6269
 *             return None
 *         elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, i)
 *         if elem == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return ScamperHostOPTElem.from_ptr(elem)
*/
  __pyx_t_1 = (__pyx_v_elem == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6270
 *         elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, i)
 *         if elem == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return ScamperHostOPTElem.from_ptr(elem)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6269
 *             return None
 *         elem = cscamper_host.scamper_host_rr_opt_elem_get(self._c, i)
 *         if elem == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return ScamperHostOPTElem.from_ptr(elem)
*/
  }

  /* "scamper.pyx":6271
 *         if elem == NULL:
 *             return None
 *         return ScamperHostOPTElem.from_ptr(elem)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperHostSVCBParam:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_18ScamperHostOPTElem_from_ptr(__pyx_v_elem)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6271, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6258
 *         return cscamper_host.scamper_host_rr_opt_elemc_get(self._c)
 * 
 *     def elem(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a specific element from this OPT record.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostOPT.elem", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperHostOPT_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostOPT_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHostOPT_10__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHostOPT *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostOPT.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperHostOPT_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostOPT_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperHostOPT_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostOPT.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperHostOPT_12__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHostOPT *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHostOPT_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostOPT *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostOPT.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6280
 *     cdef cscamper_host.scamper_host_rr_svcb_param_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_20ScamperHostSVCBParam_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_20ScamperHostSVCBParam_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_20ScamperHostSVCBParam___init__(((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_20ScamperHostSVCBParam___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":6281
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6281, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 6281, __pyx_L1_error)

  /* "scamper.pyx":6280
 *     cdef cscamper_host.scamper_host_rr_svcb_param_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostSVCBParam.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6283
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_svcb_param_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_20ScamperHostSVCBParam_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_20ScamperHostSVCBParam_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_20ScamperHostSVCBParam_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_20ScamperHostSVCBParam_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":6284
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_svcb_param_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6285
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_svcb_param_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_host_rr_svcb_param_free(__pyx_v_self->_c);

    /* "scamper.pyx":6284
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_svcb_param_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":6283
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_svcb_param_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":6287
 *             cscamper_host.scamper_host_rr_svcb_param_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostSVCBParam from_ptr(cscamper_host.scamper_host_rr_svcb_param_t *ptr):
 *         cdef ScamperHostSVCBParam p
*/

static struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_f_7scamper_20ScamperHostSVCBParam_from_ptr(scamper_host_rr_svcb_param_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_p = 0;
  struct __pyx_obj_7scamper_ScamperHostSVCBParam *__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("from_ptr", 0);

  /* "scamper.pyx":6290
 *     cdef ScamperHostSVCBParam from_ptr(cscamper_host.scamper_host_rr_svcb_param_t *ptr):
 *         cdef ScamperHostSVCBParam p
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         p = ScamperHostSVCBParam.__new__(ScamperHostSVCBParam)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6291
 *         cdef ScamperHostSVCBParam p
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         p = ScamperHostSVCBParam.__new__(ScamperHostSVCBParam)
 *         p._c = cscamper_host.scamper_host_rr_svcb_param_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6290
 *     cdef ScamperHostSVCBParam from_ptr(cscamper_host.scamper_host_rr_svcb_param_t *ptr):
 *         cdef ScamperHostSVCBParam p
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         p = ScamperHostSVCBParam.__new__(ScamperHostSVCBParam)
*/
  }

  /* "scamper.pyx":6292
 *         if ptr == NULL:
 *             return None
 *         p = ScamperHostSVCBParam.__new__(ScamperHostSVCBParam)             # <<<<<<<<<<<<<<
 *         p._c = cscamper_host.scamper_host_rr_svcb_param_use(ptr)
 *         return p
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHostSVCBParam(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostSVCBParam), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6292, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_p = ((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":6293
 *             return None
 *         p = ScamperHostSVCBParam.__new__(ScamperHostSVCBParam)
 *         p._c = cscamper_host.scamper_host_rr_svcb_param_use(ptr)             # <<<<<<<<<<<<<<
 *         return p
 * 
*/
  __pyx_v_p->_c = scamper_host_rr_svcb_param_use(__pyx_v_ptr);

  /* "scamper.pyx":6294
 *         p = ScamperHostSVCBParam.__new__(ScamperHostSVCBParam)
 *         p._c = cscamper_host.scamper_host_rr_svcb_param_use(ptr)
 *         return p             # <<<<<<<<<<<<<<
 * 
 *     def __len__(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_p);
  __pyx_r = __pyx_v_p;
  goto __pyx_L0;

  /* "scamper.pyx":6287
 *             cscamper_host.scamper_host_rr_svcb_param_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostSVCBParam from_ptr(cscamper_host.scamper_host_rr_svcb_param_t *ptr):
 *         cdef ScamperHostSVCBParam p
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostSVCBParam.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_p);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6296
 *         return p
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return cscamper_host.scamper_host_rr_svcb_param_len_get(self._c)
 * 
*/

/* Python wrapper */
static Py_ssize_t __pyx_pw_7scamper_20ScamperHostSVCBParam_5__len__(PyObject *__pyx_v_self); /*proto*/
static Py_ssize_t __pyx_pw_7scamper_20ScamperHostSVCBParam_5__len__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_ssize_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__len__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperHostSVCBParam_4__len__(((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_ssize_t __pyx_pf_7scamper_20ScamperHostSVCBParam_4__len__(struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self) {
  Py_ssize_t __pyx_r;

  /* "scamper.pyx":6297
 * 
 *     def __len__(self):
 *         return cscamper_host.scamper_host_rr_svcb_param_len_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_r = scamper_host_rr_svcb_param_len_get(__pyx_v_self->_c);
  goto __pyx_L0;

  /* "scamper.pyx":6296
 *         return p
 * 
 *     def __len__(self):             # <<<<<<<<<<<<<<
 *         return cscamper_host.scamper_host_rr_svcb_param_len_get(self._c)
 * 
*/

  /* function exit code */
  __pyx_L0:;
  return __pyx_r;
}

/* "scamper.pyx":6299
 *         return cscamper_host.scamper_host_rr_svcb_param_len_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def key_num(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperHostSVCBParam_7key_num_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperHostSVCBParam_7key_num_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperHostSVCBParam_7key_num___get__(((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperHostSVCBParam_7key_num___get__(struct __pyx_obj_7scamper_ScamperHostSVCBParam *__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("__get__", 0);

  /* "scamper.pyx":6307
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_svcb_param_key_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_svcb_param_key_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6299
 *         return cscamper_host.scamper_host_rr_svcb_param_len_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def key_num(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostSVCBParam.key_num.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6309
 *         return cscamper_host.scamper_host_rr_svcb_param_key_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def key(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperHostSVCBParam_3key_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperHostSVCBParam_3key_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperHostSVCBParam_3key___get__(((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperHostSVCBParam_3key___get__(struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  uint16_t __pyx_v_key;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6318
 *         """
 *         cdef char buf[128]
 *         key = cscamper_host.scamper_host_rr_svcb_param_key_get(self._c)             # <<<<<<<<<<<<<<
 *         cscamper_host.scamper_host_rr_svcb_param_key_tostr(key, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')
*/
  __pyx_v_key = scamper_host_rr_svcb_param_key_get(__pyx_v_self->_c);

  /* "scamper.pyx":6319
 *         cdef char buf[128]
 *         key = cscamper_host.scamper_host_rr_svcb_param_key_get(self._c)
 *         cscamper_host.scamper_host_rr_svcb_param_key_tostr(key, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_host_rr_svcb_param_key_tostr(__pyx_v_key, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":6320
 *         key = cscamper_host.scamper_host_rr_svcb_param_key_get(self._c)
 *         cscamper_host.scamper_host_rr_svcb_param_key_tostr(key, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6320, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6320, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6309
 *         return cscamper_host.scamper_host_rr_svcb_param_key_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def key(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostSVCBParam.key.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6322
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def val(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperHostSVCBParam_3val_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperHostSVCBParam_3val_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperHostSVCBParam_3val___get__(((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperHostSVCBParam_3val___get__(struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self) {
  uint8_t const *__pyx_v_val;
  uint16_t __pyx_v_length;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":6331
 *         """
 *         cdef const uint8_t *val
 *         val = cscamper_host.scamper_host_rr_svcb_param_val_get(self._c)             # <<<<<<<<<<<<<<
 *         length = cscamper_host.scamper_host_rr_svcb_param_len_get(self._c)
 *         if val == NULL or length == 0:
*/
  __pyx_v_val = scamper_host_rr_svcb_param_val_get(__pyx_v_self->_c);

  /* "scamper.pyx":6332
 *         cdef const uint8_t *val
 *         val = cscamper_host.scamper_host_rr_svcb_param_val_get(self._c)
 *         length = cscamper_host.scamper_host_rr_svcb_param_len_get(self._c)             # <<<<<<<<<<<<<<
 *         if val == NULL or length == 0:
 *             return None
*/
  __pyx_v_length = scamper_host_rr_svcb_param_len_get(__pyx_v_self->_c);

  /* "scamper.pyx":6333
 *         val = cscamper_host.scamper_host_rr_svcb_param_val_get(self._c)
 *         length = cscamper_host.scamper_host_rr_svcb_param_len_get(self._c)
 *         if val == NULL or length == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return val[:length]
*/
  __pyx_t_2 = (__pyx_v_val == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_length == 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":6334
 *         length = cscamper_host.scamper_host_rr_svcb_param_len_get(self._c)
 *         if val == NULL or length == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return val[:length]
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6333
 *         val = cscamper_host.scamper_host_rr_svcb_param_val_get(self._c)
 *         length = cscamper_host.scamper_host_rr_svcb_param_len_get(self._c)
 *         if val == NULL or length == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return val[:length]
*/
  }

  /* "scamper.pyx":6335
 *         if val == NULL or length == 0:
 *             return None
 *         return val[:length]             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperHostSVCB:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_val) + 0, __pyx_v_length - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6322
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def val(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostSVCBParam.val.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperHostSVCBParam_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20ScamperHostSVCBParam_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperHostSVCBParam_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20ScamperHostSVCBParam_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_20ScamperHostSVCBParam_6__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperHostSVCBParam_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostSVCBParam.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperHostSVCBParam_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20ScamperHostSVCBParam_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperHostSVCBParam_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20ScamperHostSVCBParam_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostSVCBParam.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20ScamperHostSVCBParam_8__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperHostSVCBParam_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCBParam *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostSVCBParam.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6345
 *     cdef uint16_t _i, _paramc
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_15ScamperHostSVCB_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_15ScamperHostSVCB_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_15ScamperHostSVCB___init__(((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_15ScamperHostSVCB___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":6346
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6346, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 6346, __pyx_L1_error)

  /* "scamper.pyx":6345
 *     cdef uint16_t _i, _paramc
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostSVCB.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6348
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_svcb_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_15ScamperHostSVCB_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_15ScamperHostSVCB_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_15ScamperHostSVCB_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_15ScamperHostSVCB_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":6349
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_svcb_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6350
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_svcb_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_host_rr_svcb_free(__pyx_v_self->_c);

    /* "scamper.pyx":6349
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_svcb_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":6348
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_svcb_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":6352
 *             cscamper_host.scamper_host_rr_svcb_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostSVCB from_ptr(cscamper_host.scamper_host_rr_svcb_t *ptr):
 *         cdef ScamperHostSVCB svcb
*/

static struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_f_7scamper_15ScamperHostSVCB_from_ptr(scamper_host_rr_svcb_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_svcb = 0;
  struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("from_ptr", 0);

  /* "scamper.pyx":6355
 *     cdef ScamperHostSVCB from_ptr(cscamper_host.scamper_host_rr_svcb_t *ptr):
 *         cdef ScamperHostSVCB svcb
 *         svcb = ScamperHostSVCB.__new__(ScamperHostSVCB)             # <<<<<<<<<<<<<<
 *         if ptr != NULL:
 *             svcb._c = cscamper_host.scamper_host_rr_svcb_use(ptr)
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHostSVCB(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostSVCB), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6355, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_svcb = ((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":6356
 *         cdef ScamperHostSVCB svcb
 *         svcb = ScamperHostSVCB.__new__(ScamperHostSVCB)
 *         if ptr != NULL:             # <<<<<<<<<<<<<<
 *             svcb._c = cscamper_host.scamper_host_rr_svcb_use(ptr)
 *             svcb._paramc = cscamper_host.scamper_host_rr_svcb_paramc_get(ptr)
*/
  __pyx_t_2 = (__pyx_v_ptr != NULL);
  if (__pyx_t_2) {

    /* "scamper.pyx":6357
 *         svcb = ScamperHostSVCB.__new__(ScamperHostSVCB)
 *         if ptr != NULL:
 *             svcb._c = cscamper_host.scamper_host_rr_svcb_use(ptr)             # <<<<<<<<<<<<<<
 *             svcb._paramc = cscamper_host.scamper_host_rr_svcb_paramc_get(ptr)
 *         return svcb
*/
    __pyx_v_svcb->_c = scamper_host_rr_svcb_use(__pyx_v_ptr);

    /* "scamper.pyx":6358
 *         if ptr != NULL:
 *             svcb._c = cscamper_host.scamper_host_rr_svcb_use(ptr)
 *             svcb._paramc = cscamper_host.scamper_host_rr_svcb_paramc_get(ptr)             # <<<<<<<<<<<<<<
 *         return svcb
 * 
*/
    __pyx_v_svcb->_paramc = scamper_host_rr_svcb_paramc_get(__pyx_v_ptr);

    /* "scamper.pyx":6356
 *         cdef ScamperHostSVCB svcb
 *         svcb = ScamperHostSVCB.__new__(ScamperHostSVCB)
 *         if ptr != NULL:             # <<<<<<<<<<<<<<
 *             svcb._c = cscamper_host.scamper_host_rr_svcb_use(ptr)
 *             svcb._paramc = cscamper_host.scamper_host_rr_svcb_paramc_get(ptr)
*/
  }

  /* "scamper.pyx":6359
 *             svcb._c = cscamper_host.scamper_host_rr_svcb_use(ptr)
 *             svcb._paramc = cscamper_host.scamper_host_rr_svcb_paramc_get(ptr)
 *         return svcb             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_svcb);
  __pyx_r = __pyx_v_svcb;
  goto __pyx_L0;

  /* "scamper.pyx":6352
 *             cscamper_host.scamper_host_rr_svcb_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostSVCB from_ptr(cscamper_host.scamper_host_rr_svcb_t *ptr):
 *         cdef ScamperHostSVCB svcb
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostSVCB.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_svcb);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6361
 *         return svcb
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_5__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_5__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperHostSVCB_4__iter__(((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_4__iter__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":6362
 * 
 *     def __iter__(self):
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_v_self->_i = 0;

  /* "scamper.pyx":6363
 *     def __iter__(self):
 *         self._i = 0
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":6361
 *         return svcb
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         return self
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6365
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._paramc:
 *             p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_7__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_7__next__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperHostSVCB_6__next__(((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_6__next__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self) {
  scamper_host_rr_svcb_param_t *__pyx_v_p;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_error_without_exception = 0; /* StopIteration */
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":6366
 * 
 *     def __next__(self):
 *         while self._i < self._paramc:             # <<<<<<<<<<<<<<
 *             p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, self._i)
 *             self._i += 1
*/
  while (1) {
    __pyx_t_1 = (__pyx_v_self->_i < __pyx_v_self->_paramc);
    if (!__pyx_t_1) break;

    /* "scamper.pyx":6367
 *     def __next__(self):
 *         while self._i < self._paramc:
 *             p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             if p != NULL:
*/
    __pyx_v_p = scamper_host_rr_svcb_param_get(__pyx_v_self->_c, __pyx_v_self->_i);

    /* "scamper.pyx":6368
 *         while self._i < self._paramc:
 *             p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             if p != NULL:
 *                 return ScamperHostSVCBParam.from_ptr(p)
*/
    __pyx_v_self->_i = (__pyx_v_self->_i + 1);

    /* "scamper.pyx":6369
 *             p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, self._i)
 *             self._i += 1
 *             if p != NULL:             # <<<<<<<<<<<<<<
 *                 return ScamperHostSVCBParam.from_ptr(p)
 *         raise StopIteration
*/
    __pyx_t_1 = (__pyx_v_p != NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":6370
 *             self._i += 1
 *             if p != NULL:
 *                 return ScamperHostSVCBParam.from_ptr(p)             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_20ScamperHostSVCBParam_from_ptr(__pyx_v_p)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6370, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":6369
 *             p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, self._i)
 *             self._i += 1
 *             if p != NULL:             # <<<<<<<<<<<<<<
 *                 return ScamperHostSVCBParam.from_ptr(p)
 *         raise StopIteration
*/
    }
  }

  /* "scamper.pyx":6371
 *             if p != NULL:
 *                 return ScamperHostSVCBParam.from_ptr(p)
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_error_without_exception = 1;
  goto __pyx_L1_error;;

  /* "scamper.pyx":6365
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._paramc:
 *             p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, self._i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  if (!__pyx_error_without_exception) {
    __Pyx_AddTraceback("scamper.ScamperHostSVCB.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6373
 *         raise StopIteration
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def target(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_6target_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_6target_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperHostSVCB_6target___get__(((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_6target___get__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self) {
  char const *__pyx_v_target;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6381
 *         :rtype: string
 *         """
 *         target = cscamper_host.scamper_host_rr_svcb_target_get(self._c)             # <<<<<<<<<<<<<<
 *         if target == NULL:
 *             return None
*/
  __pyx_v_target = scamper_host_rr_svcb_target_get(__pyx_v_self->_c);

  /* "scamper.pyx":6382
 *         """
 *         target = cscamper_host.scamper_host_rr_svcb_target_get(self._c)
 *         if target == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return target.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_target == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6383
 *         target = cscamper_host.scamper_host_rr_svcb_target_get(self._c)
 *         if target == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return target.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6382
 *         """
 *         target = cscamper_host.scamper_host_rr_svcb_target_get(self._c)
 *         if target == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return target.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":6384
 *         if target == NULL:
 *             return None
 *         return target.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_target); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6384, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_target, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6373
 *         raise StopIteration
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def target(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostSVCB.target.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6386
 *         return target.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def priority(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_8priority_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_8priority_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperHostSVCB_8priority___get__(((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_8priority___get__(struct __pyx_obj_7scamper_ScamperHostSVCB *__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("__get__", 0);

  /* "scamper.pyx":6394
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_svcb_priority_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_svcb_priority_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6394, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6386
 *         return target.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def priority(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostSVCB.priority.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6396
 *         return cscamper_host.scamper_host_rr_svcb_priority_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def paramc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_6paramc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_6paramc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperHostSVCB_6paramc___get__(((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_6paramc___get__(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":6404
 *         :rtype: int
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return 0
 *         return cscamper_host.scamper_host_rr_svcb_paramc_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6405
 *         """
 *         if self._c == NULL:
 *             return 0             # <<<<<<<<<<<<<<
 *         return cscamper_host.scamper_host_rr_svcb_paramc_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __pyx_r = __pyx_mstate_global->__pyx_int_0;
    goto __pyx_L0;

    /* "scamper.pyx":6404
 *         :rtype: int
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return 0
 *         return cscamper_host.scamper_host_rr_svcb_paramc_get(self._c)
*/
  }

  /* "scamper.pyx":6406
 *         if self._c == NULL:
 *             return 0
 *         return cscamper_host.scamper_host_rr_svcb_paramc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def param(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_svcb_paramc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6396
 *         return cscamper_host.scamper_host_rr_svcb_priority_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def paramc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostSVCB.paramc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6408
 *         return cscamper_host.scamper_host_rr_svcb_paramc_get(self._c)
 * 
 *     def param(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a specific parameter from this SVCB record.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_9param(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperHostSVCB_8param, "\n        get method to obtain a specific parameter from this SVCB record.\n\n        :param int i: the parameter of interest\n        :returns: the parameter\n        :rtype: ScamperHostSVCBParam\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperHostSVCB_9param = {"param", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperHostSVCB_9param, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperHostSVCB_8param};
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_9param(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("param (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6408, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6408, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "param", 0) < 0) __PYX_ERR(0, 6408, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("param", 1, 1, 1, i); __PYX_ERR(0, 6408, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6408, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("param", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6408, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostSVCB.param", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_15ScamperHostSVCB_8param(((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_8param(struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_host_rr_svcb_param_t *__pyx_v_p;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  uint16_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("param", 0);

  /* "scamper.pyx":6416
 *         :rtype: ScamperHostSVCBParam
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, i)
*/
  __pyx_t_1 = (__pyx_v_self->_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6417
 *         """
 *         if self._c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, i)
 *         if p == NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6416
 *         :rtype: ScamperHostSVCBParam
 *         """
 *         if self._c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, i)
*/
  }

  /* "scamper.pyx":6418
 *         if self._c == NULL:
 *             return None
 *         p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, i)             # <<<<<<<<<<<<<<
 *         if p == NULL:
 *             return None
*/
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6418, __pyx_L1_error)
  __pyx_v_p = scamper_host_rr_svcb_param_get(__pyx_v_self->_c, __pyx_t_2);

  /* "scamper.pyx":6419
 *             return None
 *         p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, i)
 *         if p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return ScamperHostSVCBParam.from_ptr(p)
*/
  __pyx_t_1 = (__pyx_v_p == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6420
 *         p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, i)
 *         if p == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return ScamperHostSVCBParam.from_ptr(p)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6419
 *             return None
 *         p = cscamper_host.scamper_host_rr_svcb_param_get(self._c, i)
 *         if p == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return ScamperHostSVCBParam.from_ptr(p)
*/
  }

  /* "scamper.pyx":6421
 *         if p == NULL:
 *             return None
 *         return ScamperHostSVCBParam.from_ptr(p)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperHostRR:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_20ScamperHostSVCBParam_from_ptr(__pyx_v_p)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6421, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6408
 *         return cscamper_host.scamper_host_rr_svcb_paramc_get(self._c)
 * 
 *     def param(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a specific parameter from this SVCB record.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostSVCB.param", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperHostSVCB_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperHostSVCB_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperHostSVCB_10__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostSVCB.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperHostSVCB_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperHostSVCB_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperHostSVCB_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostSVCB.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_15ScamperHostSVCB_12__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHostSVCB *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperHostSVCB_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostSVCB *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostSVCB.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6429
 *     cdef cscamper_host.scamper_host_rr_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_13ScamperHostRR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_13ScamperHostRR_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR___init__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_13ScamperHostRR___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":6430
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6430, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 6430, __pyx_L1_error)

  /* "scamper.pyx":6429
 *     cdef cscamper_host.scamper_host_rr_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostRR.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6432
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_13ScamperHostRR_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_13ScamperHostRR_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_13ScamperHostRR_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_13ScamperHostRR_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":6433
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6434
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
    scamper_host_rr_free(__pyx_v_self->_c);

    /* "scamper.pyx":6433
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_rr_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":6432
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_rr_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":6436
 *             cscamper_host.scamper_host_rr_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char qclass[128]
 *         cdef char qtype[128]
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_4__str__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_4__str__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  char __pyx_v_qclass[0x80];
  char __pyx_v_qtype[0x80];
  char const *__pyx_v_name;
  uint16_t __pyx_v_class_n;
  uint16_t __pyx_v_type_n;
  uint32_t __pyx_v_ttl;
  scamper_addr_t *__pyx_v_sa;
  char const *__pyx_v_rrstr;
  scamper_host_rr_mx_t *__pyx_v_mx;
  scamper_host_rr_soa_t *__pyx_v_soa;
  scamper_host_rr_txt_t *__pyx_v_txt;
  PyObject *__pyx_v_x = NULL;
  uint16_t __pyx_v_mx_pref;
  char const *__pyx_v_mx_exch;
  char const *__pyx_v_soa_mname;
  char const *__pyx_v_soa_rname;
  uint32_t __pyx_v_soa_serial;
  uint32_t __pyx_v_soa_refresh;
  uint32_t __pyx_v_soa_retry;
  uint32_t __pyx_v_soa_expire;
  uint32_t __pyx_v_soa_minimum;
  uint16_t __pyx_v_txt_strc;
  uint16_t __pyx_v_i;
  char const *__pyx_v_txt_str;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  uint16_t __pyx_t_13;
  uint16_t __pyx_t_14;
  uint16_t __pyx_t_15;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":6443
 *         cdef uint32_t ttl
 * 
 *         name = cscamper_host.scamper_host_rr_name_get(self._c)             # <<<<<<<<<<<<<<
 *         class_n = cscamper_host.scamper_host_rr_class_get(self._c)
 *         type_n = cscamper_host.scamper_host_rr_type_get(self._c)
*/
  __pyx_v_name = scamper_host_rr_name_get(__pyx_v_self->_c);

  /* "scamper.pyx":6444
 * 
 *         name = cscamper_host.scamper_host_rr_name_get(self._c)
 *         class_n = cscamper_host.scamper_host_rr_class_get(self._c)             # <<<<<<<<<<<<<<
 *         type_n = cscamper_host.scamper_host_rr_type_get(self._c)
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
*/
  __pyx_v_class_n = scamper_host_rr_class_get(__pyx_v_self->_c);

  /* "scamper.pyx":6445
 *         name = cscamper_host.scamper_host_rr_name_get(self._c)
 *         class_n = cscamper_host.scamper_host_rr_class_get(self._c)
 *         type_n = cscamper_host.scamper_host_rr_type_get(self._c)             # <<<<<<<<<<<<<<
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
 *         cscamper_host.scamper_host_qclass_tostr(class_n, qclass, sizeof(qclass))
*/
  __pyx_v_type_n = scamper_host_rr_type_get(__pyx_v_self->_c);

  /* "scamper.pyx":6446
 *         class_n = cscamper_host.scamper_host_rr_class_get(self._c)
 *         type_n = cscamper_host.scamper_host_rr_type_get(self._c)
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)             # <<<<<<<<<<<<<<
 *         cscamper_host.scamper_host_qclass_tostr(class_n, qclass, sizeof(qclass))
 *         cscamper_host.scamper_host_qtype_tostr(type_n, qtype, sizeof(qtype))
*/
  __pyx_v_ttl = scamper_host_rr_ttl_get(__pyx_v_self->_c);

  /* "scamper.pyx":6447
 *         type_n = cscamper_host.scamper_host_rr_type_get(self._c)
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
 *         cscamper_host.scamper_host_qclass_tostr(class_n, qclass, sizeof(qclass))             # <<<<<<<<<<<<<<
 *         cscamper_host.scamper_host_qtype_tostr(type_n, qtype, sizeof(qtype))
 * 
*/
  (void)(scamper_host_qclass_tostr(__pyx_v_class_n, __pyx_v_qclass, (sizeof(__pyx_v_qclass))));

  /* "scamper.pyx":6448
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
 *         cscamper_host.scamper_host_qclass_tostr(class_n, qclass, sizeof(qclass))
 *         cscamper_host.scamper_host_qtype_tostr(type_n, qtype, sizeof(qtype))             # <<<<<<<<<<<<<<
 * 
 *         sa = cscamper_host.scamper_host_rr_addr_get(self._c)
*/
  (void)(scamper_host_qtype_tostr(__pyx_v_type_n, __pyx_v_qtype, (sizeof(__pyx_v_qtype))));

  /* "scamper.pyx":6450
 *         cscamper_host.scamper_host_qtype_tostr(type_n, qtype, sizeof(qtype))
 * 
 *         sa = cscamper_host.scamper_host_rr_addr_get(self._c)             # <<<<<<<<<<<<<<
 *         rrstr = cscamper_host.scamper_host_rr_str_get(self._c)
 *         mx = cscamper_host.scamper_host_rr_mx_get(self._c)
*/
  __pyx_v_sa = scamper_host_rr_addr_get(__pyx_v_self->_c);

  /* "scamper.pyx":6451
 * 
 *         sa = cscamper_host.scamper_host_rr_addr_get(self._c)
 *         rrstr = cscamper_host.scamper_host_rr_str_get(self._c)             # <<<<<<<<<<<<<<
 *         mx = cscamper_host.scamper_host_rr_mx_get(self._c)
 *         soa = cscamper_host.scamper_host_rr_soa_get(self._c)
*/
  __pyx_v_rrstr = scamper_host_rr_str_get(__pyx_v_self->_c);

  /* "scamper.pyx":6452
 *         sa = cscamper_host.scamper_host_rr_addr_get(self._c)
 *         rrstr = cscamper_host.scamper_host_rr_str_get(self._c)
 *         mx = cscamper_host.scamper_host_rr_mx_get(self._c)             # <<<<<<<<<<<<<<
 *         soa = cscamper_host.scamper_host_rr_soa_get(self._c)
 *         txt = cscamper_host.scamper_host_rr_txt_get(self._c)
*/
  __pyx_v_mx = scamper_host_rr_mx_get(__pyx_v_self->_c);

  /* "scamper.pyx":6453
 *         rrstr = cscamper_host.scamper_host_rr_str_get(self._c)
 *         mx = cscamper_host.scamper_host_rr_mx_get(self._c)
 *         soa = cscamper_host.scamper_host_rr_soa_get(self._c)             # <<<<<<<<<<<<<<
 *         txt = cscamper_host.scamper_host_rr_txt_get(self._c)
 *         if sa != NULL:
*/
  __pyx_v_soa = scamper_host_rr_soa_get(__pyx_v_self->_c);

  /* "scamper.pyx":6454
 *         mx = cscamper_host.scamper_host_rr_mx_get(self._c)
 *         soa = cscamper_host.scamper_host_rr_soa_get(self._c)
 *         txt = cscamper_host.scamper_host_rr_txt_get(self._c)             # <<<<<<<<<<<<<<
 *         if sa != NULL:
 *             x = str(ScamperAddr.from_ptr(sa))
*/
  __pyx_v_txt = scamper_host_rr_txt_get(__pyx_v_self->_c);

  /* "scamper.pyx":6455
 *         soa = cscamper_host.scamper_host_rr_soa_get(self._c)
 *         txt = cscamper_host.scamper_host_rr_txt_get(self._c)
 *         if sa != NULL:             # <<<<<<<<<<<<<<
 *             x = str(ScamperAddr.from_ptr(sa))
 *         elif rrstr != NULL:
*/
  __pyx_t_1 = (__pyx_v_sa != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6456
 *         txt = cscamper_host.scamper_host_rr_txt_get(self._c)
 *         if sa != NULL:
 *             x = str(ScamperAddr.from_ptr(sa))             # <<<<<<<<<<<<<<
 *         elif rrstr != NULL:
 *             x = rrstr.decode('UTF-8', 'strict')
*/
    __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_sa)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6456, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_x = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":6455
 *         soa = cscamper_host.scamper_host_rr_soa_get(self._c)
 *         txt = cscamper_host.scamper_host_rr_txt_get(self._c)
 *         if sa != NULL:             # <<<<<<<<<<<<<<
 *             x = str(ScamperAddr.from_ptr(sa))
 *         elif rrstr != NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":6457
 *         if sa != NULL:
 *             x = str(ScamperAddr.from_ptr(sa))
 *         elif rrstr != NULL:             # <<<<<<<<<<<<<<
 *             x = rrstr.decode('UTF-8', 'strict')
 *         elif mx != NULL:
*/
  __pyx_t_1 = (__pyx_v_rrstr != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6458
 *             x = str(ScamperAddr.from_ptr(sa))
 *         elif rrstr != NULL:
 *             x = rrstr.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         elif mx != NULL:
 *             mx_pref = cscamper_host.scamper_host_rr_mx_preference_get(mx)
*/
    __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_rrstr); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6458, __pyx_L1_error)
    __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_rrstr, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6458, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_x = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":6457
 *         if sa != NULL:
 *             x = str(ScamperAddr.from_ptr(sa))
 *         elif rrstr != NULL:             # <<<<<<<<<<<<<<
 *             x = rrstr.decode('UTF-8', 'strict')
 *         elif mx != NULL:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":6459
 *         elif rrstr != NULL:
 *             x = rrstr.decode('UTF-8', 'strict')
 *         elif mx != NULL:             # <<<<<<<<<<<<<<
 *             mx_pref = cscamper_host.scamper_host_rr_mx_preference_get(mx)
 *             mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(mx)
*/
  __pyx_t_1 = (__pyx_v_mx != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6460
 *             x = rrstr.decode('UTF-8', 'strict')
 *         elif mx != NULL:
 *             mx_pref = cscamper_host.scamper_host_rr_mx_preference_get(mx)             # <<<<<<<<<<<<<<
 *             mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(mx)
 *             x = "{} {}".format(mx_pref, mx_exch.decode('UTF-8', 'strict'))
*/
    __pyx_v_mx_pref = scamper_host_rr_mx_preference_get(__pyx_v_mx);

    /* "scamper.pyx":6461
 *         elif mx != NULL:
 *             mx_pref = cscamper_host.scamper_host_rr_mx_preference_get(mx)
 *             mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(mx)             # <<<<<<<<<<<<<<
 *             x = "{} {}".format(mx_pref, mx_exch.decode('UTF-8', 'strict'))
 *         elif soa != NULL:
*/
    __pyx_v_mx_exch = scamper_host_rr_mx_exchange_get(__pyx_v_mx);

    /* "scamper.pyx":6462
 *             mx_pref = cscamper_host.scamper_host_rr_mx_preference_get(mx)
 *             mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(mx)
 *             x = "{} {}".format(mx_pref, mx_exch.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *         elif soa != NULL:
 *             soa_mname = cscamper_host.scamper_host_rr_soa_mname_get(soa)
*/
    __pyx_t_2 = __pyx_mstate_global->__pyx_kp_u__14;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyLong_From_uint16_t(__pyx_v_mx_pref); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_mx_exch); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6462, __pyx_L1_error)
    __pyx_t_6 = __Pyx_decode_c_string(__pyx_v_mx_exch, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6462, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_t_5, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6462, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_x = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":6459
 *         elif rrstr != NULL:
 *             x = rrstr.decode('UTF-8', 'strict')
 *         elif mx != NULL:             # <<<<<<<<<<<<<<
 *             mx_pref = cscamper_host.scamper_host_rr_mx_preference_get(mx)
 *             mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(mx)
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":6463
 *             mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(mx)
 *             x = "{} {}".format(mx_pref, mx_exch.decode('UTF-8', 'strict'))
 *         elif soa != NULL:             # <<<<<<<<<<<<<<
 *             soa_mname = cscamper_host.scamper_host_rr_soa_mname_get(soa)
 *             soa_rname = cscamper_host.scamper_host_rr_soa_rname_get(soa)
*/
  __pyx_t_1 = (__pyx_v_soa != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6464
 *             x = "{} {}".format(mx_pref, mx_exch.decode('UTF-8', 'strict'))
 *         elif soa != NULL:
 *             soa_mname = cscamper_host.scamper_host_rr_soa_mname_get(soa)             # <<<<<<<<<<<<<<
 *             soa_rname = cscamper_host.scamper_host_rr_soa_rname_get(soa)
 *             soa_serial = cscamper_host.scamper_host_rr_soa_serial_get(soa)
*/
    __pyx_v_soa_mname = scamper_host_rr_soa_mname_get(__pyx_v_soa);

    /* "scamper.pyx":6465
 *         elif soa != NULL:
 *             soa_mname = cscamper_host.scamper_host_rr_soa_mname_get(soa)
 *             soa_rname = cscamper_host.scamper_host_rr_soa_rname_get(soa)             # <<<<<<<<<<<<<<
 *             soa_serial = cscamper_host.scamper_host_rr_soa_serial_get(soa)
 *             soa_refresh = cscamper_host.scamper_host_rr_soa_refresh_get(soa)
*/
    __pyx_v_soa_rname = scamper_host_rr_soa_rname_get(__pyx_v_soa);

    /* "scamper.pyx":6466
 *             soa_mname = cscamper_host.scamper_host_rr_soa_mname_get(soa)
 *             soa_rname = cscamper_host.scamper_host_rr_soa_rname_get(soa)
 *             soa_serial = cscamper_host.scamper_host_rr_soa_serial_get(soa)             # <<<<<<<<<<<<<<
 *             soa_refresh = cscamper_host.scamper_host_rr_soa_refresh_get(soa)
 *             soa_retry = cscamper_host.scamper_host_rr_soa_retry_get(soa)
*/
    __pyx_v_soa_serial = scamper_host_rr_soa_serial_get(__pyx_v_soa);

    /* "scamper.pyx":6467
 *             soa_rname = cscamper_host.scamper_host_rr_soa_rname_get(soa)
 *             soa_serial = cscamper_host.scamper_host_rr_soa_serial_get(soa)
 *             soa_refresh = cscamper_host.scamper_host_rr_soa_refresh_get(soa)             # <<<<<<<<<<<<<<
 *             soa_retry = cscamper_host.scamper_host_rr_soa_retry_get(soa)
 *             soa_expire = cscamper_host.scamper_host_rr_soa_expire_get(soa)
*/
    __pyx_v_soa_refresh = scamper_host_rr_soa_refresh_get(__pyx_v_soa);

    /* "scamper.pyx":6468
 *             soa_serial = cscamper_host.scamper_host_rr_soa_serial_get(soa)
 *             soa_refresh = cscamper_host.scamper_host_rr_soa_refresh_get(soa)
 *             soa_retry = cscamper_host.scamper_host_rr_soa_retry_get(soa)             # <<<<<<<<<<<<<<
 *             soa_expire = cscamper_host.scamper_host_rr_soa_expire_get(soa)
 *             soa_minimum = cscamper_host.scamper_host_rr_soa_minimum_get(soa)
*/
    __pyx_v_soa_retry = scamper_host_rr_soa_retry_get(__pyx_v_soa);

    /* "scamper.pyx":6469
 *             soa_refresh = cscamper_host.scamper_host_rr_soa_refresh_get(soa)
 *             soa_retry = cscamper_host.scamper_host_rr_soa_retry_get(soa)
 *             soa_expire = cscamper_host.scamper_host_rr_soa_expire_get(soa)             # <<<<<<<<<<<<<<
 *             soa_minimum = cscamper_host.scamper_host_rr_soa_minimum_get(soa)
 *             x = "{} {} {} {} {} {} {}".format(soa_mname.decode('UTF-8',
*/
    __pyx_v_soa_expire = scamper_host_rr_soa_expire_get(__pyx_v_soa);

    /* "scamper.pyx":6470
 *             soa_retry = cscamper_host.scamper_host_rr_soa_retry_get(soa)
 *             soa_expire = cscamper_host.scamper_host_rr_soa_expire_get(soa)
 *             soa_minimum = cscamper_host.scamper_host_rr_soa_minimum_get(soa)             # <<<<<<<<<<<<<<
 *             x = "{} {} {} {} {} {} {}".format(soa_mname.decode('UTF-8',
 *                                                                'strict'),
*/
    __pyx_v_soa_minimum = scamper_host_rr_soa_minimum_get(__pyx_v_soa);

    /* "scamper.pyx":6471
 *             soa_expire = cscamper_host.scamper_host_rr_soa_expire_get(soa)
 *             soa_minimum = cscamper_host.scamper_host_rr_soa_minimum_get(soa)
 *             x = "{} {} {} {} {} {} {}".format(soa_mname.decode('UTF-8',             # <<<<<<<<<<<<<<
 *                                                                'strict'),
 *                                               soa_rname.decode('UTF-8',
*/
    __pyx_t_6 = __pyx_mstate_global->__pyx_kp_u__15;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_soa_mname); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6471, __pyx_L1_error)
    __pyx_t_5 = __Pyx_decode_c_string(__pyx_v_soa_mname, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6471, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);

    /* "scamper.pyx":6473
 *             x = "{} {} {} {} {} {} {}".format(soa_mname.decode('UTF-8',
 *                                                                'strict'),
 *                                               soa_rname.decode('UTF-8',             # <<<<<<<<<<<<<<
 *                                                                'strict'),
 *                                               soa_serial, soa_refresh,
*/
    __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_soa_rname); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6473, __pyx_L1_error)
    __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_soa_rname, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);

    /* "scamper.pyx":6475
 *                                               soa_rname.decode('UTF-8',
 *                                                                'strict'),
 *                                               soa_serial, soa_refresh,             # <<<<<<<<<<<<<<
 *                                               soa_retry, soa_expire,
 *                                               soa_minimum)
*/
    __pyx_t_8 = __Pyx_PyLong_From_uint32_t(__pyx_v_soa_serial); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyLong_From_uint32_t(__pyx_v_soa_refresh); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6475, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);

    /* "scamper.pyx":6476
 *                                                                'strict'),
 *                                               soa_serial, soa_refresh,
 *                                               soa_retry, soa_expire,             # <<<<<<<<<<<<<<
 *                                               soa_minimum)
 *         elif txt != NULL:
*/
    __pyx_t_10 = __Pyx_PyLong_From_uint32_t(__pyx_v_soa_retry); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 6476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = __Pyx_PyLong_From_uint32_t(__pyx_v_soa_expire); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6476, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);

    /* "scamper.pyx":6477
 *                                               soa_serial, soa_refresh,
 *                                               soa_retry, soa_expire,
 *                                               soa_minimum)             # <<<<<<<<<<<<<<
 *         elif txt != NULL:
 *             txt_strc = cscamper_host.scamper_host_rr_txt_strc_get(txt)
*/
    __pyx_t_12 = __Pyx_PyLong_From_uint32_t(__pyx_v_soa_minimum); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6477, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[8] = {__pyx_t_6, __pyx_t_5, __pyx_t_2, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_7, (8-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6471, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_x = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":6463
 *             mx_exch = cscamper_host.scamper_host_rr_mx_exchange_get(mx)
 *             x = "{} {}".format(mx_pref, mx_exch.decode('UTF-8', 'strict'))
 *         elif soa != NULL:             # <<<<<<<<<<<<<<
 *             soa_mname = cscamper_host.scamper_host_rr_soa_mname_get(soa)
 *             soa_rname = cscamper_host.scamper_host_rr_soa_rname_get(soa)
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":6478
 *                                               soa_retry, soa_expire,
 *                                               soa_minimum)
 *         elif txt != NULL:             # <<<<<<<<<<<<<<
 *             txt_strc = cscamper_host.scamper_host_rr_txt_strc_get(txt)
 *             x = ""
*/
  __pyx_t_1 = (__pyx_v_txt != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6479
 *                                               soa_minimum)
 *         elif txt != NULL:
 *             txt_strc = cscamper_host.scamper_host_rr_txt_strc_get(txt)             # <<<<<<<<<<<<<<
 *             x = ""
 *             for i in range(txt_strc):
*/
    __pyx_v_txt_strc = scamper_host_rr_txt_strc_get(__pyx_v_txt);

    /* "scamper.pyx":6480
 *         elif txt != NULL:
 *             txt_strc = cscamper_host.scamper_host_rr_txt_strc_get(txt)
 *             x = ""             # <<<<<<<<<<<<<<
 *             for i in range(txt_strc):
 *                 txt_str = cscamper_host.scamper_host_rr_txt_str_get(txt, i)
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__4);
    __pyx_v_x = __pyx_mstate_global->__pyx_kp_u__4;

    /* "scamper.pyx":6481
 *             txt_strc = cscamper_host.scamper_host_rr_txt_strc_get(txt)
 *             x = ""
 *             for i in range(txt_strc):             # <<<<<<<<<<<<<<
 *                 txt_str = cscamper_host.scamper_host_rr_txt_str_get(txt, i)
 *                 if txt_str != NULL:
*/
    __pyx_t_13 = __pyx_v_txt_strc;
    __pyx_t_14 = __pyx_t_13;
    for (__pyx_t_15 = 0; __pyx_t_15 < __pyx_t_14; __pyx_t_15+=1) {
      __pyx_v_i = __pyx_t_15;

      /* "scamper.pyx":6482
 *             x = ""
 *             for i in range(txt_strc):
 *                 txt_str = cscamper_host.scamper_host_rr_txt_str_get(txt, i)             # <<<<<<<<<<<<<<
 *                 if txt_str != NULL:
 *                     if x != "":
*/
      __pyx_v_txt_str = scamper_host_rr_txt_str_get(__pyx_v_txt, __pyx_v_i);

      /* "scamper.pyx":6483
 *             for i in range(txt_strc):
 *                 txt_str = cscamper_host.scamper_host_rr_txt_str_get(txt, i)
 *                 if txt_str != NULL:             # <<<<<<<<<<<<<<
 *                     if x != "":
 *                         x = x + " "
*/
      __pyx_t_1 = (__pyx_v_txt_str != NULL);
      if (__pyx_t_1) {

        /* "scamper.pyx":6484
 *                 txt_str = cscamper_host.scamper_host_rr_txt_str_get(txt, i)
 *                 if txt_str != NULL:
 *                     if x != "":             # <<<<<<<<<<<<<<
 *                         x = x + " "
 *                     x = x + "\"" + txt_str.decode('UTF-8', 'strict') + "\""
*/
        __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_x, __pyx_mstate_global->__pyx_kp_u__4, Py_NE)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 6484, __pyx_L1_error)
        if (__pyx_t_1) {

          /* "scamper.pyx":6485
 *                 if txt_str != NULL:
 *                     if x != "":
 *                         x = x + " "             # <<<<<<<<<<<<<<
 *                     x = x + "\"" + txt_str.decode('UTF-8', 'strict') + "\""
 *         else:
*/
          __pyx_t_3 = PyNumber_Add(__pyx_v_x, __pyx_mstate_global->__pyx_kp_u__3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6485, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_3);
          __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_3);
          __pyx_t_3 = 0;

          /* "scamper.pyx":6484
 *                 txt_str = cscamper_host.scamper_host_rr_txt_str_get(txt, i)
 *                 if txt_str != NULL:
 *                     if x != "":             # <<<<<<<<<<<<<<
 *                         x = x + " "
 *                     x = x + "\"" + txt_str.decode('UTF-8', 'strict') + "\""
*/
        }

        /* "scamper.pyx":6486
 *                     if x != "":
 *                         x = x + " "
 *                     x = x + "\"" + txt_str.decode('UTF-8', 'strict') + "\""             # <<<<<<<<<<<<<<
 *         else:
 *             x = "not implemented"
*/
        __pyx_t_3 = PyNumber_Add(__pyx_v_x, __pyx_mstate_global->__pyx_kp_u__16); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6486, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_txt_str); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6486, __pyx_L1_error)
        __pyx_t_12 = __Pyx_decode_c_string(__pyx_v_txt_str, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6486, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __pyx_t_11 = PyNumber_Add(__pyx_t_3, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6486, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
        __pyx_t_12 = PyNumber_Add(__pyx_t_11, __pyx_mstate_global->__pyx_kp_u__16); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6486, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_12);
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF_SET(__pyx_v_x, __pyx_t_12);
        __pyx_t_12 = 0;

        /* "scamper.pyx":6483
 *             for i in range(txt_strc):
 *                 txt_str = cscamper_host.scamper_host_rr_txt_str_get(txt, i)
 *                 if txt_str != NULL:             # <<<<<<<<<<<<<<
 *                     if x != "":
 *                         x = x + " "
*/
      }
    }

    /* "scamper.pyx":6478
 *                                               soa_retry, soa_expire,
 *                                               soa_minimum)
 *         elif txt != NULL:             # <<<<<<<<<<<<<<
 *             txt_strc = cscamper_host.scamper_host_rr_txt_strc_get(txt)
 *             x = ""
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":6488
 *                     x = x + "\"" + txt_str.decode('UTF-8', 'strict') + "\""
 *         else:
 *             x = "not implemented"             # <<<<<<<<<<<<<<
 * 
 *         out = "{} {} {} {} {}".format(name.decode('UTF-8', 'strict'), ttl,
*/
  /*else*/ {
    __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_not_implemented);
    __pyx_v_x = __pyx_mstate_global->__pyx_kp_u_not_implemented;
  }
  __pyx_L3:;

  /* "scamper.pyx":6490
 *             x = "not implemented"
 * 
 *         out = "{} {} {} {} {}".format(name.decode('UTF-8', 'strict'), ttl,             # <<<<<<<<<<<<<<
 *                                       qclass.decode('UTF-8', 'strict'),
 *                                       qtype.decode('UTF-8', 'strict'), x)
*/
  __pyx_t_11 = __pyx_mstate_global->__pyx_kp_u__17;
  __Pyx_INCREF(__pyx_t_11);
  __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_name); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6490, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_name, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_10 = __Pyx_PyLong_From_uint32_t(__pyx_v_ttl); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 6490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);

  /* "scamper.pyx":6491
 * 
 *         out = "{} {} {} {} {}".format(name.decode('UTF-8', 'strict'), ttl,
 *                                       qclass.decode('UTF-8', 'strict'),             # <<<<<<<<<<<<<<
 *                                       qtype.decode('UTF-8', 'strict'), x)
 * 
*/
  __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_qclass); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6491, __pyx_L1_error)
  __pyx_t_9 = __Pyx_decode_c_string(__pyx_v_qclass, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);

  /* "scamper.pyx":6492
 *         out = "{} {} {} {} {}".format(name.decode('UTF-8', 'strict'), ttl,
 *                                       qclass.decode('UTF-8', 'strict'),
 *                                       qtype.decode('UTF-8', 'strict'), x)             # <<<<<<<<<<<<<<
 * 
 *         return out
*/
  __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_qtype); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6492, __pyx_L1_error)
  __pyx_t_8 = __Pyx_decode_c_string(__pyx_v_qtype, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6492, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[6] = {__pyx_t_11, __pyx_t_3, __pyx_t_10, __pyx_t_9, __pyx_t_8, __pyx_v_x};
    __pyx_t_12 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_format, __pyx_callargs+__pyx_t_7, (6-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6490, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_12);
  }
  __pyx_v_out = ((PyObject*)__pyx_t_12);
  __pyx_t_12 = 0;

  /* "scamper.pyx":6494
 *                                       qtype.decode('UTF-8', 'strict'), x)
 * 
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":6436
 *             cscamper_host.scamper_host_rr_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         cdef char qclass[128]
 *         cdef char qtype[128]
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("scamper.ScamperHostRR.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_x);
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6496
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostRR from_ptr(cscamper_host.scamper_host_rr_t *ptr):
 *         cdef ScamperHostRR rr
*/

static struct __pyx_obj_7scamper_ScamperHostRR *__pyx_f_7scamper_13ScamperHostRR_from_ptr(scamper_host_rr_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_rr = 0;
  struct __pyx_obj_7scamper_ScamperHostRR *__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("from_ptr", 0);

  /* "scamper.pyx":6499
 *     cdef ScamperHostRR from_ptr(cscamper_host.scamper_host_rr_t *ptr):
 *         cdef ScamperHostRR rr
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         rr = ScamperHostRR.__new__(ScamperHostRR)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6500
 *         cdef ScamperHostRR rr
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         rr = ScamperHostRR.__new__(ScamperHostRR)
 *         rr._c = cscamper_host.scamper_host_rr_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperHostRR *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6499
 *     cdef ScamperHostRR from_ptr(cscamper_host.scamper_host_rr_t *ptr):
 *         cdef ScamperHostRR rr
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         rr = ScamperHostRR.__new__(ScamperHostRR)
*/
  }

  /* "scamper.pyx":6501
 *         if ptr == NULL:
 *             return None
 *         rr = ScamperHostRR.__new__(ScamperHostRR)             # <<<<<<<<<<<<<<
 *         rr._c = cscamper_host.scamper_host_rr_use(ptr)
 *         return rr
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHostRR(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostRR), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6501, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_rr = ((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":6502
 *             return None
 *         rr = ScamperHostRR.__new__(ScamperHostRR)
 *         rr._c = cscamper_host.scamper_host_rr_use(ptr)             # <<<<<<<<<<<<<<
 *         return rr
 * 
*/
  __pyx_v_rr->_c = scamper_host_rr_use(__pyx_v_ptr);

  /* "scamper.pyx":6503
 *         rr = ScamperHostRR.__new__(ScamperHostRR)
 *         rr._c = cscamper_host.scamper_host_rr_use(ptr)
 *         return rr             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_rr);
  __pyx_r = __pyx_v_rr;
  goto __pyx_L0;

  /* "scamper.pyx":6496
 *         return out
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostRR from_ptr(cscamper_host.scamper_host_rr_t *ptr):
 *         cdef ScamperHostRR rr
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostRR.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_rr);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6505
 *         return rr
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rclass(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_6rclass_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_6rclass_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_6rclass___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_6rclass___get__(struct __pyx_obj_7scamper_ScamperHostRR *__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("__get__", 0);

  /* "scamper.pyx":6513
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_class_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_class_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6513, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6505
 *         return rr
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rclass(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostRR.rclass.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6515
 *         return cscamper_host.scamper_host_rr_class_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtype(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_5rtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_5rtype_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_5rtype___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_5rtype___get__(struct __pyx_obj_7scamper_ScamperHostRR *__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("__get__", 0);

  /* "scamper.pyx":6523
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_type_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_type_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6523, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6515
 *         return cscamper_host.scamper_host_rr_class_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtype(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostRR.rtype.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6525
 *         return cscamper_host.scamper_host_rr_type_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_3ttl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_3ttl_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_3ttl___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_3ttl___get__(struct __pyx_obj_7scamper_ScamperHostRR *__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("__get__", 0);

  /* "scamper.pyx":6533
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_rr_ttl_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6533, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6525
 *         return cscamper_host.scamper_host_rr_type_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostRR.ttl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6535
 *         return cscamper_host.scamper_host_rr_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_4name___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_4name___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  char const *__pyx_v_name;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6543
 *         :rtype: string
 *         """
 *         name = cscamper_host.scamper_host_rr_name_get(self._c)             # <<<<<<<<<<<<<<
 *         if name == NULL:
 *             return None
*/
  __pyx_v_name = scamper_host_rr_name_get(__pyx_v_self->_c);

  /* "scamper.pyx":6544
 *         """
 *         name = cscamper_host.scamper_host_rr_name_get(self._c)
 *         if name == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return name.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_name == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6545
 *         name = cscamper_host.scamper_host_rr_name_get(self._c)
 *         if name == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return name.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6544
 *         """
 *         name = cscamper_host.scamper_host_rr_name_get(self._c)
 *         if name == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return name.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":6546
 *         if name == NULL:
 *             return None
 *         return name.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_name); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6546, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_name, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6546, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6535
 *         return cscamper_host.scamper_host_rr_ttl_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostRR.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6548
 *         return name.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def addr(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_4addr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_4addr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_4addr___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_4addr___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  scamper_addr_t *__pyx_v_sa;
  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("__get__", 0);

  /* "scamper.pyx":6557
 *         :rtype: ScamperAddr
 *         """
 *         sa = cscamper_host.scamper_host_rr_addr_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(sa)
 * 
*/
  __pyx_v_sa = scamper_host_rr_addr_get(__pyx_v_self->_c);

  /* "scamper.pyx":6558
 *         """
 *         sa = cscamper_host.scamper_host_rr_addr_get(self._c)
 *         return ScamperAddr.from_ptr(sa)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_sa)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6558, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6548
 *         return name.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def addr(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostRR.addr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6560
 *         return ScamperAddr.from_ptr(sa)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ns(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_2ns_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_2ns_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_2ns___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_2ns___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  uint16_t __pyx_v_cls;
  uint16_t __pyx_v_typ;
  char const *__pyx_v_x;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6568
 *         :rtype: string
 *         """
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)             # <<<<<<<<<<<<<<
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.NS:
*/
  __pyx_v_cls = scamper_host_rr_class_get(__pyx_v_self->_c);

  /* "scamper.pyx":6569
 *         """
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)             # <<<<<<<<<<<<<<
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.NS:
 *             return None
*/
  __pyx_v_typ = scamper_host_rr_type_get(__pyx_v_self->_c);

  /* "scamper.pyx":6570
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.NS:             # <<<<<<<<<<<<<<
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SCAMPER_HOST_CLASS_IN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_5) {
  } else {
    __pyx_t_1 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyLong_From_uint16_t(__pyx_v_typ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperHostType); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_NS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6570, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6570, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_1 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":6571
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.NS:
 *             return None             # <<<<<<<<<<<<<<
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
 *         return x.decode('UTF-8', 'strict')
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6570
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.NS:             # <<<<<<<<<<<<<<
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
*/
  }

  /* "scamper.pyx":6572
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.NS:
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)             # <<<<<<<<<<<<<<
 *         return x.decode('UTF-8', 'strict')
 * 
*/
  __pyx_v_x = scamper_host_rr_str_get(__pyx_v_self->_c);

  /* "scamper.pyx":6573
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
 *         return x.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __Pyx_ssize_strlen(__pyx_v_x); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6573, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_x, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6560
 *         return ScamperAddr.from_ptr(sa)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ns(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperHostRR.ns.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6575
 *         return x.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cname(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_5cname_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_5cname_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_5cname___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_5cname___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  uint16_t __pyx_v_cls;
  uint16_t __pyx_v_typ;
  char const *__pyx_v_x;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6583
 *         :rtype: string
 *         """
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)             # <<<<<<<<<<<<<<
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.CNAME:
*/
  __pyx_v_cls = scamper_host_rr_class_get(__pyx_v_self->_c);

  /* "scamper.pyx":6584
 *         """
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)             # <<<<<<<<<<<<<<
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.CNAME:
 *             return None
*/
  __pyx_v_typ = scamper_host_rr_type_get(__pyx_v_self->_c);

  /* "scamper.pyx":6585
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.CNAME:             # <<<<<<<<<<<<<<
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SCAMPER_HOST_CLASS_IN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_5) {
  } else {
    __pyx_t_1 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyLong_From_uint16_t(__pyx_v_typ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperHostType); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_CNAME); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6585, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_1 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":6586
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.CNAME:
 *             return None             # <<<<<<<<<<<<<<
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
 *         return x.decode('UTF-8', 'strict')
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6585
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.CNAME:             # <<<<<<<<<<<<<<
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
*/
  }

  /* "scamper.pyx":6587
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.CNAME:
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)             # <<<<<<<<<<<<<<
 *         return x.decode('UTF-8', 'strict')
 * 
*/
  __pyx_v_x = scamper_host_rr_str_get(__pyx_v_self->_c);

  /* "scamper.pyx":6588
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
 *         return x.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __Pyx_ssize_strlen(__pyx_v_x); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6588, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_x, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6588, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6575
 *         return x.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cname(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperHostRR.cname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6590
 *         return x.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ptr(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_3ptr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_3ptr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_3ptr___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_3ptr___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  uint16_t __pyx_v_cls;
  uint16_t __pyx_v_typ;
  char const *__pyx_v_x;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6598
 *         :rtype: string
 *         """
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)             # <<<<<<<<<<<<<<
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.PTR:
*/
  __pyx_v_cls = scamper_host_rr_class_get(__pyx_v_self->_c);

  /* "scamper.pyx":6599
 *         """
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)             # <<<<<<<<<<<<<<
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.PTR:
 *             return None
*/
  __pyx_v_typ = scamper_host_rr_type_get(__pyx_v_self->_c);

  /* "scamper.pyx":6600
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.PTR:             # <<<<<<<<<<<<<<
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_cls); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SCAMPER_HOST_CLASS_IN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_NE); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_5) {
  } else {
    __pyx_t_1 = __pyx_t_5;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_4 = __Pyx_PyLong_From_uint16_t(__pyx_v_typ); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperHostType); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_PTR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6600, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_4, __pyx_t_2, Py_NE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 6600, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_1 = __pyx_t_5;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":6601
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.PTR:
 *             return None             # <<<<<<<<<<<<<<
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
 *         return x.decode('UTF-8', 'strict')
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6600
 *         cls = cscamper_host.scamper_host_rr_class_get(self._c)
 *         typ = cscamper_host.scamper_host_rr_type_get(self._c)
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.PTR:             # <<<<<<<<<<<<<<
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
*/
  }

  /* "scamper.pyx":6602
 *         if cls != SCAMPER_HOST_CLASS_IN or typ != ScamperHostType.PTR:
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)             # <<<<<<<<<<<<<<
 *         return x.decode('UTF-8', 'strict')
 * 
*/
  __pyx_v_x = scamper_host_rr_str_get(__pyx_v_self->_c);

  /* "scamper.pyx":6603
 *             return None
 *         x = cscamper_host.scamper_host_rr_str_get(self._c)
 *         return x.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __Pyx_ssize_strlen(__pyx_v_x); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6603, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_x, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6590
 *         return x.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ptr(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperHostRR.ptr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6605
 *         return x.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_2mx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_2mx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_2mx___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_2mx___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  scamper_host_rr_mx_t *__pyx_v_mx;
  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("__get__", 0);

  /* "scamper.pyx":6613
 *         :rtype: ScamperHostMX
 *         """
 *         mx = cscamper_host.scamper_host_rr_mx_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperHostMX.from_ptr(mx)
 * 
*/
  __pyx_v_mx = scamper_host_rr_mx_get(__pyx_v_self->_c);

  /* "scamper.pyx":6614
 *         """
 *         mx = cscamper_host.scamper_host_rr_mx_get(self._c)
 *         return ScamperHostMX.from_ptr(mx)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_13ScamperHostMX_from_ptr(__pyx_v_mx)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6605
 *         return x.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def mx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostRR.mx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6616
 *         return ScamperHostMX.from_ptr(mx)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def soa(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_3soa_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_3soa_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_3soa___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_3soa___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  scamper_host_rr_soa_t *__pyx_v_soa;
  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("__get__", 0);

  /* "scamper.pyx":6624
 *         :rtype: ScamperHostSOA
 *         """
 *         soa = cscamper_host.scamper_host_rr_soa_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperHostSOA.from_ptr(soa)
 * 
*/
  __pyx_v_soa = scamper_host_rr_soa_get(__pyx_v_self->_c);

  /* "scamper.pyx":6625
 *         """
 *         soa = cscamper_host.scamper_host_rr_soa_get(self._c)
 *         return ScamperHostSOA.from_ptr(soa)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_14ScamperHostSOA_from_ptr(__pyx_v_soa)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6616
 *         return ScamperHostMX.from_ptr(mx)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def soa(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostRR.soa.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6627
 *         return ScamperHostSOA.from_ptr(soa)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def txt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_3txt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_3txt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_3txt___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_3txt___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  scamper_host_rr_txt_t *__pyx_v_txt;
  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("__get__", 0);

  /* "scamper.pyx":6635
 *         :rtype: ScamperHostTXT
 *         """
 *         txt = cscamper_host.scamper_host_rr_txt_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperHostTXT.from_ptr(txt)
 * 
*/
  __pyx_v_txt = scamper_host_rr_txt_get(__pyx_v_self->_c);

  /* "scamper.pyx":6636
 *         """
 *         txt = cscamper_host.scamper_host_rr_txt_get(self._c)
 *         return ScamperHostTXT.from_ptr(txt)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_14ScamperHostTXT_from_ptr(__pyx_v_txt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6627
 *         return ScamperHostSOA.from_ptr(soa)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def txt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostRR.txt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6638
 *         return ScamperHostTXT.from_ptr(txt)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def opt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_3opt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_3opt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_3opt___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_3opt___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  scamper_host_rr_opt_t *__pyx_v_opt;
  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("__get__", 0);

  /* "scamper.pyx":6646
 *         :rtype: ScamperHostOPT
 *         """
 *         opt = cscamper_host.scamper_host_rr_opt_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperHostOPT.from_ptr(opt)
 * 
*/
  __pyx_v_opt = scamper_host_rr_opt_get(__pyx_v_self->_c);

  /* "scamper.pyx":6647
 *         """
 *         opt = cscamper_host.scamper_host_rr_opt_get(self._c)
 *         return ScamperHostOPT.from_ptr(opt)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_14ScamperHostOPT_from_ptr(__pyx_v_opt)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6647, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6638
 *         return ScamperHostTXT.from_ptr(txt)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def opt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostRR.opt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6649
 *         return ScamperHostOPT.from_ptr(opt)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def svcb(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_4svcb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_4svcb_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_4svcb___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_4svcb___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  scamper_host_rr_svcb_t *__pyx_v_svcb;
  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("__get__", 0);

  /* "scamper.pyx":6657
 *         :rtype: ScamperHostSVCB
 *         """
 *         svcb = cscamper_host.scamper_host_rr_svcb_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperHostSVCB.from_ptr(svcb)
 * 
*/
  __pyx_v_svcb = scamper_host_rr_svcb_get(__pyx_v_self->_c);

  /* "scamper.pyx":6658
 *         """
 *         svcb = cscamper_host.scamper_host_rr_svcb_get(self._c)
 *         return ScamperHostSVCB.from_ptr(svcb)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_15ScamperHostSVCB_from_ptr(__pyx_v_svcb)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6649
 *         return ScamperHostOPT.from_ptr(opt)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def svcb(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostRR.svcb.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6660
 *         return ScamperHostSVCB.from_ptr(svcb)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def udpsize(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_7udpsize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_7udpsize_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_7udpsize___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_7udpsize___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":6669
 *         :rtype: int
 *         """
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_host.scamper_host_rr_class_get(self._c)
*/
  __pyx_t_1 = (scamper_host_rr_opt_get(__pyx_v_self->_c) == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6670
 *         """
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_host.scamper_host_rr_class_get(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6669
 *         :rtype: int
 *         """
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_host.scamper_host_rr_class_get(self._c)
*/
  }

  /* "scamper.pyx":6671
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:
 *             return None
 *         return cscamper_host.scamper_host_rr_class_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_class_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6671, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6660
 *         return ScamperHostSVCB.from_ptr(svcb)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def udpsize(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostRR.udpsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6673
 *         return cscamper_host.scamper_host_rr_class_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_version(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_12edns_version_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_12edns_version_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_12edns_version___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_12edns_version___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  PyObject *__pyx_v_ttl = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6682
 *         :rtype: int
 *         """
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
*/
  __pyx_t_1 = (scamper_host_rr_opt_get(__pyx_v_self->_c) == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6683
 *         """
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
 *         return ((ttl >> 16) & 0xFF)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6682
 *         :rtype: int
 *         """
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
*/
  }

  /* "scamper.pyx":6684
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)             # <<<<<<<<<<<<<<
 *         return ((ttl >> 16) & 0xFF)
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6684, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ttl = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":6685
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
 *         return ((ttl >> 16) & 0xFF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_RshiftObjC(__pyx_v_ttl, __pyx_mstate_global->__pyx_int_16, 16, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_AndObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_255, 0xFF, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6685, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6673
 *         return cscamper_host.scamper_host_rr_class_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_version(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostRR.edns_version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ttl);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6687
 *         return ((ttl >> 16) & 0xFF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_do(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_7edns_do_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_7edns_do_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_7edns_do___get__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_7edns_do___get__(struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  PyObject *__pyx_v_ttl = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6696
 *         :rtype: bool
 *         """
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
*/
  __pyx_t_1 = (scamper_host_rr_opt_get(__pyx_v_self->_c) == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6697
 *         """
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
 *         if ((ttl >> 15) & 0x1):
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6696
 *         :rtype: bool
 *         """
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
*/
  }

  /* "scamper.pyx":6698
 *         if cscamper_host.scamper_host_rr_opt_get(self._c) == NULL:
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)             # <<<<<<<<<<<<<<
 *         if ((ttl >> 15) & 0x1):
 *             return True
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_ttl_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6698, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ttl = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":6699
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
 *         if ((ttl >> 15) & 0x1):             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_2 = __Pyx_PyLong_RshiftObjC(__pyx_v_ttl, __pyx_mstate_global->__pyx_int_15, 15, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_AndObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_1, 0x1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6699, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 6699, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":6700
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
 *         if ((ttl >> 15) & 0x1):
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":6699
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(self._c)
 *         if ((ttl >> 15) & 0x1):             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":6701
 *         if ((ttl >> 15) & 0x1):
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 * class _ScamperHostRRIterator:
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":6687
 *         return ((ttl >> 16) & 0xFF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_do(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostRR.edns_do.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ttl);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_13ScamperHostRR_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_13ScamperHostRR_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_6__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostRR.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_13ScamperHostRR_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_13ScamperHostRR_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_13ScamperHostRR_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostRR.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_13ScamperHostRR_8__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHostRR *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_13ScamperHostRR_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostRR *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostRR.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6708
 *     interface to iterate over a given section in a DNS response.
 *     """
 *     def __init__(self, query, section, rrtypes):             # <<<<<<<<<<<<<<
 *         """
 *         Construct a _ScamperHostRRIterator object.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22_ScamperHostRRIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_22_ScamperHostRRIterator___init__, "\n        Construct a _ScamperHostRRIterator object.\n\n        :param ScamperHostQuery query: The query to iterate over\n        :param int section: which section (0=an, 1=ns, 2=ar) to return RRs\n        :returns: an initialized iterator\n        :rtype: _ScamperHostRRIterator\n        ");
static PyMethodDef __pyx_mdef_7scamper_22_ScamperHostRRIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22_ScamperHostRRIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_22_ScamperHostRRIterator___init__};
static PyObject *__pyx_pw_7scamper_22_ScamperHostRRIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_query = 0;
  PyObject *__pyx_v_section = 0;
  PyObject *__pyx_v_rrtypes = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_query,&__pyx_mstate_global->__pyx_n_u_section,&__pyx_mstate_global->__pyx_n_u_rrtypes,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6708, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 6708, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 6708, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 6708, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6708, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 6708, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 4; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, i); __PYX_ERR(0, 6708, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 4)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6708, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 6708, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 6708, __pyx_L3_error)
      values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 6708, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_query = values[1];
    __pyx_v_section = values[2];
    __pyx_v_rrtypes = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 4, 4, __pyx_nargs); __PYX_ERR(0, 6708, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperHostRRIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_22_ScamperHostRRIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_query, __pyx_v_section, __pyx_v_rrtypes);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22_ScamperHostRRIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_query, PyObject *__pyx_v_section, PyObject *__pyx_v_rrtypes) {
  PyObject *__pyx_v_rrtype = NULL;
  PyObject *__pyx_v_rrtl = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":6717
 *         :rtype: _ScamperHostRRIterator
 *         """
 *         self._query = query             # <<<<<<<<<<<<<<
 *         self._section = section
 *         self._index = 0
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_query_2, __pyx_v_query) < 0) __PYX_ERR(0, 6717, __pyx_L1_error)

  /* "scamper.pyx":6718
 *         """
 *         self._query = query
 *         self._section = section             # <<<<<<<<<<<<<<
 *         self._index = 0
 *         self._count = 0
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_section_2, __pyx_v_section) < 0) __PYX_ERR(0, 6718, __pyx_L1_error)

  /* "scamper.pyx":6719
 *         self._query = query
 *         self._section = section
 *         self._index = 0             # <<<<<<<<<<<<<<
 *         self._count = 0
 *         self._rrtypes = None
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 6719, __pyx_L1_error)

  /* "scamper.pyx":6720
 *         self._section = section
 *         self._index = 0
 *         self._count = 0             # <<<<<<<<<<<<<<
 *         self._rrtypes = None
 *         if query is not None:
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_count, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 6720, __pyx_L1_error)

  /* "scamper.pyx":6721
 *         self._index = 0
 *         self._count = 0
 *         self._rrtypes = None             # <<<<<<<<<<<<<<
 *         if query is not None:
 *             if section == 0:
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2, Py_None) < 0) __PYX_ERR(0, 6721, __pyx_L1_error)

  /* "scamper.pyx":6722
 *         self._count = 0
 *         self._rrtypes = None
 *         if query is not None:             # <<<<<<<<<<<<<<
 *             if section == 0:
 *                 self._count = query.ancount
*/
  __pyx_t_1 = (__pyx_v_query != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":6723
 *         self._rrtypes = None
 *         if query is not None:
 *             if section == 0:             # <<<<<<<<<<<<<<
 *                 self._count = query.ancount
 *             elif section == 1:
*/
    __pyx_t_1 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_section, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 6723, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "scamper.pyx":6724
 *         if query is not None:
 *             if section == 0:
 *                 self._count = query.ancount             # <<<<<<<<<<<<<<
 *             elif section == 1:
 *                 self._count = query.nscount
*/
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_query, __pyx_mstate_global->__pyx_n_u_ancount); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6724, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_2) < 0) __PYX_ERR(0, 6724, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":6723
 *         self._rrtypes = None
 *         if query is not None:
 *             if section == 0:             # <<<<<<<<<<<<<<
 *                 self._count = query.ancount
 *             elif section == 1:
*/
      goto __pyx_L4;
    }

    /* "scamper.pyx":6725
 *             if section == 0:
 *                 self._count = query.ancount
 *             elif section == 1:             # <<<<<<<<<<<<<<
 *                 self._count = query.nscount
 *             else:
*/
    __pyx_t_1 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_section, __pyx_mstate_global->__pyx_int_1, 1, 0)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 6725, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "scamper.pyx":6726
 *                 self._count = query.ancount
 *             elif section == 1:
 *                 self._count = query.nscount             # <<<<<<<<<<<<<<
 *             else:
 *                 self._count = query.arcount
*/
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_query, __pyx_mstate_global->__pyx_n_u_nscount); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_2) < 0) __PYX_ERR(0, 6726, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":6725
 *             if section == 0:
 *                 self._count = query.ancount
 *             elif section == 1:             # <<<<<<<<<<<<<<
 *                 self._count = query.nscount
 *             else:
*/
      goto __pyx_L4;
    }

    /* "scamper.pyx":6728
 *                 self._count = query.nscount
 *             else:
 *                 self._count = query.arcount             # <<<<<<<<<<<<<<
 *         if rrtypes is not None:
 *             self._rrtypes = {}
*/
    /*else*/ {
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_query, __pyx_mstate_global->__pyx_n_u_arcount); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6728, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_count, __pyx_t_2) < 0) __PYX_ERR(0, 6728, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }
    __pyx_L4:;

    /* "scamper.pyx":6722
 *         self._count = 0
 *         self._rrtypes = None
 *         if query is not None:             # <<<<<<<<<<<<<<
 *             if section == 0:
 *                 self._count = query.ancount
*/
  }

  /* "scamper.pyx":6729
 *             else:
 *                 self._count = query.arcount
 *         if rrtypes is not None:             # <<<<<<<<<<<<<<
 *             self._rrtypes = {}
 *             for rrtype in rrtypes:
*/
  __pyx_t_1 = (__pyx_v_rrtypes != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":6730
 *                 self._count = query.arcount
 *         if rrtypes is not None:
 *             self._rrtypes = {}             # <<<<<<<<<<<<<<
 *             for rrtype in rrtypes:
 *                 if not isinstance(rrtype, str):
*/
    __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6730, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2, __pyx_t_2) < 0) __PYX_ERR(0, 6730, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":6731
 *         if rrtypes is not None:
 *             self._rrtypes = {}
 *             for rrtype in rrtypes:             # <<<<<<<<<<<<<<
 *                 if not isinstance(rrtype, str):
 *                     raise ValueError("expected str in rrtypes")
*/
    if (likely(PyList_CheckExact(__pyx_v_rrtypes)) || PyTuple_CheckExact(__pyx_v_rrtypes)) {
      __pyx_t_2 = __pyx_v_rrtypes; __Pyx_INCREF(__pyx_t_2);
      __pyx_t_3 = 0;
      __pyx_t_4 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_rrtypes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6731, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6731, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_4)) {
        if (likely(PyList_CheckExact(__pyx_t_2))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6731, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          __pyx_t_5 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_3);
          ++__pyx_t_3;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 6731, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3));
          #else
          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_3);
          #endif
          ++__pyx_t_3;
        }
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6731, __pyx_L1_error)
      } else {
        __pyx_t_5 = __pyx_t_4(__pyx_t_2);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 6731, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XDECREF_SET(__pyx_v_rrtype, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":6732
 *             self._rrtypes = {}
 *             for rrtype in rrtypes:
 *                 if not isinstance(rrtype, str):             # <<<<<<<<<<<<<<
 *                     raise ValueError("expected str in rrtypes")
 *                 rrtl = rrtype.lower()
*/
      __pyx_t_1 = PyUnicode_Check(__pyx_v_rrtype); 
      __pyx_t_6 = (!__pyx_t_1);
      if (unlikely(__pyx_t_6)) {

        /* "scamper.pyx":6733
 *             for rrtype in rrtypes:
 *                 if not isinstance(rrtype, str):
 *                     raise ValueError("expected str in rrtypes")             # <<<<<<<<<<<<<<
 *                 rrtl = rrtype.lower()
 *                 if rrtl == 'a':
*/
        __pyx_t_7 = NULL;
        __Pyx_INCREF(__pyx_builtin_ValueError);
        __pyx_t_8 = __pyx_builtin_ValueError; 
        __pyx_t_9 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_expected_str_in_rrtypes};
          __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6733, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(0, 6733, __pyx_L1_error)

        /* "scamper.pyx":6732
 *             self._rrtypes = {}
 *             for rrtype in rrtypes:
 *                 if not isinstance(rrtype, str):             # <<<<<<<<<<<<<<
 *                     raise ValueError("expected str in rrtypes")
 *                 rrtl = rrtype.lower()
*/
      }

      /* "scamper.pyx":6734
 *                 if not isinstance(rrtype, str):
 *                     raise ValueError("expected str in rrtypes")
 *                 rrtl = rrtype.lower()             # <<<<<<<<<<<<<<
 *                 if rrtl == 'a':
 *                     self._rrtypes[1] = 1
*/
      __pyx_t_8 = __pyx_v_rrtype;
      __Pyx_INCREF(__pyx_t_8);
      __pyx_t_9 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
        __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6734, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_XDECREF_SET(__pyx_v_rrtl, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":6735
 *                     raise ValueError("expected str in rrtypes")
 *                 rrtl = rrtype.lower()
 *                 if rrtl == 'a':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[1] = 1
 *                 elif rrtl == 'aaaa':
*/
      __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_rrtl, __pyx_mstate_global->__pyx_n_u_a, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6735, __pyx_L1_error)
      if (__pyx_t_6) {

        /* "scamper.pyx":6736
 *                 rrtl = rrtype.lower()
 *                 if rrtl == 'a':
 *                     self._rrtypes[1] = 1             # <<<<<<<<<<<<<<
 *                 elif rrtl == 'aaaa':
 *                     self._rrtypes[28] = 1
*/
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6736, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely((__Pyx_SetItemInt(__pyx_t_5, 1, __pyx_mstate_global->__pyx_int_1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1) < 0))) __PYX_ERR(0, 6736, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "scamper.pyx":6735
 *                     raise ValueError("expected str in rrtypes")
 *                 rrtl = rrtype.lower()
 *                 if rrtl == 'a':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[1] = 1
 *                 elif rrtl == 'aaaa':
*/
        goto __pyx_L9;
      }

      /* "scamper.pyx":6737
 *                 if rrtl == 'a':
 *                     self._rrtypes[1] = 1
 *                 elif rrtl == 'aaaa':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[28] = 1
 *                 elif rrtl == 'ptr':
*/
      __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_rrtl, __pyx_mstate_global->__pyx_n_u_aaaa, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6737, __pyx_L1_error)
      if (__pyx_t_6) {

        /* "scamper.pyx":6738
 *                     self._rrtypes[1] = 1
 *                 elif rrtl == 'aaaa':
 *                     self._rrtypes[28] = 1             # <<<<<<<<<<<<<<
 *                 elif rrtl == 'ptr':
 *                     self._rrtypes[12] = 1
*/
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6738, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely((__Pyx_SetItemInt(__pyx_t_5, 28, __pyx_mstate_global->__pyx_int_1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1) < 0))) __PYX_ERR(0, 6738, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "scamper.pyx":6737
 *                 if rrtl == 'a':
 *                     self._rrtypes[1] = 1
 *                 elif rrtl == 'aaaa':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[28] = 1
 *                 elif rrtl == 'ptr':
*/
        goto __pyx_L9;
      }

      /* "scamper.pyx":6739
 *                 elif rrtl == 'aaaa':
 *                     self._rrtypes[28] = 1
 *                 elif rrtl == 'ptr':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[12] = 1
 *                 elif rrtl == 'mx':
*/
      __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_rrtl, __pyx_mstate_global->__pyx_n_u_ptr, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6739, __pyx_L1_error)
      if (__pyx_t_6) {

        /* "scamper.pyx":6740
 *                     self._rrtypes[28] = 1
 *                 elif rrtl == 'ptr':
 *                     self._rrtypes[12] = 1             # <<<<<<<<<<<<<<
 *                 elif rrtl == 'mx':
 *                     self._rrtypes[15] = 1
*/
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6740, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely((__Pyx_SetItemInt(__pyx_t_5, 12, __pyx_mstate_global->__pyx_int_1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1) < 0))) __PYX_ERR(0, 6740, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "scamper.pyx":6739
 *                 elif rrtl == 'aaaa':
 *                     self._rrtypes[28] = 1
 *                 elif rrtl == 'ptr':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[12] = 1
 *                 elif rrtl == 'mx':
*/
        goto __pyx_L9;
      }

      /* "scamper.pyx":6741
 *                 elif rrtl == 'ptr':
 *                     self._rrtypes[12] = 1
 *                 elif rrtl == 'mx':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[15] = 1
 *                 elif rrtl == 'ns':
*/
      __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_rrtl, __pyx_mstate_global->__pyx_n_u_mx, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6741, __pyx_L1_error)
      if (__pyx_t_6) {

        /* "scamper.pyx":6742
 *                     self._rrtypes[12] = 1
 *                 elif rrtl == 'mx':
 *                     self._rrtypes[15] = 1             # <<<<<<<<<<<<<<
 *                 elif rrtl == 'ns':
 *                     self._rrtypes[2] = 1
*/
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6742, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely((__Pyx_SetItemInt(__pyx_t_5, 15, __pyx_mstate_global->__pyx_int_1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1) < 0))) __PYX_ERR(0, 6742, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "scamper.pyx":6741
 *                 elif rrtl == 'ptr':
 *                     self._rrtypes[12] = 1
 *                 elif rrtl == 'mx':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[15] = 1
 *                 elif rrtl == 'ns':
*/
        goto __pyx_L9;
      }

      /* "scamper.pyx":6743
 *                 elif rrtl == 'mx':
 *                     self._rrtypes[15] = 1
 *                 elif rrtl == 'ns':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[2] = 1
 *                 elif rrtl == 'soa':
*/
      __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_rrtl, __pyx_mstate_global->__pyx_n_u_ns, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6743, __pyx_L1_error)
      if (__pyx_t_6) {

        /* "scamper.pyx":6744
 *                     self._rrtypes[15] = 1
 *                 elif rrtl == 'ns':
 *                     self._rrtypes[2] = 1             # <<<<<<<<<<<<<<
 *                 elif rrtl == 'soa':
 *                     self._rrtypes[6] = 1
*/
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6744, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely((__Pyx_SetItemInt(__pyx_t_5, 2, __pyx_mstate_global->__pyx_int_1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1) < 0))) __PYX_ERR(0, 6744, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "scamper.pyx":6743
 *                 elif rrtl == 'mx':
 *                     self._rrtypes[15] = 1
 *                 elif rrtl == 'ns':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[2] = 1
 *                 elif rrtl == 'soa':
*/
        goto __pyx_L9;
      }

      /* "scamper.pyx":6745
 *                 elif rrtl == 'ns':
 *                     self._rrtypes[2] = 1
 *                 elif rrtl == 'soa':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[6] = 1
 *                 elif rrtl == 'txt':
*/
      __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_rrtl, __pyx_mstate_global->__pyx_n_u_soa, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6745, __pyx_L1_error)
      if (__pyx_t_6) {

        /* "scamper.pyx":6746
 *                     self._rrtypes[2] = 1
 *                 elif rrtl == 'soa':
 *                     self._rrtypes[6] = 1             # <<<<<<<<<<<<<<
 *                 elif rrtl == 'txt':
 *                     self._rrtypes[16] = 1
*/
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6746, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely((__Pyx_SetItemInt(__pyx_t_5, 6, __pyx_mstate_global->__pyx_int_1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1) < 0))) __PYX_ERR(0, 6746, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "scamper.pyx":6745
 *                 elif rrtl == 'ns':
 *                     self._rrtypes[2] = 1
 *                 elif rrtl == 'soa':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[6] = 1
 *                 elif rrtl == 'txt':
*/
        goto __pyx_L9;
      }

      /* "scamper.pyx":6747
 *                 elif rrtl == 'soa':
 *                     self._rrtypes[6] = 1
 *                 elif rrtl == 'txt':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[16] = 1
 *                 elif rrtl == 'opt':
*/
      __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_rrtl, __pyx_mstate_global->__pyx_n_u_txt, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6747, __pyx_L1_error)
      if (__pyx_t_6) {

        /* "scamper.pyx":6748
 *                     self._rrtypes[6] = 1
 *                 elif rrtl == 'txt':
 *                     self._rrtypes[16] = 1             # <<<<<<<<<<<<<<
 *                 elif rrtl == 'opt':
 *                     self._rrtypes[41] = 1
*/
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6748, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely((__Pyx_SetItemInt(__pyx_t_5, 16, __pyx_mstate_global->__pyx_int_1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1) < 0))) __PYX_ERR(0, 6748, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "scamper.pyx":6747
 *                 elif rrtl == 'soa':
 *                     self._rrtypes[6] = 1
 *                 elif rrtl == 'txt':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[16] = 1
 *                 elif rrtl == 'opt':
*/
        goto __pyx_L9;
      }

      /* "scamper.pyx":6749
 *                 elif rrtl == 'txt':
 *                     self._rrtypes[16] = 1
 *                 elif rrtl == 'opt':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[41] = 1
 *                 elif rrtl == 'svcb':
*/
      __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_rrtl, __pyx_mstate_global->__pyx_n_u_opt, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6749, __pyx_L1_error)
      if (__pyx_t_6) {

        /* "scamper.pyx":6750
 *                     self._rrtypes[16] = 1
 *                 elif rrtl == 'opt':
 *                     self._rrtypes[41] = 1             # <<<<<<<<<<<<<<
 *                 elif rrtl == 'svcb':
 *                     self._rrtypes[64] = 1
*/
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6750, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely((__Pyx_SetItemInt(__pyx_t_5, 41, __pyx_mstate_global->__pyx_int_1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1) < 0))) __PYX_ERR(0, 6750, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "scamper.pyx":6749
 *                 elif rrtl == 'txt':
 *                     self._rrtypes[16] = 1
 *                 elif rrtl == 'opt':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[41] = 1
 *                 elif rrtl == 'svcb':
*/
        goto __pyx_L9;
      }

      /* "scamper.pyx":6751
 *                 elif rrtl == 'opt':
 *                     self._rrtypes[41] = 1
 *                 elif rrtl == 'svcb':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[64] = 1
 *                 else:
*/
      __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_v_rrtl, __pyx_mstate_global->__pyx_n_u_svcb, Py_EQ)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 6751, __pyx_L1_error)
      if (likely(__pyx_t_6)) {

        /* "scamper.pyx":6752
 *                     self._rrtypes[41] = 1
 *                 elif rrtl == 'svcb':
 *                     self._rrtypes[64] = 1             # <<<<<<<<<<<<<<
 *                 else:
 *                     raise ValueError(f"cannot filter {rrtype}")
*/
        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6752, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (unlikely((__Pyx_SetItemInt(__pyx_t_5, 64, __pyx_mstate_global->__pyx_int_1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1) < 0))) __PYX_ERR(0, 6752, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

        /* "scamper.pyx":6751
 *                 elif rrtl == 'opt':
 *                     self._rrtypes[41] = 1
 *                 elif rrtl == 'svcb':             # <<<<<<<<<<<<<<
 *                     self._rrtypes[64] = 1
 *                 else:
*/
        goto __pyx_L9;
      }

      /* "scamper.pyx":6754
 *                     self._rrtypes[64] = 1
 *                 else:
 *                     raise ValueError(f"cannot filter {rrtype}")             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
      /*else*/ {
        __pyx_t_8 = NULL;
        __Pyx_INCREF(__pyx_builtin_ValueError);
        __pyx_t_7 = __pyx_builtin_ValueError; 
        __pyx_t_10 = __Pyx_PyObject_FormatSimple(__pyx_v_rrtype, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 6754, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_10);
        __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_cannot_filter, __pyx_t_10); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6754, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_11);
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_9 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_11};
          __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6754, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(0, 6754, __pyx_L1_error)
      }
      __pyx_L9:;

      /* "scamper.pyx":6731
 *         if rrtypes is not None:
 *             self._rrtypes = {}
 *             for rrtype in rrtypes:             # <<<<<<<<<<<<<<
 *                 if not isinstance(rrtype, str):
 *                     raise ValueError("expected str in rrtypes")
*/
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":6729
 *             else:
 *                 self._count = query.arcount
 *         if rrtypes is not None:             # <<<<<<<<<<<<<<
 *             self._rrtypes = {}
 *             for rrtype in rrtypes:
*/
  }

  /* "scamper.pyx":6708
 *     interface to iterate over a given section in a DNS response.
 *     """
 *     def __init__(self, query, section, rrtypes):             # <<<<<<<<<<<<<<
 *         """
 *         Construct a _ScamperHostRRIterator object.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("scamper._ScamperHostRRIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rrtype);
  __Pyx_XDECREF(__pyx_v_rrtl);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6756
 *                     raise ValueError(f"cannot filter {rrtype}")
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22_ScamperHostRRIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_22_ScamperHostRRIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22_ScamperHostRRIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_22_ScamperHostRRIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6756, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6756, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 6756, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 6756, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6756, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6756, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperHostRRIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_22_ScamperHostRRIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22_ScamperHostRRIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":6757
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":6756
 *                     raise ValueError(f"cannot filter {rrtype}")
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6759
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._index < self._count:
 *             if self._section == 0:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_22_ScamperHostRRIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_22_ScamperHostRRIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22_ScamperHostRRIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_22_ScamperHostRRIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6759, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6759, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 6759, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 6759, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6759, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6759, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperHostRRIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_22_ScamperHostRRIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_22_ScamperHostRRIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_rr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":6760
 * 
 *     def __next__(self):
 *         while self._index < self._count:             # <<<<<<<<<<<<<<
 *             if self._section == 0:
 *                 rr = self._query.an(self._index)
*/
  while (1) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_count); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6760, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6760, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 6760, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_4) break;

    /* "scamper.pyx":6761
 *     def __next__(self):
 *         while self._index < self._count:
 *             if self._section == 0:             # <<<<<<<<<<<<<<
 *                 rr = self._query.an(self._index)
 *             elif self._section == 1:
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_section_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 6761, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "scamper.pyx":6762
 *         while self._index < self._count:
 *             if self._section == 0:
 *                 rr = self._query.an(self._index)             # <<<<<<<<<<<<<<
 *             elif self._section == 1:
 *                 rr = self._query.ns(self._index)
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_query_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6762, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_2 = __pyx_t_1;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6762, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_6 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
        __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_an, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6762, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_rr, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "scamper.pyx":6761
 *     def __next__(self):
 *         while self._index < self._count:
 *             if self._section == 0:             # <<<<<<<<<<<<<<
 *                 rr = self._query.an(self._index)
 *             elif self._section == 1:
*/
      goto __pyx_L5;
    }

    /* "scamper.pyx":6763
 *             if self._section == 0:
 *                 rr = self._query.an(self._index)
 *             elif self._section == 1:             # <<<<<<<<<<<<<<
 *                 rr = self._query.ns(self._index)
 *             else:
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_section_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6763, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 0)); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 6763, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_4) {

      /* "scamper.pyx":6764
 *                 rr = self._query.an(self._index)
 *             elif self._section == 1:
 *                 rr = self._query.ns(self._index)             # <<<<<<<<<<<<<<
 *             else:
 *                 rr = self._query.ar(self._index)
*/
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_query_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6764, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_1 = __pyx_t_5;
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6764, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_6 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_2};
        __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_ns, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6764, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_rr, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "scamper.pyx":6763
 *             if self._section == 0:
 *                 rr = self._query.an(self._index)
 *             elif self._section == 1:             # <<<<<<<<<<<<<<
 *                 rr = self._query.ns(self._index)
 *             else:
*/
      goto __pyx_L5;
    }

    /* "scamper.pyx":6766
 *                 rr = self._query.ns(self._index)
 *             else:
 *                 rr = self._query.ar(self._index)             # <<<<<<<<<<<<<<
 *             self._index += 1
 *             if (self._rrtypes is None or
*/
    /*else*/ {
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_query_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6766, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = __pyx_t_2;
      __Pyx_INCREF(__pyx_t_5);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6766, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_1};
        __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_ar, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__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;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6766, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_XDECREF_SET(__pyx_v_rr, __pyx_t_3);
      __pyx_t_3 = 0;
    }
    __pyx_L5:;

    /* "scamper.pyx":6767
 *             else:
 *                 rr = self._query.ar(self._index)
 *             self._index += 1             # <<<<<<<<<<<<<<
 *             if (self._rrtypes is None or
 *                 (rr.rclass == 1 and rr.rtype in self._rrtypes)):
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_index, __pyx_t_2) < 0) __PYX_ERR(0, 6767, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":6768
 *                 rr = self._query.ar(self._index)
 *             self._index += 1
 *             if (self._rrtypes is None or             # <<<<<<<<<<<<<<
 *                 (rr.rclass == 1 and rr.rtype in self._rrtypes)):
 *                 return rr
*/
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = (__pyx_t_2 == Py_None);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!__pyx_t_7) {
    } else {
      __pyx_t_4 = __pyx_t_7;
      goto __pyx_L7_bool_binop_done;
    }

    /* "scamper.pyx":6769
 *             self._index += 1
 *             if (self._rrtypes is None or
 *                 (rr.rclass == 1 and rr.rtype in self._rrtypes)):             # <<<<<<<<<<<<<<
 *                 return rr
 *         raise StopIteration
*/
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rr, __pyx_mstate_global->__pyx_n_u_rclass); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6769, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_1, 1, 0)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 6769, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_7) {
    } else {
      __pyx_t_4 = __pyx_t_7;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_rr, __pyx_mstate_global->__pyx_n_u_rtype); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6769, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_rrtypes_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6769, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_t_2, __pyx_t_3, Py_EQ)); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 6769, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = __pyx_t_7;
    __pyx_L7_bool_binop_done:;

    /* "scamper.pyx":6768
 *                 rr = self._query.ar(self._index)
 *             self._index += 1
 *             if (self._rrtypes is None or             # <<<<<<<<<<<<<<
 *                 (rr.rclass == 1 and rr.rtype in self._rrtypes)):
 *                 return rr
*/
    if (__pyx_t_4) {

      /* "scamper.pyx":6770
 *             if (self._rrtypes is None or
 *                 (rr.rclass == 1 and rr.rtype in self._rrtypes)):
 *                 return rr             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_rr);
      __pyx_r = __pyx_v_rr;
      goto __pyx_L0;

      /* "scamper.pyx":6768
 *                 rr = self._query.ar(self._index)
 *             self._index += 1
 *             if (self._rrtypes is None or             # <<<<<<<<<<<<<<
 *                 (rr.rclass == 1 and rr.rtype in self._rrtypes)):
 *                 return rr
*/
    }
  }

  /* "scamper.pyx":6771
 *                 (rr.rclass == 1 and rr.rtype in self._rrtypes)):
 *                 return rr
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperHostQuery:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 6771, __pyx_L1_error)

  /* "scamper.pyx":6759
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._index < self._count:
 *             if self._section == 0:
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperHostRRIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_rr);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6779
 *     cdef cscamper_host.scamper_host_query_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_16ScamperHostQuery_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_16ScamperHostQuery_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery___init__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_16ScamperHostQuery___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":6780
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6780, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 6780, __pyx_L1_error)

  /* "scamper.pyx":6779
 *     cdef cscamper_host.scamper_host_query_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6782
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_query_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_16ScamperHostQuery_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_16ScamperHostQuery_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_16ScamperHostQuery_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_16ScamperHostQuery_2__dealloc__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":6783
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_query_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6784
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_query_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_host_query_free(__pyx_v_self->_c);

    /* "scamper.pyx":6783
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_query_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":6782
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_query_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":6786
 *             cscamper_host.scamper_host_query_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostQuery from_ptr(cscamper_host.scamper_host_query_t *ptr):
 *         cdef ScamperHostQuery q
*/

static struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_f_7scamper_16ScamperHostQuery_from_ptr(scamper_host_query_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_q = 0;
  struct __pyx_obj_7scamper_ScamperHostQuery *__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("from_ptr", 0);

  /* "scamper.pyx":6789
 *     cdef ScamperHostQuery from_ptr(cscamper_host.scamper_host_query_t *ptr):
 *         cdef ScamperHostQuery q
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         q = ScamperHostQuery.__new__(ScamperHostQuery)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6790
 *         cdef ScamperHostQuery q
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         q = ScamperHostQuery.__new__(ScamperHostQuery)
 *         q._c = cscamper_host.scamper_host_query_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperHostQuery *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6789
 *     cdef ScamperHostQuery from_ptr(cscamper_host.scamper_host_query_t *ptr):
 *         cdef ScamperHostQuery q
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         q = ScamperHostQuery.__new__(ScamperHostQuery)
*/
  }

  /* "scamper.pyx":6791
 *         if ptr == NULL:
 *             return None
 *         q = ScamperHostQuery.__new__(ScamperHostQuery)             # <<<<<<<<<<<<<<
 *         q._c = cscamper_host.scamper_host_query_use(ptr)
 *         return q
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHostQuery(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostQuery), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6791, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_q = ((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":6792
 *             return None
 *         q = ScamperHostQuery.__new__(ScamperHostQuery)
 *         q._c = cscamper_host.scamper_host_query_use(ptr)             # <<<<<<<<<<<<<<
 *         return q
 * 
*/
  __pyx_v_q->_c = scamper_host_query_use(__pyx_v_ptr);

  /* "scamper.pyx":6793
 *         q = ScamperHostQuery.__new__(ScamperHostQuery)
 *         q._c = cscamper_host.scamper_host_query_use(ptr)
 *         return q             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_q);
  __pyx_r = __pyx_v_q;
  goto __pyx_L0;

  /* "scamper.pyx":6786
 *             cscamper_host.scamper_host_query_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHostQuery from_ptr(cscamper_host.scamper_host_query_t *ptr):
 *         cdef ScamperHostQuery q
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_q);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6795
 *         return q
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_2tx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_2tx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_2tx___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_2tx___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6803
 *         :rtype: datetime
 *         """
 *         c = cscamper_host.scamper_host_query_tx_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_host_query_tx_get(__pyx_v_self->_c);

  /* "scamper.pyx":6804
 *         """
 *         c = cscamper_host.scamper_host_query_tx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6805
 *         c = cscamper_host.scamper_host_query_tx_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6804
 *         """
 *         c = cscamper_host.scamper_host_query_tx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":6806
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6806, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":6807
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 6807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 6807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6807, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":6808
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6808, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6808, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6808, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 6807, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6807, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6795
 *         return q
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.tx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6810
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_2rx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_2rx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_2rx___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_2rx___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6818
 *         :rtype: datetime
 *         """
 *         c = cscamper_host.scamper_host_query_rx_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL or (c.tv_sec == 0 and c.tv_usec == 0):
 *             return None
*/
  __pyx_v_c = scamper_host_query_rx_get(__pyx_v_self->_c);

  /* "scamper.pyx":6819
 *         """
 *         c = cscamper_host.scamper_host_query_rx_get(self._c)
 *         if c == NULL or (c.tv_sec == 0 and c.tv_usec == 0):             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_2 = (__pyx_v_c == NULL);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_c->tv_sec == 0);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_c->tv_usec == 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":6820
 *         c = cscamper_host.scamper_host_query_rx_get(self._c)
 *         if c == NULL or (c.tv_sec == 0 and c.tv_usec == 0):
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6819
 *         """
 *         c = cscamper_host.scamper_host_query_rx_get(self._c)
 *         if c == NULL or (c.tv_sec == 0 and c.tv_usec == 0):             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":6821
 *         if c == NULL or (c.tv_sec == 0 and c.tv_usec == 0):
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_4 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 6821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_6))) {
    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
    assert(__pyx_t_4);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
    __Pyx_INCREF(__pyx_t_4);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6821, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_v_t = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":6822
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 6822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 6822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 6822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 6822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 6822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 6822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);
  __pyx_t_13 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 6822, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);

  /* "scamper.pyx":6823
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __pyx_t_15 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_15);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_15, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 6823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
  __pyx_t_7 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_6);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_6);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_7 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, __pyx_t_5, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12, __pyx_t_13};
    __pyx_t_15 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 6822, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_15);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_14, __pyx_t_15, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 6822, __pyx_L1_error)
    __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_7, (8-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_15);
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6822, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6810
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_XDECREF(__pyx_t_15);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.rx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6825
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_3rtt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_3rtt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_3rtt___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_3rtt___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  PyObject *__pyx_v_tx = NULL;
  PyObject *__pyx_v_rx = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6834
 *         :rtype: timedelta
 *         """
 *         tx = self.tx             # <<<<<<<<<<<<<<
 *         rx = self.rx
 *         if tx is None or rx is None:
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_tx_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6834, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_tx = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":6835
 *         """
 *         tx = self.tx
 *         rx = self.rx             # <<<<<<<<<<<<<<
 *         if tx is None or rx is None:
 *             return None
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_rx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_rx = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":6836
 *         tx = self.tx
 *         rx = self.rx
 *         if tx is None or rx is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return rx - tx
*/
  __pyx_t_3 = (__pyx_v_tx == Py_None);
  if (!__pyx_t_3) {
  } else {
    __pyx_t_2 = __pyx_t_3;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_3 = (__pyx_v_rx == Py_None);
  __pyx_t_2 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_2) {

    /* "scamper.pyx":6837
 *         rx = self.rx
 *         if tx is None or rx is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return rx - tx
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6836
 *         tx = self.tx
 *         rx = self.rx
 *         if tx is None or rx is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return rx - tx
*/
  }

  /* "scamper.pyx":6838
 *         if tx is None or rx is None:
 *             return None
 *         return rx - tx             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyNumber_Subtract(__pyx_v_rx, __pyx_v_tx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6838, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6825
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.rtt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tx);
  __Pyx_XDECREF(__pyx_v_rx);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6840
 *         return rx - tx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rcode_num(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_9rcode_num_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_9rcode_num_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_9rcode_num___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_9rcode_num___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__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("__get__", 0);

  /* "scamper.pyx":6848
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_query_rcode_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_host_query_rcode_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6848, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6840
 *         return rx - tx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rcode_num(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.rcode_num.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6850
 *         return cscamper_host.scamper_host_query_rcode_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rcode(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_5rcode_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_5rcode_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_5rcode___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_5rcode___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  uint8_t __pyx_v_v;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6859
 *         """
 *         cdef char buf[128]
 *         v = cscamper_host.scamper_host_query_rcode_get(self._c)             # <<<<<<<<<<<<<<
 *         cscamper_host.scamper_host_rcode_tostr(v, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')
*/
  __pyx_v_v = scamper_host_query_rcode_get(__pyx_v_self->_c);

  /* "scamper.pyx":6860
 *         cdef char buf[128]
 *         v = cscamper_host.scamper_host_query_rcode_get(self._c)
 *         cscamper_host.scamper_host_rcode_tostr(v, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_host_rcode_tostr(__pyx_v_v, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":6861
 *         v = cscamper_host.scamper_host_query_rcode_get(self._c)
 *         cscamper_host.scamper_host_rcode_tostr(v, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6861, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6861, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6850
 *         return cscamper_host.scamper_host_query_rcode_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rcode(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.rcode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6863
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def extended_rcode_num(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_18extended_rcode_num_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_18extended_rcode_num_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_18extended_rcode_num___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_18extended_rcode_num___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  uint8_t __pyx_v_rcode;
  scamper_host_rr_t *__pyx_v_rr;
  PyObject *__pyx_v_ttl = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  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_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6873
 *         :rtype: int
 *         """
 *         rcode = cscamper_host.scamper_host_query_rcode_get(self._c)             # <<<<<<<<<<<<<<
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:
*/
  __pyx_v_rcode = scamper_host_query_rcode_get(__pyx_v_self->_c);

  /* "scamper.pyx":6874
 *         """
 *         rcode = cscamper_host.scamper_host_query_rcode_get(self._c)
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)             # <<<<<<<<<<<<<<
 *         if rr == NULL:
 *             return rcode
*/
  __pyx_v_rr = scamper_host_query_ar_opt_get(__pyx_v_self->_c);

  /* "scamper.pyx":6875
 *         rcode = cscamper_host.scamper_host_query_rcode_get(self._c)
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:             # <<<<<<<<<<<<<<
 *             return rcode
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
*/
  __pyx_t_1 = (__pyx_v_rr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6876
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:
 *             return rcode             # <<<<<<<<<<<<<<
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *         return ((ttl >> (24-4)) | rcode)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyLong_From_uint8_t(__pyx_v_rcode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6876, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":6875
 *         rcode = cscamper_host.scamper_host_query_rcode_get(self._c)
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:             # <<<<<<<<<<<<<<
 *             return rcode
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
*/
  }

  /* "scamper.pyx":6877
 *         if rr == NULL:
 *             return rcode
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)             # <<<<<<<<<<<<<<
 *         return ((ttl >> (24-4)) | rcode)
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_ttl_get(__pyx_v_rr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ttl = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":6878
 *             return rcode
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *         return ((ttl >> (24-4)) | rcode)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_RshiftObjC(__pyx_v_ttl, __pyx_mstate_global->__pyx_int_20, 0x14, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_From_uint8_t(__pyx_v_rcode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyNumber_Or(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6878, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6863
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def extended_rcode_num(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.extended_rcode_num.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ttl);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6880
 *         return ((ttl >> (24-4)) | rcode)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def extended_rcode(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_14extended_rcode_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_14extended_rcode_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_14extended_rcode___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_14extended_rcode___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  uint16_t __pyx_v_v;
  scamper_host_rr_t *__pyx_v_rr;
  PyObject *__pyx_v_ttl = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  uint16_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":6892
 *         cdef char buf[128]
 *         cdef uint16_t v
 *         v = cscamper_host.scamper_host_query_rcode_get(self._c)             # <<<<<<<<<<<<<<
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr != NULL:
*/
  __pyx_v_v = scamper_host_query_rcode_get(__pyx_v_self->_c);

  /* "scamper.pyx":6893
 *         cdef uint16_t v
 *         v = cscamper_host.scamper_host_query_rcode_get(self._c)
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)             # <<<<<<<<<<<<<<
 *         if rr != NULL:
 *             ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
*/
  __pyx_v_rr = scamper_host_query_ar_opt_get(__pyx_v_self->_c);

  /* "scamper.pyx":6894
 *         v = cscamper_host.scamper_host_query_rcode_get(self._c)
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr != NULL:             # <<<<<<<<<<<<<<
 *             ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *             v = ((ttl >> (24-4)) | v)
*/
  __pyx_t_1 = (__pyx_v_rr != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6895
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr != NULL:
 *             ttl = cscamper_host.scamper_host_rr_ttl_get(rr)             # <<<<<<<<<<<<<<
 *             v = ((ttl >> (24-4)) | v)
 *         cscamper_host.scamper_host_rcode_tostr(v, buf, sizeof(buf))
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_ttl_get(__pyx_v_rr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6895, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_ttl = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "scamper.pyx":6896
 *         if rr != NULL:
 *             ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *             v = ((ttl >> (24-4)) | v)             # <<<<<<<<<<<<<<
 *         cscamper_host.scamper_host_rcode_tostr(v, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')
*/
    __pyx_t_2 = __Pyx_PyLong_RshiftObjC(__pyx_v_ttl, __pyx_mstate_global->__pyx_int_20, 0x14, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyLong_From_uint16_t(__pyx_v_v); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyNumber_Or(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_5 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6896, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_v = __pyx_t_5;

    /* "scamper.pyx":6894
 *         v = cscamper_host.scamper_host_query_rcode_get(self._c)
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr != NULL:             # <<<<<<<<<<<<<<
 *             ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *             v = ((ttl >> (24-4)) | v)
*/
  }

  /* "scamper.pyx":6897
 *             ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *             v = ((ttl >> (24-4)) | v)
 *         cscamper_host.scamper_host_rcode_tostr(v, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_host_rcode_tostr(__pyx_v_v, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":6898
 *             v = ((ttl >> (24-4)) | v)
 *         cscamper_host.scamper_host_rcode_tostr(v, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 6898, __pyx_L1_error)
  __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 6898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6880
 *         return ((ttl >> (24-4)) | rcode)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def extended_rcode(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.extended_rcode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ttl);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6900
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flags(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_5flags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_5flags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_5flags___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_5flags___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__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("__get__", 0);

  /* "scamper.pyx":6908
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_query_flags_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_host_query_flags_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6908, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6900
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def flags(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.flags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6910
 *         return cscamper_host.scamper_host_query_flags_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def id(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_2id_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_2id_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_2id___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_2id___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__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("__get__", 0);

  /* "scamper.pyx":6918
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_query_id_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_query_id_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6918, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6910
 *         return cscamper_host.scamper_host_query_flags_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def id(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.id.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6920
 *         return cscamper_host.scamper_host_query_id_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ancount(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7ancount_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7ancount_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_7ancount___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_7ancount___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__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("__get__", 0);

  /* "scamper.pyx":6928
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_query_ancount_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def an(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_query_ancount_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6920
 *         return cscamper_host.scamper_host_query_id_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ancount(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.ancount.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6930
 *         return cscamper_host.scamper_host_query_ancount_get(self._c)
 * 
 *     def an(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         an(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_5an(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperHostQuery_4an, "\n        an(i)\n        get method that returns the specified RR from the answer section\n\n        :returns: the identified RR\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperHostQuery_5an = {"an", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperHostQuery_5an, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperHostQuery_4an};
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_5an(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("an (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6930, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6930, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "an", 0) < 0) __PYX_ERR(0, 6930, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("an", 1, 1, 1, i); __PYX_ERR(0, 6930, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6930, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("an", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6930, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostQuery.an", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_4an(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_4an(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_host_rr_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("an", 0);

  /* "scamper.pyx":6938
 *         :rtype: int
 *         """
 *         c = cscamper_host.scamper_host_query_an_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperHostRR.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6938, __pyx_L1_error)
  __pyx_v_c = scamper_host_query_an_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":6939
 *         """
 *         c = cscamper_host.scamper_host_query_an_get(self._c, i)
 *         return ScamperHostRR.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_13ScamperHostRR_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6939, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6930
 *         return cscamper_host.scamper_host_query_ancount_get(self._c)
 * 
 *     def an(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         an(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.an", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6941
 *         return ScamperHostRR.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nscount(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7nscount_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7nscount_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_7nscount___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_7nscount___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__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("__get__", 0);

  /* "scamper.pyx":6949
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_query_nscount_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def ns(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_query_nscount_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6941
 *         return ScamperHostRR.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nscount(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.nscount.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6951
 *         return cscamper_host.scamper_host_query_nscount_get(self._c)
 * 
 *     def ns(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ns(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7ns(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperHostQuery_6ns, "\n        ns(i)\n        get method that returns the specified RR from the NS section\n\n        :returns: the identified RR\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperHostQuery_7ns = {"ns", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperHostQuery_7ns, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperHostQuery_6ns};
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7ns(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ns (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6951, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6951, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ns", 0) < 0) __PYX_ERR(0, 6951, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("ns", 1, 1, 1, i); __PYX_ERR(0, 6951, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6951, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ns", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6951, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostQuery.ns", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_6ns(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_6ns(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_host_rr_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ns", 0);

  /* "scamper.pyx":6959
 *         :rtype: int
 *         """
 *         c = cscamper_host.scamper_host_query_ns_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperHostRR.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6959, __pyx_L1_error)
  __pyx_v_c = scamper_host_query_ns_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":6960
 *         """
 *         c = cscamper_host.scamper_host_query_ns_get(self._c, i)
 *         return ScamperHostRR.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_13ScamperHostRR_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6951
 *         return cscamper_host.scamper_host_query_nscount_get(self._c)
 * 
 *     def ns(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ns(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.ns", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6962
 *         return ScamperHostRR.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def arcount(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7arcount_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7arcount_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_7arcount___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_7arcount___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__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("__get__", 0);

  /* "scamper.pyx":6970
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_query_arcount_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def ar(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_query_arcount_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 6970, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6962
 *         return ScamperHostRR.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def arcount(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.arcount.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6972
 *         return cscamper_host.scamper_host_query_arcount_get(self._c)
 * 
 *     def ar(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ar(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_9ar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_16ScamperHostQuery_8ar, "\n        ar(i)\n        get method that returns the specified RR from the AR section\n\n        :returns: the identified RR\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_16ScamperHostQuery_9ar = {"ar", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperHostQuery_9ar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperHostQuery_8ar};
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_9ar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 6972, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6972, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ar", 0) < 0) __PYX_ERR(0, 6972, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("ar", 1, 1, 1, i); __PYX_ERR(0, 6972, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 6972, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ar", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 6972, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostQuery.ar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_8ar(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_8ar(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_host_rr_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint16_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ar", 0);

  /* "scamper.pyx":6980
 *         :rtype: int
 *         """
 *         c = cscamper_host.scamper_host_query_ar_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperHostRR.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint16_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 6980, __pyx_L1_error)
  __pyx_v_c = scamper_host_query_ar_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":6981
 *         """
 *         c = cscamper_host.scamper_host_query_ar_get(self._c, i)
 *         return ScamperHostRR.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_13ScamperHostRR_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6981, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6972
 *         return cscamper_host.scamper_host_query_arcount_get(self._c)
 * 
 *     def ar(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ar(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.ar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6983
 *         return ScamperHostRR.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def udpsize(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7udpsize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7udpsize_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_7udpsize___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_7udpsize___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  scamper_host_rr_t *__pyx_v_rr;
  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("__get__", 0);

  /* "scamper.pyx":6992
 *         :rtype: int
 *         """
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)             # <<<<<<<<<<<<<<
 *         if rr == NULL:
 *             return None
*/
  __pyx_v_rr = scamper_host_query_ar_opt_get(__pyx_v_self->_c);

  /* "scamper.pyx":6993
 *         """
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_host.scamper_host_rr_class_get(rr)
*/
  __pyx_t_1 = (__pyx_v_rr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":6994
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return cscamper_host.scamper_host_rr_class_get(rr)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":6993
 *         """
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return cscamper_host.scamper_host_rr_class_get(rr)
*/
  }

  /* "scamper.pyx":6995
 *         if rr == NULL:
 *             return None
 *         return cscamper_host.scamper_host_rr_class_get(rr)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(scamper_host_rr_class_get(__pyx_v_rr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6995, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6983
 *         return ScamperHostRR.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def udpsize(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.udpsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":6997
 *         return cscamper_host.scamper_host_rr_class_get(rr)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_version(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_12edns_version_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_12edns_version_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_12edns_version___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_12edns_version___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  scamper_host_rr_t *__pyx_v_rr;
  PyObject *__pyx_v_ttl = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7006
 *         :rtype: int
 *         """
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)             # <<<<<<<<<<<<<<
 *         if rr == NULL:
 *             return None
*/
  __pyx_v_rr = scamper_host_query_ar_opt_get(__pyx_v_self->_c);

  /* "scamper.pyx":7007
 *         """
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
*/
  __pyx_t_1 = (__pyx_v_rr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7008
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *         return ((ttl >> 16) & 0xFF)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7007
 *         """
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
*/
  }

  /* "scamper.pyx":7009
 *         if rr == NULL:
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)             # <<<<<<<<<<<<<<
 *         return ((ttl >> 16) & 0xFF)
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_ttl_get(__pyx_v_rr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7009, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ttl = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":7010
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *         return ((ttl >> 16) & 0xFF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_RshiftObjC(__pyx_v_ttl, __pyx_mstate_global->__pyx_int_16, 16, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_AndObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_255, 0xFF, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7010, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":6997
 *         return cscamper_host.scamper_host_rr_class_get(rr)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_version(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.edns_version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ttl);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7012
 *         return ((ttl >> 16) & 0xFF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_do(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7edns_do_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_7edns_do_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_7edns_do___get__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_7edns_do___get__(struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  scamper_host_rr_t *__pyx_v_rr;
  PyObject *__pyx_v_ttl = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7021
 *         :rtype: bool
 *         """
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)             # <<<<<<<<<<<<<<
 *         if rr == NULL:
 *             return None
*/
  __pyx_v_rr = scamper_host_query_ar_opt_get(__pyx_v_self->_c);

  /* "scamper.pyx":7022
 *         """
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
*/
  __pyx_t_1 = (__pyx_v_rr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7023
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *         if ((ttl >> 15) & 0x1):
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7022
 *         """
 *         rr = cscamper_host.scamper_host_query_ar_opt_get(self._c)
 *         if rr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
*/
  }

  /* "scamper.pyx":7024
 *         if rr == NULL:
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)             # <<<<<<<<<<<<<<
 *         if ((ttl >> 15) & 0x1):
 *             return True
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint32_t(scamper_host_rr_ttl_get(__pyx_v_rr)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7024, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_ttl = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":7025
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *         if ((ttl >> 15) & 0x1):             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  __pyx_t_2 = __Pyx_PyLong_RshiftObjC(__pyx_v_ttl, __pyx_mstate_global->__pyx_int_15, 15, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyLong_AndObjC(__pyx_t_2, __pyx_mstate_global->__pyx_int_1, 0x1, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 7025, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":7026
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *         if ((ttl >> 15) & 0x1):
 *             return True             # <<<<<<<<<<<<<<
 *         return False
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_True);
    __pyx_r = Py_True;
    goto __pyx_L0;

    /* "scamper.pyx":7025
 *             return None
 *         ttl = cscamper_host.scamper_host_rr_ttl_get(rr)
 *         if ((ttl >> 15) & 0x1):             # <<<<<<<<<<<<<<
 *             return True
 *         return False
*/
  }

  /* "scamper.pyx":7027
 *         if ((ttl >> 15) & 0x1):
 *             return True
 *         return False             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperHost:
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(Py_False);
  __pyx_r = Py_False;
  goto __pyx_L0;

  /* "scamper.pyx":7012
 *         return ((ttl >> 16) & 0xFF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_do(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHostQuery.edns_do.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ttl);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_16ScamperHostQuery_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperHostQuery_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_10__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostQuery.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_16ScamperHostQuery_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperHostQuery_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_16ScamperHostQuery_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHostQuery.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_16ScamperHostQuery_12__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperHostQuery_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHostQuery *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHostQuery.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7038
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperHost_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_11ScamperHost_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHost___init__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperHost___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":7039
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7039, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 7039, __pyx_L1_error)

  /* "scamper.pyx":7038
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHost.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7041
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_11ScamperHost_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_11ScamperHost_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_11ScamperHost_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_11ScamperHost_2__dealloc__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":7042
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7043
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_host_free(__pyx_v_self->_c);

    /* "scamper.pyx":7042
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_host.scamper_host_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":7041
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_host.scamper_host_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":7045
 *             cscamper_host.scamper_host_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHost from_ptr(cscamper_host.scamper_host_t *ptr):
 *         cdef ScamperHost host = ScamperHost.__new__(ScamperHost)
*/

static struct __pyx_obj_7scamper_ScamperHost *__pyx_f_7scamper_11ScamperHost_from_ptr(scamper_host_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHost *__pyx_v_host = 0;
  uint8_t __pyx_v_qcount;
  uint8_t __pyx_v_i;
  scamper_host_query_t *__pyx_v_q;
  struct timeval const *__pyx_v_rx;
  struct __pyx_obj_7scamper_ScamperHost *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uint8_t __pyx_t_2;
  uint8_t __pyx_t_3;
  uint8_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("from_ptr", 0);

  /* "scamper.pyx":7047
 *     @staticmethod
 *     cdef ScamperHost from_ptr(cscamper_host.scamper_host_t *ptr):
 *         cdef ScamperHost host = ScamperHost.__new__(ScamperHost)             # <<<<<<<<<<<<<<
 *         host._c = ptr
 *         qcount = cscamper_host.scamper_host_qcount_get(ptr)
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHost(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7047, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_host = ((struct __pyx_obj_7scamper_ScamperHost *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":7048
 *     cdef ScamperHost from_ptr(cscamper_host.scamper_host_t *ptr):
 *         cdef ScamperHost host = ScamperHost.__new__(ScamperHost)
 *         host._c = ptr             # <<<<<<<<<<<<<<
 *         qcount = cscamper_host.scamper_host_qcount_get(ptr)
 *         for i in range(qcount):
*/
  __pyx_v_host->_c = __pyx_v_ptr;

  /* "scamper.pyx":7049
 *         cdef ScamperHost host = ScamperHost.__new__(ScamperHost)
 *         host._c = ptr
 *         qcount = cscamper_host.scamper_host_qcount_get(ptr)             # <<<<<<<<<<<<<<
 *         for i in range(qcount):
 *             q = cscamper_host.scamper_host_query_get(ptr, i)
*/
  __pyx_v_qcount = scamper_host_qcount_get(__pyx_v_ptr);

  /* "scamper.pyx":7050
 *         host._c = ptr
 *         qcount = cscamper_host.scamper_host_qcount_get(ptr)
 *         for i in range(qcount):             # <<<<<<<<<<<<<<
 *             q = cscamper_host.scamper_host_query_get(ptr, i)
 *             rx = cscamper_host.scamper_host_query_rx_get(q)
*/
  __pyx_t_2 = __pyx_v_qcount;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "scamper.pyx":7051
 *         qcount = cscamper_host.scamper_host_qcount_get(ptr)
 *         for i in range(qcount):
 *             q = cscamper_host.scamper_host_query_get(ptr, i)             # <<<<<<<<<<<<<<
 *             rx = cscamper_host.scamper_host_query_rx_get(q)
 *             if rx.tv_sec != 0 or rx.tv_usec != 0:
*/
    __pyx_v_q = scamper_host_query_get(__pyx_v_ptr, __pyx_v_i);

    /* "scamper.pyx":7052
 *         for i in range(qcount):
 *             q = cscamper_host.scamper_host_query_get(ptr, i)
 *             rx = cscamper_host.scamper_host_query_rx_get(q)             # <<<<<<<<<<<<<<
 *             if rx.tv_sec != 0 or rx.tv_usec != 0:
 *                 host._q = ScamperHostQuery.from_ptr(q)
*/
    __pyx_v_rx = scamper_host_query_rx_get(__pyx_v_q);

    /* "scamper.pyx":7053
 *             q = cscamper_host.scamper_host_query_get(ptr, i)
 *             rx = cscamper_host.scamper_host_query_rx_get(q)
 *             if rx.tv_sec != 0 or rx.tv_usec != 0:             # <<<<<<<<<<<<<<
 *                 host._q = ScamperHostQuery.from_ptr(q)
 *                 break
*/
    __pyx_t_6 = (__pyx_v_rx->tv_sec != 0);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_5 = __pyx_t_6;
      goto __pyx_L6_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_rx->tv_usec != 0);
    __pyx_t_5 = __pyx_t_6;
    __pyx_L6_bool_binop_done:;
    if (__pyx_t_5) {

      /* "scamper.pyx":7054
 *             rx = cscamper_host.scamper_host_query_rx_get(q)
 *             if rx.tv_sec != 0 or rx.tv_usec != 0:
 *                 host._q = ScamperHostQuery.from_ptr(q)             # <<<<<<<<<<<<<<
 *                 break
 *         return host
*/
      __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_16ScamperHostQuery_from_ptr(__pyx_v_q)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7054, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_GIVEREF(__pyx_t_1);
      __Pyx_GOTREF((PyObject *)__pyx_v_host->_q);
      __Pyx_DECREF((PyObject *)__pyx_v_host->_q);
      __pyx_v_host->_q = ((struct __pyx_obj_7scamper_ScamperHostQuery *)__pyx_t_1);
      __pyx_t_1 = 0;

      /* "scamper.pyx":7055
 *             if rx.tv_sec != 0 or rx.tv_usec != 0:
 *                 host._q = ScamperHostQuery.from_ptr(q)
 *                 break             # <<<<<<<<<<<<<<
 *         return host
 * 
*/
      goto __pyx_L4_break;

      /* "scamper.pyx":7053
 *             q = cscamper_host.scamper_host_query_get(ptr, i)
 *             rx = cscamper_host.scamper_host_query_rx_get(q)
 *             if rx.tv_sec != 0 or rx.tv_usec != 0:             # <<<<<<<<<<<<<<
 *                 host._q = ScamperHostQuery.from_ptr(q)
 *                 break
*/
    }
  }
  __pyx_L4_break:;

  /* "scamper.pyx":7056
 *                 host._q = ScamperHostQuery.from_ptr(q)
 *                 break
 *         return host             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_host);
  __pyx_r = __pyx_v_host;
  goto __pyx_L0;

  /* "scamper.pyx":7045
 *             cscamper_host.scamper_host_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHost from_ptr(cscamper_host.scamper_host_t *ptr):
 *         cdef ScamperHost host = ScamperHost.__new__(ScamperHost)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHost.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_host);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7058
 *         return host
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_4inst___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_4inst___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7067
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":7058
 *         return host
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7069
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_4list_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_4list_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_4list___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_4list___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  scamper_list_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":7077
 *         :rtype: ScamperList
 *         """
 *         c = cscamper_host.scamper_host_list_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperList.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_host_list_get(__pyx_v_self->_c);

  /* "scamper.pyx":7078
 *         """
 *         c = cscamper_host.scamper_host_list_get(self._c)
 *         return ScamperList.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7078, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7069
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHost.list.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7080
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_5cycle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_5cycle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_5cycle___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_5cycle___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  scamper_cycle_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uint16_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7088
 *         :rtype: ScamperCycle
 *         """
 *         c = cscamper_host.scamper_host_cycle_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
*/
  __pyx_v_c = scamper_host_cycle_get(__pyx_v_self->_c);

  /* "scamper.pyx":7089
 *         """
 *         c = cscamper_host.scamper_host_cycle_get(self._c)
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7089, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7080
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHost.cycle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7091
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_3src___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_3src___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":7099
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_host.scamper_host_src_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_host_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":7100
 *         """
 *         c_a = cscamper_host.scamper_host_src_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7100, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7091
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHost.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7102
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_3dst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_3dst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_3dst___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_3dst___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":7110
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_host.scamper_host_dst_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_host_dst_get(__pyx_v_self->_c);

  /* "scamper.pyx":7111
 *         """
 *         c_a = cscamper_host.scamper_host_dst_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7111, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7102
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHost.dst.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7113
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_6userid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_6userid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_6userid___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_6userid___get__(struct __pyx_obj_7scamper_ScamperHost *__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("__get__", 0);

  /* "scamper.pyx":7121
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_userid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_host_userid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7121, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7113
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHost.userid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7123
 *         return cscamper_host.scamper_host_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_5start___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_5start___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7131
 *         :rtype: datetime
 *         """
 *         c = cscamper_host.scamper_host_start_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_host_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":7132
 *         """
 *         c = cscamper_host.scamper_host_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7133
 *         c = cscamper_host.scamper_host_start_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7132
 *         """
 *         c = cscamper_host.scamper_host_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":7134
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7134, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7134, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":7135
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7135, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":7136
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     def to_json(self):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7136, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 7135, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7135, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7123
 *         return cscamper_host.scamper_host_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperHost.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7138
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this DNS measurement.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_5to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_4to_json, "\n        get method to obtain a JSON rendering of this DNS measurement.\n\n        :returns: json representation\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_5to_json = {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_5to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_4to_json};
static PyObject *__pyx_pw_7scamper_11ScamperHost_5to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_json (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("to_json", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("to_json", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_4to_json(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_4to_json(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_json", 0);

  /* "scamper.pyx":7145
 *         :rtype: string
 *         """
 *         c = cscamper_host.scamper_host_tojson(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_host_tojson(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":7146
 *         """
 *         c = cscamper_host.scamper_host_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7147
 *         c = cscamper_host.scamper_host_tojson(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7146
 *         """
 *         c = cscamper_host.scamper_host_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":7148
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7148, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":7149
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":7150
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":7138
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this DNS measurement.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHost.to_json", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7152
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def qtype_num(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_9qtype_num_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_9qtype_num_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_9qtype_num___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_9qtype_num___get__(struct __pyx_obj_7scamper_ScamperHost *__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("__get__", 0);

  /* "scamper.pyx":7160
 *         :rtype: int
 *         """
 *         return cscamper_host.scamper_host_qtype_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_host_qtype_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7160, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7152
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def qtype_num(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHost.qtype_num.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7162
 *         return cscamper_host.scamper_host_qtype_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def qtype(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_5qtype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_5qtype_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_5qtype___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_5qtype___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  uint16_t __pyx_v_qtype;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7171
 *         """
 *         cdef char buf[128]
 *         qtype = cscamper_host.scamper_host_qtype_get(self._c)             # <<<<<<<<<<<<<<
 *         cscamper_host.scamper_host_qtype_tostr(qtype, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')
*/
  __pyx_v_qtype = scamper_host_qtype_get(__pyx_v_self->_c);

  /* "scamper.pyx":7172
 *         cdef char buf[128]
 *         qtype = cscamper_host.scamper_host_qtype_get(self._c)
 *         cscamper_host.scamper_host_qtype_tostr(qtype, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_host_qtype_tostr(__pyx_v_qtype, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":7173
 *         qtype = cscamper_host.scamper_host_qtype_get(self._c)
 *         cscamper_host.scamper_host_qtype_tostr(qtype, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7173, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7173, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7162
 *         return cscamper_host.scamper_host_qtype_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def qtype(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.qtype.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7175
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def qclass(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_6qclass_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_6qclass_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_6qclass___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_6qclass___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  uint16_t __pyx_v_qclass;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7184
 *         """
 *         cdef char buf[128]
 *         qclass = cscamper_host.scamper_host_qclass_get(self._c)             # <<<<<<<<<<<<<<
 *         cscamper_host.scamper_host_qclass_tostr(qclass, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')
*/
  __pyx_v_qclass = scamper_host_qclass_get(__pyx_v_self->_c);

  /* "scamper.pyx":7185
 *         cdef char buf[128]
 *         qclass = cscamper_host.scamper_host_qclass_get(self._c)
 *         cscamper_host.scamper_host_qclass_tostr(qclass, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_host_qclass_tostr(__pyx_v_qclass, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":7186
 *         qclass = cscamper_host.scamper_host_qclass_get(self._c)
 *         cscamper_host.scamper_host_qclass_tostr(qclass, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7186, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7186, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7175
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def qclass(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.qclass.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7188
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def qname(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_5qname_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_5qname_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_5qname___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_5qname___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  char const *__pyx_v_qname;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7196
 *         :rtype: string
 *         """
 *         qname = cscamper_host.scamper_host_qname_get(self._c)             # <<<<<<<<<<<<<<
 *         return qname.decode('UTF-8', 'strict')
 * 
*/
  __pyx_v_qname = scamper_host_qname_get(__pyx_v_self->_c);

  /* "scamper.pyx":7197
 *         """
 *         qname = cscamper_host.scamper_host_qname_get(self._c)
 *         return qname.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_qname); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7197, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_qname, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7197, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7188
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def qname(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.qname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7199
 *         return qname.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ecs(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_3ecs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_3ecs_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_3ecs___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_3ecs___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  char const *__pyx_v_ecs;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7208
 *         :rtype: string
 *         """
 *         ecs = cscamper_host.scamper_host_ecs_get(self._c)             # <<<<<<<<<<<<<<
 *         return ecs.decode('UTF-8', 'strict')
 * 
*/
  __pyx_v_ecs = scamper_host_ecs_get(__pyx_v_self->_c);

  /* "scamper.pyx":7209
 *         """
 *         ecs = cscamper_host.scamper_host_ecs_get(self._c)
 *         return ecs.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_ecs); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7209, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_ecs, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7199
 *         return qname.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ecs(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.ecs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7211
 *         return ecs.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rcode_num(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_9rcode_num_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_9rcode_num_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_9rcode_num___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_9rcode_num___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7220
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.rcode_num
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7221
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.rcode_num
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7220
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.rcode_num
*/
  }

  /* "scamper.pyx":7222
 *         if self._q is None:
 *             return None
 *         return self._q.rcode_num             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_rcode_num); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7211
 *         return ecs.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rcode_num(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.rcode_num.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7224
 *         return self._q.rcode_num
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rcode(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_5rcode_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_5rcode_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_5rcode___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_5rcode___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7232
 *         :rtype: string
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.rcode
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7233
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.rcode
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7232
 *         :rtype: string
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.rcode
*/
  }

  /* "scamper.pyx":7234
 *         if self._q is None:
 *             return None
 *         return self._q.rcode             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_rcode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7234, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7224
 *         return self._q.rcode_num
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rcode(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.rcode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7236
 *         return self._q.rcode
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def extended_rcode_num(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_18extended_rcode_num_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_18extended_rcode_num_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_18extended_rcode_num___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_18extended_rcode_num___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7247
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.extended_rcode_num
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7248
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.extended_rcode_num
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7247
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.extended_rcode_num
*/
  }

  /* "scamper.pyx":7249
 *         if self._q is None:
 *             return None
 *         return self._q.extended_rcode_num             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_extended_rcode_num); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7249, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7236
 *         return self._q.rcode
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def extended_rcode_num(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.extended_rcode_num.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7251
 *         return self._q.extended_rcode_num
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def extended_rcode(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_14extended_rcode_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_14extended_rcode_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_14extended_rcode___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_14extended_rcode___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7262
 *         :rtype: string
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.extended_rcode
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7263
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.extended_rcode
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7262
 *         :rtype: string
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.extended_rcode
*/
  }

  /* "scamper.pyx":7264
 *         if self._q is None:
 *             return None
 *         return self._q.extended_rcode             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_extended_rcode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7264, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7251
 *         return self._q.extended_rcode_num
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def extended_rcode(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.extended_rcode.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7266
 *         return self._q.extended_rcode
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_2tx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_2tx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_2tx___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_2tx___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7275
 *         :rtype: datetime
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.tx
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7276
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.tx
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7275
 *         :rtype: datetime
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.tx
*/
  }

  /* "scamper.pyx":7277
 *         if self._q is None:
 *             return None
 *         return self._q.tx             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_tx_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7266
 *         return self._q.extended_rcode
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.tx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7279
 *         return self._q.tx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_2rx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_2rx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_2rx___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_2rx___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7288
 *         :rtype: datetime
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.rx
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7289
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.rx
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7288
 *         :rtype: datetime
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.rx
*/
  }

  /* "scamper.pyx":7290
 *         if self._q is None:
 *             return None
 *         return self._q.rx             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_rx); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7279
 *         return self._q.tx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.rx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7292
 *         return self._q.rx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtt(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_3rtt_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_3rtt_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_3rtt___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_3rtt___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7301
 *         :rtype: timedelta
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.rtt
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7302
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.rtt
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7301
 *         :rtype: timedelta
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.rtt
*/
  }

  /* "scamper.pyx":7303
 *         if self._q is None:
 *             return None
 *         return self._q.rtt             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_rtt); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7303, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7292
 *         return self._q.rx
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rtt(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.rtt.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7305
 *         return self._q.rtt
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ancount(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_7ancount_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_7ancount_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_7ancount___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_7ancount___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7314
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return 0
 *         return self._q.ancount
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7315
 *         """
 *         if self._q is None:
 *             return 0             # <<<<<<<<<<<<<<
 *         return self._q.ancount
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __pyx_r = __pyx_mstate_global->__pyx_int_0;
    goto __pyx_L0;

    /* "scamper.pyx":7314
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return 0
 *         return self._q.ancount
*/
  }

  /* "scamper.pyx":7316
 *         if self._q is None:
 *             return 0
 *         return self._q.ancount             # <<<<<<<<<<<<<<
 * 
 *     def an(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_ancount); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7316, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7305
 *         return self._q.rtt
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ancount(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.ancount.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7318
 *         return self._q.ancount
 * 
 *     def an(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         an(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_7an(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_6an, "\n        an(i)\n        get method to obtain the specified AN RR from the first query\n        with a response\n\n        :returns: the number of AN RRs\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_7an = {"an", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_7an, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_6an};
static PyObject *__pyx_pw_7scamper_11ScamperHost_7an(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("an (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7318, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7318, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "an", 0) < 0) __PYX_ERR(0, 7318, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("an", 1, 1, 1, i); __PYX_ERR(0, 7318, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7318, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("an", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7318, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHost.an", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_6an(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_6an(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("an", 0);

  /* "scamper.pyx":7327
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.an(i)
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7328
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.an(i)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7327
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.an(i)
*/
  }

  /* "scamper.pyx":7329
 *         if self._q is None:
 *             return None
 *         return self._q.an(i)             # <<<<<<<<<<<<<<
 * 
 *     def ans(self, rrtypes=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_v_self->_q);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_i};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_an, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7329, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7318
 *         return self._q.ancount
 * 
 *     def an(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         an(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHost.an", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7331
 *         return self._q.an(i)
 * 
 *     def ans(self, rrtypes=None):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a RR Iterator over the AN section of the first
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_9ans(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_8ans, "\n        get method to obtain a RR Iterator over the AN section of the first\n        query with a response\n\n        :returns: an iterator\n        :rtype: _ScamperHostRRIterator\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_9ans = {"ans", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_9ans, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_8ans};
static PyObject *__pyx_pw_7scamper_11ScamperHost_9ans(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_rrtypes = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ans (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rrtypes,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7331, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7331, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ans", 0) < 0) __PYX_ERR(0, 7331, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7331, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_rrtypes = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ans", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 7331, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHost.ans", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_8ans(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self), __pyx_v_rrtypes);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_8ans(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_rrtypes) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ans", 0);

  /* "scamper.pyx":7339
 *         :rtype: _ScamperHostRRIterator
 *         """
 *         return _ScamperHostRRIterator(self._q, 0, rrtypes)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperHostRRIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, ((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_int_0, __pyx_v_rrtypes};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7339, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7331
 *         return self._q.an(i)
 * 
 *     def ans(self, rrtypes=None):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a RR Iterator over the AN section of the first
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHost.ans", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7341
 *         return _ScamperHostRRIterator(self._q, 0, rrtypes)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nscount(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_7nscount_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_7nscount_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_7nscount___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_7nscount___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7350
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return 0
 *         return self._q.nscount
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7351
 *         """
 *         if self._q is None:
 *             return 0             # <<<<<<<<<<<<<<
 *         return self._q.nscount
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __pyx_r = __pyx_mstate_global->__pyx_int_0;
    goto __pyx_L0;

    /* "scamper.pyx":7350
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return 0
 *         return self._q.nscount
*/
  }

  /* "scamper.pyx":7352
 *         if self._q is None:
 *             return 0
 *         return self._q.nscount             # <<<<<<<<<<<<<<
 * 
 *     def ns(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_nscount); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7352, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7341
 *         return _ScamperHostRRIterator(self._q, 0, rrtypes)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def nscount(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.nscount.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7354
 *         return self._q.nscount
 * 
 *     def ns(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ns(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_11ns(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_10ns, "\n        ns(i)\n        get method to obtain the specified NS RR from the first query\n        with a response\n\n        :returns: the number of NS RRs\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_11ns = {"ns", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_11ns, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_10ns};
static PyObject *__pyx_pw_7scamper_11ScamperHost_11ns(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ns (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7354, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7354, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ns", 0) < 0) __PYX_ERR(0, 7354, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("ns", 1, 1, 1, i); __PYX_ERR(0, 7354, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7354, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ns", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7354, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHost.ns", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_10ns(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_10ns(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ns", 0);

  /* "scamper.pyx":7363
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.ns(i)
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7364
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.ns(i)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7363
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.ns(i)
*/
  }

  /* "scamper.pyx":7365
 *         if self._q is None:
 *             return None
 *         return self._q.ns(i)             # <<<<<<<<<<<<<<
 * 
 *     def nss(self, rrtypes=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_v_self->_q);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_i};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_ns, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7365, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7354
 *         return self._q.nscount
 * 
 *     def ns(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ns(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHost.ns", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7367
 *         return self._q.ns(i)
 * 
 *     def nss(self, rrtypes=None):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a RR Iterator over the NS section of the first
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_13nss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_12nss, "\n        get method to obtain a RR Iterator over the NS section of the first\n        query with a response\n\n        :returns: an iterator\n        :rtype: _ScamperHostRRIterator\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_13nss = {"nss", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_13nss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_12nss};
static PyObject *__pyx_pw_7scamper_11ScamperHost_13nss(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_rrtypes = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("nss (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rrtypes,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7367, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7367, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "nss", 0) < 0) __PYX_ERR(0, 7367, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7367, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_rrtypes = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("nss", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 7367, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHost.nss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_12nss(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self), __pyx_v_rrtypes);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_12nss(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_rrtypes) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("nss", 0);

  /* "scamper.pyx":7375
 *         :rtype: _ScamperHostRRIterator
 *         """
 *         return _ScamperHostRRIterator(self._q, 1, rrtypes)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperHostRRIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7375, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, ((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_int_1, __pyx_v_rrtypes};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7375, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7367
 *         return self._q.ns(i)
 * 
 *     def nss(self, rrtypes=None):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a RR Iterator over the NS section of the first
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHost.nss", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7377
 *         return _ScamperHostRRIterator(self._q, 1, rrtypes)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def arcount(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_7arcount_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_7arcount_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_7arcount___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_7arcount___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7386
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return 0
 *         return self._q.arcount
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7387
 *         """
 *         if self._q is None:
 *             return 0             # <<<<<<<<<<<<<<
 *         return self._q.arcount
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_mstate_global->__pyx_int_0);
    __pyx_r = __pyx_mstate_global->__pyx_int_0;
    goto __pyx_L0;

    /* "scamper.pyx":7386
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return 0
 *         return self._q.arcount
*/
  }

  /* "scamper.pyx":7388
 *         if self._q is None:
 *             return 0
 *         return self._q.arcount             # <<<<<<<<<<<<<<
 * 
 *     def ar(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_arcount); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7388, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7377
 *         return _ScamperHostRRIterator(self._q, 1, rrtypes)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def arcount(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.arcount.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7390
 *         return self._q.arcount
 * 
 *     def ar(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ar(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_15ar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_14ar, "\n        ar(i)\n        get method to obtain the specified AR RR from the first query\n        with a response\n\n        :returns: the number of AR RRs\n        :rtype: int\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_15ar = {"ar", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_15ar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_14ar};
static PyObject *__pyx_pw_7scamper_11ScamperHost_15ar(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ar (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7390, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7390, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ar", 0) < 0) __PYX_ERR(0, 7390, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("ar", 1, 1, 1, i); __PYX_ERR(0, 7390, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7390, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ar", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7390, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHost.ar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_14ar(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_14ar(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_i) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ar", 0);

  /* "scamper.pyx":7399
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.ar(i)
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7400
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.ar(i)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7399
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.ar(i)
*/
  }

  /* "scamper.pyx":7401
 *         if self._q is None:
 *             return None
 *         return self._q.ar(i)             # <<<<<<<<<<<<<<
 * 
 *     def ars(self, rrtypes=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_v_self->_q);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_i};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_ar, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7401, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7390
 *         return self._q.arcount
 * 
 *     def ar(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ar(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHost.ar", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7403
 *         return self._q.ar(i)
 * 
 *     def ars(self, rrtypes=None):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a RR Iterator over the AR section of the first
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_17ars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_16ars, "\n        get method to obtain a RR Iterator over the AR section of the first\n        query with a response\n\n        :returns: an iterator\n        :rtype: _ScamperHostRRIterator\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_17ars = {"ars", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_17ars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_16ars};
static PyObject *__pyx_pw_7scamper_11ScamperHost_17ars(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_rrtypes = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ars (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rrtypes,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7403, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7403, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "ars", 0) < 0) __PYX_ERR(0, 7403, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7403, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_rrtypes = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ars", 0, 0, 1, __pyx_nargs); __PYX_ERR(0, 7403, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHost.ars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_16ars(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self), __pyx_v_rrtypes);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_16ars(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_rrtypes) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ars", 0);

  /* "scamper.pyx":7411
 *         :rtype: _ScamperHostRRIterator
 *         """
 *         return _ScamperHostRRIterator(self._q, 2, rrtypes=None)             # <<<<<<<<<<<<<<
 * 
 *     def ans_addrs(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperHostRRIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7411, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[3 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_2, ((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_int_2};
    __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_rrtypes, Py_None, __pyx_t_5, __pyx_callargs+3, 0) < 0) __PYX_ERR(0, 7411, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_4, (3-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7411, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7403
 *         return self._q.ar(i)
 * 
 *     def ars(self, rrtypes=None):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a RR Iterator over the AR section of the first
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper.ScamperHost.ars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7413
 *         return _ScamperHostRRIterator(self._q, 2, rrtypes=None)
 * 
 *     def ans_addrs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all unique addresses returned
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_19ans_addrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_18ans_addrs, "\n        get method to obtain all unique addresses returned\n\n        :returns: a list of :class:`ScamperAddr`\n        :rtype: a list of :class:`ScamperAddr`\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_19ans_addrs = {"ans_addrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_19ans_addrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_18ans_addrs};
static PyObject *__pyx_pw_7scamper_11ScamperHost_19ans_addrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ans_addrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("ans_addrs", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("ans_addrs", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_18ans_addrs(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_18ans_addrs(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  PyObject *__pyx_v_addrs = NULL;
  PyObject *__pyx_v_rec = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ans_addrs", 0);

  /* "scamper.pyx":7420
 *         :rtype: a list of :class:`ScamperAddr`
 *         """
 *         addrs = {}             # <<<<<<<<<<<<<<
 *         for rec in self.ans():
 *             if rec.addr is not None:
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7420, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_addrs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":7421
 *         """
 *         addrs = {}
 *         for rec in self.ans():             # <<<<<<<<<<<<<<
 *             if rec.addr is not None:
 *                 addrs[rec.addr] = 1
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_ans, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7421, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7421, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7421, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_4);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7421, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7421, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7421, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_rec, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":7422
 *         addrs = {}
 *         for rec in self.ans():
 *             if rec.addr is not None:             # <<<<<<<<<<<<<<
 *                 addrs[rec.addr] = 1
 *         return list(addrs.keys())
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rec, __pyx_mstate_global->__pyx_n_u_addr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7422, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = (__pyx_t_1 != Py_None);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_6) {

      /* "scamper.pyx":7423
 *         for rec in self.ans():
 *             if rec.addr is not None:
 *                 addrs[rec.addr] = 1             # <<<<<<<<<<<<<<
 *         return list(addrs.keys())
 * 
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rec, __pyx_mstate_global->__pyx_n_u_addr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7423, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely((PyDict_SetItem(__pyx_v_addrs, __pyx_t_1, __pyx_mstate_global->__pyx_int_1) < 0))) __PYX_ERR(0, 7423, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "scamper.pyx":7422
 *         addrs = {}
 *         for rec in self.ans():
 *             if rec.addr is not None:             # <<<<<<<<<<<<<<
 *                 addrs[rec.addr] = 1
 *         return list(addrs.keys())
*/
    }

    /* "scamper.pyx":7421
 *         """
 *         addrs = {}
 *         for rec in self.ans():             # <<<<<<<<<<<<<<
 *             if rec.addr is not None:
 *                 addrs[rec.addr] = 1
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7424
 *             if rec.addr is not None:
 *                 addrs[rec.addr] = 1
 *         return list(addrs.keys())             # <<<<<<<<<<<<<<
 * 
 *     def ans_nses(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_addrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PySequence_ListKeepNew(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7424, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7413
 *         return _ScamperHostRRIterator(self._q, 2, rrtypes=None)
 * 
 *     def ans_addrs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all unique addresses returned
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.ans_addrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_addrs);
  __Pyx_XDECREF(__pyx_v_rec);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7426
 *         return list(addrs.keys())
 * 
 *     def ans_nses(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all unique nameservers returned
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_21ans_nses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_20ans_nses, "\n        get method to obtain all unique nameservers returned\n\n        :returns: a list of :str:\n        :rtype: a list of :str:\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_21ans_nses = {"ans_nses", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_21ans_nses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_20ans_nses};
static PyObject *__pyx_pw_7scamper_11ScamperHost_21ans_nses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ans_nses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("ans_nses", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("ans_nses", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_20ans_nses(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_20ans_nses(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  PyObject *__pyx_v_nses = NULL;
  PyObject *__pyx_v_rec = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ans_nses", 0);

  /* "scamper.pyx":7433
 *         :rtype: a list of :str:
 *         """
 *         nses = {}             # <<<<<<<<<<<<<<
 *         for rec in self.ans():
 *             if rec.ns is not None:
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_nses = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":7434
 *         """
 *         nses = {}
 *         for rec in self.ans():             # <<<<<<<<<<<<<<
 *             if rec.ns is not None:
 *                 nses[rec.ns] = 1
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_ans, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7434, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7434, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7434, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_4);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7434, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7434, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7434, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_rec, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":7435
 *         nses = {}
 *         for rec in self.ans():
 *             if rec.ns is not None:             # <<<<<<<<<<<<<<
 *                 nses[rec.ns] = 1
 *         return list(nses.keys())
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rec, __pyx_mstate_global->__pyx_n_u_ns); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = (__pyx_t_1 != Py_None);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_6) {

      /* "scamper.pyx":7436
 *         for rec in self.ans():
 *             if rec.ns is not None:
 *                 nses[rec.ns] = 1             # <<<<<<<<<<<<<<
 *         return list(nses.keys())
 * 
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rec, __pyx_mstate_global->__pyx_n_u_ns); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7436, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely((PyDict_SetItem(__pyx_v_nses, __pyx_t_1, __pyx_mstate_global->__pyx_int_1) < 0))) __PYX_ERR(0, 7436, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "scamper.pyx":7435
 *         nses = {}
 *         for rec in self.ans():
 *             if rec.ns is not None:             # <<<<<<<<<<<<<<
 *                 nses[rec.ns] = 1
 *         return list(nses.keys())
*/
    }

    /* "scamper.pyx":7434
 *         """
 *         nses = {}
 *         for rec in self.ans():             # <<<<<<<<<<<<<<
 *             if rec.ns is not None:
 *                 nses[rec.ns] = 1
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7437
 *             if rec.ns is not None:
 *                 nses[rec.ns] = 1
 *         return list(nses.keys())             # <<<<<<<<<<<<<<
 * 
 *     def ans_ptrs(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_nses); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PySequence_ListKeepNew(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7437, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7426
 *         return list(addrs.keys())
 * 
 *     def ans_nses(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all unique nameservers returned
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.ans_nses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_nses);
  __Pyx_XDECREF(__pyx_v_rec);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7439
 *         return list(nses.keys())
 * 
 *     def ans_ptrs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all unique PTR records returned
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_23ans_ptrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_22ans_ptrs, "\n        get method to obtain all unique PTR records returned\n\n        :returns: a list of :str:\n        :rtype: a list of :str:\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_23ans_ptrs = {"ans_ptrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_23ans_ptrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_22ans_ptrs};
static PyObject *__pyx_pw_7scamper_11ScamperHost_23ans_ptrs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ans_ptrs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("ans_ptrs", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("ans_ptrs", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_22ans_ptrs(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_22ans_ptrs(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  PyObject *__pyx_v_ptrs = NULL;
  PyObject *__pyx_v_rec = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ans_ptrs", 0);

  /* "scamper.pyx":7446
 *         :rtype: a list of :str:
 *         """
 *         ptrs = {}             # <<<<<<<<<<<<<<
 *         for rec in self.ans():
 *             if rec.ptr is not None:
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7446, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_ptrs = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":7447
 *         """
 *         ptrs = {}
 *         for rec in self.ans():             # <<<<<<<<<<<<<<
 *             if rec.ptr is not None:
 *                 ptrs[rec.ptr] = 1
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_ans, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7447, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7447, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_4);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7447, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7447, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7447, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_rec, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":7448
 *         ptrs = {}
 *         for rec in self.ans():
 *             if rec.ptr is not None:             # <<<<<<<<<<<<<<
 *                 ptrs[rec.ptr] = 1
 *         return list(ptrs.keys())
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rec, __pyx_mstate_global->__pyx_n_u_ptr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7448, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = (__pyx_t_1 != Py_None);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_6) {

      /* "scamper.pyx":7449
 *         for rec in self.ans():
 *             if rec.ptr is not None:
 *                 ptrs[rec.ptr] = 1             # <<<<<<<<<<<<<<
 *         return list(ptrs.keys())
 * 
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rec, __pyx_mstate_global->__pyx_n_u_ptr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7449, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (unlikely((PyDict_SetItem(__pyx_v_ptrs, __pyx_t_1, __pyx_mstate_global->__pyx_int_1) < 0))) __PYX_ERR(0, 7449, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "scamper.pyx":7448
 *         ptrs = {}
 *         for rec in self.ans():
 *             if rec.ptr is not None:             # <<<<<<<<<<<<<<
 *                 ptrs[rec.ptr] = 1
 *         return list(ptrs.keys())
*/
    }

    /* "scamper.pyx":7447
 *         """
 *         ptrs = {}
 *         for rec in self.ans():             # <<<<<<<<<<<<<<
 *             if rec.ptr is not None:
 *                 ptrs[rec.ptr] = 1
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7450
 *             if rec.ptr is not None:
 *                 ptrs[rec.ptr] = 1
 *         return list(ptrs.keys())             # <<<<<<<<<<<<<<
 * 
 *     def ans_txts(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyDict_Keys(__pyx_v_ptrs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PySequence_ListKeepNew(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7450, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7439
 *         return list(nses.keys())
 * 
 *     def ans_ptrs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all unique PTR records returned
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.ans_ptrs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ptrs);
  __Pyx_XDECREF(__pyx_v_rec);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7452
 *         return list(ptrs.keys())
 * 
 *     def ans_txts(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all txt records returned
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_25ans_txts(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_24ans_txts, "\n        get method to obtain all txt records returned\n\n        :returns: a list of TXT RRs\n        :rtype: a list of :ScamperHostTXT:\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_25ans_txts = {"ans_txts", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_25ans_txts, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_24ans_txts};
static PyObject *__pyx_pw_7scamper_11ScamperHost_25ans_txts(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ans_txts (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("ans_txts", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("ans_txts", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_24ans_txts(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_24ans_txts(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  PyObject *__pyx_v_txts = NULL;
  PyObject *__pyx_v_rec = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ans_txts", 0);

  /* "scamper.pyx":7459
 *         :rtype: a list of :ScamperHostTXT:
 *         """
 *         txts = []             # <<<<<<<<<<<<<<
 *         for rec in self.ans():
 *             if rec.txt is not None:
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7459, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_txts = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":7460
 *         """
 *         txts = []
 *         for rec in self.ans():             # <<<<<<<<<<<<<<
 *             if rec.txt is not None:
 *                 txts.append(rec.txt)
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_ans, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7460, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7460, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7460, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_4);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7460, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7460, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7460, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_rec, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":7461
 *         txts = []
 *         for rec in self.ans():
 *             if rec.txt is not None:             # <<<<<<<<<<<<<<
 *                 txts.append(rec.txt)
 *         return txts
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rec, __pyx_mstate_global->__pyx_n_u_txt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7461, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = (__pyx_t_1 != Py_None);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_6) {

      /* "scamper.pyx":7462
 *         for rec in self.ans():
 *             if rec.txt is not None:
 *                 txts.append(rec.txt)             # <<<<<<<<<<<<<<
 *         return txts
 * 
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rec, __pyx_mstate_global->__pyx_n_u_txt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7462, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_txts, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 7462, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "scamper.pyx":7461
 *         txts = []
 *         for rec in self.ans():
 *             if rec.txt is not None:             # <<<<<<<<<<<<<<
 *                 txts.append(rec.txt)
 *         return txts
*/
    }

    /* "scamper.pyx":7460
 *         """
 *         txts = []
 *         for rec in self.ans():             # <<<<<<<<<<<<<<
 *             if rec.txt is not None:
 *                 txts.append(rec.txt)
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7463
 *             if rec.txt is not None:
 *                 txts.append(rec.txt)
 *         return txts             # <<<<<<<<<<<<<<
 * 
 *     def ans_mxes(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_txts);
  __pyx_r = __pyx_v_txts;
  goto __pyx_L0;

  /* "scamper.pyx":7452
 *         return list(ptrs.keys())
 * 
 *     def ans_txts(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all txt records returned
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.ans_txts", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_txts);
  __Pyx_XDECREF(__pyx_v_rec);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7465
 *         return txts
 * 
 *     def ans_mxes(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all mx records returned
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_27ans_mxes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHost_26ans_mxes, "\n        get method to obtain all mx records returned\n\n        :returns: a list of MX RRs\n        :rtype: a list of :ScamperHostMX:\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_27ans_mxes = {"ans_mxes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_27ans_mxes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_26ans_mxes};
static PyObject *__pyx_pw_7scamper_11ScamperHost_27ans_mxes(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ans_mxes (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("ans_mxes", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("ans_mxes", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_26ans_mxes(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_26ans_mxes(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  PyObject *__pyx_v_mxes = NULL;
  PyObject *__pyx_v_rec = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ans_mxes", 0);

  /* "scamper.pyx":7472
 *         :rtype: a list of :ScamperHostMX:
 *         """
 *         mxes = []             # <<<<<<<<<<<<<<
 *         for rec in self.ans():
 *             if rec.mx is not None:
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mxes = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":7473
 *         """
 *         mxes = []
 *         for rec in self.ans():             # <<<<<<<<<<<<<<
 *             if rec.mx is not None:
 *                 mxes.append(rec.mx)
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_ans, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2);
    __pyx_t_4 = 0;
    __pyx_t_5 = NULL;
  } else {
    __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_5 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7473, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_5)) {
      if (likely(PyList_CheckExact(__pyx_t_2))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7473, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRef(__pyx_t_2, __pyx_t_4);
        ++__pyx_t_4;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 7473, __pyx_L1_error)
          #endif
          if (__pyx_t_4 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_4);
        #endif
        ++__pyx_t_4;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7473, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_5(__pyx_t_2);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 7473, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_rec, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":7474
 *         mxes = []
 *         for rec in self.ans():
 *             if rec.mx is not None:             # <<<<<<<<<<<<<<
 *                 mxes.append(rec.mx)
 *         return mxes
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rec, __pyx_mstate_global->__pyx_n_u_mx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7474, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = (__pyx_t_1 != Py_None);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_6) {

      /* "scamper.pyx":7475
 *         for rec in self.ans():
 *             if rec.mx is not None:
 *                 mxes.append(rec.mx)             # <<<<<<<<<<<<<<
 *         return mxes
 * 
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_rec, __pyx_mstate_global->__pyx_n_u_mx); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7475, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = __Pyx_PyList_Append(__pyx_v_mxes, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 7475, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "scamper.pyx":7474
 *         mxes = []
 *         for rec in self.ans():
 *             if rec.mx is not None:             # <<<<<<<<<<<<<<
 *                 mxes.append(rec.mx)
 *         return mxes
*/
    }

    /* "scamper.pyx":7473
 *         """
 *         mxes = []
 *         for rec in self.ans():             # <<<<<<<<<<<<<<
 *             if rec.mx is not None:
 *                 mxes.append(rec.mx)
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7476
 *             if rec.mx is not None:
 *                 mxes.append(rec.mx)
 *         return mxes             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_mxes);
  __pyx_r = __pyx_v_mxes;
  goto __pyx_L0;

  /* "scamper.pyx":7465
 *         return txts
 * 
 *     def ans_mxes(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all mx records returned
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.ans_mxes", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_mxes);
  __Pyx_XDECREF(__pyx_v_rec);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7478
 *         return mxes
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def udpsize(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_7udpsize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_7udpsize_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_7udpsize___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_7udpsize___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7488
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.udpsize
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7489
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.udpsize
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7488
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.udpsize
*/
  }

  /* "scamper.pyx":7490
 *         if self._q is None:
 *             return None
 *         return self._q.udpsize             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_udpsize); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7490, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7478
 *         return mxes
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def udpsize(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.udpsize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7492
 *         return self._q.udpsize
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_version(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_12edns_version_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_12edns_version_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_12edns_version___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_12edns_version___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7502
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.edns_version
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7503
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.edns_version
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7502
 *         :rtype: int
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.edns_version
*/
  }

  /* "scamper.pyx":7504
 *         if self._q is None:
 *             return None
 *         return self._q.edns_version             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_edns_version); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7504, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7492
 *         return self._q.udpsize
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_version(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.edns_version.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7506
 *         return self._q.edns_version
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_do(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_7edns_do_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_7edns_do_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_7edns_do___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_7edns_do___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  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("__get__", 0);

  /* "scamper.pyx":7516
 *         :rtype: bool
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.edns_do
*/
  __pyx_t_1 = (((PyObject *)__pyx_v_self->_q) == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":7517
 *         """
 *         if self._q is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return self._q.edns_do
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7516
 *         :rtype: bool
 *         """
 *         if self._q is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return self._q.edns_do
*/
  }

  /* "scamper.pyx":7518
 *         if self._q is None:
 *             return None
 *         return self._q.edns_do             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_q), __pyx_mstate_global->__pyx_n_u_edns_do); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7506
 *         return self._q.edns_version
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def edns_do(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHost.edns_do.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7036
 *     cdef cscamper_host.scamper_host_t *_c
 *     cdef ScamperHostQuery _q
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHost_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_5_inst___get__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_5_inst___get__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperHost_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperHost_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperHost_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 7036, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHost._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperHost_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_11ScamperHost_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperHost_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_29__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_29__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_29__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperHost_29__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_28__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_28__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHost.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHost_31__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperHost_31__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_31__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperHost_31__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHost.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHost_30__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHost_30__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHost *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHost.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7531
 *     cdef cscamper_http.scamper_http_buf_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_14ScamperHttpBuf_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_14ScamperHttpBuf_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf___init__(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_14ScamperHttpBuf___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":7532
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 7532, __pyx_L1_error)

  /* "scamper.pyx":7531
 *     cdef cscamper_http.scamper_http_buf_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7534
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_http.scamper_http_buf_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_14ScamperHttpBuf_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_14ScamperHttpBuf_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_14ScamperHttpBuf_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_14ScamperHttpBuf_2__dealloc__(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":7535
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_http.scamper_http_buf_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7536
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_http.scamper_http_buf_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_http_buf_free(__pyx_v_self->_c);

    /* "scamper.pyx":7535
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_http.scamper_http_buf_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":7534
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_http.scamper_http_buf_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":7538
 *             cscamper_http.scamper_http_buf_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHttpBuf from_ptr(cscamper_http.scamper_http_buf_t *ptr):
 *         cdef ScamperHttpBuf htb
*/

static struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_f_7scamper_14ScamperHttpBuf_from_ptr(scamper_http_buf_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_htb = 0;
  struct __pyx_obj_7scamper_ScamperHttpBuf *__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("from_ptr", 0);

  /* "scamper.pyx":7541
 *     cdef ScamperHttpBuf from_ptr(cscamper_http.scamper_http_buf_t *ptr):
 *         cdef ScamperHttpBuf htb
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         htb = ScamperHttpBuf.__new__(ScamperHttpBuf)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7542
 *         cdef ScamperHttpBuf htb
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         htb = ScamperHttpBuf.__new__(ScamperHttpBuf)
 *         htb._c = cscamper_http.scamper_http_buf_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperHttpBuf *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7541
 *     cdef ScamperHttpBuf from_ptr(cscamper_http.scamper_http_buf_t *ptr):
 *         cdef ScamperHttpBuf htb
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         htb = ScamperHttpBuf.__new__(ScamperHttpBuf)
*/
  }

  /* "scamper.pyx":7543
 *         if ptr == NULL:
 *             return None
 *         htb = ScamperHttpBuf.__new__(ScamperHttpBuf)             # <<<<<<<<<<<<<<
 *         htb._c = cscamper_http.scamper_http_buf_use(ptr)
 *         return htb
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHttpBuf(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttpBuf), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7543, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_htb = ((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":7544
 *             return None
 *         htb = ScamperHttpBuf.__new__(ScamperHttpBuf)
 *         htb._c = cscamper_http.scamper_http_buf_use(ptr)             # <<<<<<<<<<<<<<
 *         return htb
 * 
*/
  __pyx_v_htb->_c = scamper_http_buf_use(__pyx_v_ptr);

  /* "scamper.pyx":7545
 *         htb = ScamperHttpBuf.__new__(ScamperHttpBuf)
 *         htb._c = cscamper_http.scamper_http_buf_use(ptr)
 *         return htb             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_htb);
  __pyx_r = __pyx_v_htb;
  goto __pyx_L0;

  /* "scamper.pyx":7538
 *             cscamper_http.scamper_http_buf_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHttpBuf from_ptr(cscamper_http.scamper_http_buf_t *ptr):
 *         cdef ScamperHttpBuf htb
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_htb);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7547
 *         return htb
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def timestamp(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_9timestamp_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_9timestamp_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_9timestamp___get__(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_9timestamp___get__(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7556
 *         :rtype: datetime
 *         """
 *         c = cscamper_http.scamper_http_buf_tv_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_http_buf_tv_get(__pyx_v_self->_c);

  /* "scamper.pyx":7557
 *         """
 *         c = cscamper_http.scamper_http_buf_tv_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7558
 *         c = cscamper_http.scamper_http_buf_tv_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7557
 *         """
 *         c = cscamper_http.scamper_http_buf_tv_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":7559
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7559, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":7560
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7560, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":7561
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7561, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 7560, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7560, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7547
 *         return htb
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def timestamp(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.timestamp.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7563
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dir_str(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_7dir_str_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_7dir_str_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_7dir_str___get__(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_7dir_str___get__(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7572
 *         """
 *         cdef char buf[128]
 *         cscamper_http.scamper_http_buf_dir_tostr(self._c, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_http_buf_dir_tostr(__pyx_v_self->_c, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":7573
 *         cdef char buf[128]
 *         cscamper_http.scamper_http_buf_dir_tostr(self._c, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7573, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7573, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7563
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dir_str(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.dir_str.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7575
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def type_str(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_8type_str_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_8type_str_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_8type_str___get__(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_8type_str___get__(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7584
 *         """
 *         cdef char buf[128]
 *         cscamper_http.scamper_http_buf_type_tostr(self._c, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_http_buf_type_tostr(__pyx_v_self->_c, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":7585
 *         cdef char buf[128]
 *         cscamper_http.scamper_http_buf_type_tostr(self._c, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     def is_tx(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7585, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7575
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def type_str(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.type_str.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7587
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     def is_tx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk was transmitted.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_5is_tx(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperHttpBuf_4is_tx, "\n        get method that returns True if the chunk was transmitted.\n\n        :returns: True if the chunk was transmitted\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperHttpBuf_5is_tx = {"is_tx", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_5is_tx, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHttpBuf_4is_tx};
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_5is_tx(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tx (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tx", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tx", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_4is_tx(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_4is_tx(struct __pyx_obj_7scamper_ScamperHttpBuf *__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("is_tx", 0);

  /* "scamper.pyx":7594
 *         :rtype: bool
 *         """
 *         return cscamper_http.scamper_http_buf_is_tx(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_rx(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_http_buf_is_tx(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7594, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7587
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     def is_tx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk was transmitted.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.is_tx", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7596
 *         return cscamper_http.scamper_http_buf_is_tx(self._c)
 * 
 *     def is_rx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk was received.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_7is_rx(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperHttpBuf_6is_rx, "\n        get method that returns True if the chunk was received.\n\n        :returns: True if the chunk was received\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperHttpBuf_7is_rx = {"is_rx", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_7is_rx, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHttpBuf_6is_rx};
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_7is_rx(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_rx (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_rx", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_rx", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_6is_rx(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_6is_rx(struct __pyx_obj_7scamper_ScamperHttpBuf *__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("is_rx", 0);

  /* "scamper.pyx":7603
 *         :rtype: bool
 *         """
 *         return cscamper_http.scamper_http_buf_is_rx(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_tls(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_http_buf_is_rx(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7603, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7596
 *         return cscamper_http.scamper_http_buf_is_tx(self._c)
 * 
 *     def is_rx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk was received.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.is_rx", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7605
 *         return cscamper_http.scamper_http_buf_is_rx(self._c)
 * 
 *     def is_tls(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk is a TLS chunk.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_9is_tls(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperHttpBuf_8is_tls, "\n        get method that returns True if the chunk is a TLS chunk.\n\n        :returns: True if the chunk is a TLS chunk\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperHttpBuf_9is_tls = {"is_tls", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_9is_tls, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHttpBuf_8is_tls};
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_9is_tls(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_tls (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_tls", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_tls", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_8is_tls(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_8is_tls(struct __pyx_obj_7scamper_ScamperHttpBuf *__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("is_tls", 0);

  /* "scamper.pyx":7612
 *         :rtype: bool
 *         """
 *         return cscamper_http.scamper_http_buf_is_tls(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_hdr(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_http_buf_is_tls(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7605
 *         return cscamper_http.scamper_http_buf_is_rx(self._c)
 * 
 *     def is_tls(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk is a TLS chunk.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.is_tls", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7614
 *         return cscamper_http.scamper_http_buf_is_tls(self._c)
 * 
 *     def is_hdr(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk is an HTTP header chunk.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_11is_hdr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperHttpBuf_10is_hdr, "\n        get method that returns True if the chunk is an HTTP header chunk.\n\n        :returns: True if the chunk is a HTTP header chunk\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperHttpBuf_11is_hdr = {"is_hdr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_11is_hdr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHttpBuf_10is_hdr};
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_11is_hdr(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_hdr (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_hdr", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_hdr", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_10is_hdr(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_10is_hdr(struct __pyx_obj_7scamper_ScamperHttpBuf *__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("is_hdr", 0);

  /* "scamper.pyx":7621
 *         :rtype: bool
 *         """
 *         return cscamper_http.scamper_http_buf_is_hdr(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_data(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_http_buf_is_hdr(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7614
 *         return cscamper_http.scamper_http_buf_is_tls(self._c)
 * 
 *     def is_hdr(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk is an HTTP header chunk.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.is_hdr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7623
 *         return cscamper_http.scamper_http_buf_is_hdr(self._c)
 * 
 *     def is_data(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk is a data chunk.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_13is_data(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_14ScamperHttpBuf_12is_data, "\n        get method that returns True if the chunk is a data chunk.\n\n        :returns: True if the chunk is a data chunk\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_14ScamperHttpBuf_13is_data = {"is_data", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_13is_data, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHttpBuf_12is_data};
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_13is_data(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_data (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_data", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_data", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_12is_data(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_12is_data(struct __pyx_obj_7scamper_ScamperHttpBuf *__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("is_data", 0);

  /* "scamper.pyx":7630
 *         :rtype: bool
 *         """
 *         return cscamper_http.scamper_http_buf_is_data(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_http_buf_is_data(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7623
 *         return cscamper_http.scamper_http_buf_is_hdr(self._c)
 * 
 *     def is_data(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk is a data chunk.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.is_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7632
 *         return cscamper_http.scamper_http_buf_is_data(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def payload(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_7payload_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_7payload_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_7payload___get__(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_7payload___get__(struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self) {
  uint16_t __pyx_v_s;
  uint8_t const *__pyx_v_ptr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":7642
 *         cdef uint16_t s
 *         cdef const uint8_t *ptr
 *         s = cscamper_http.scamper_http_buf_len_get(self._c)             # <<<<<<<<<<<<<<
 *         ptr = cscamper_http.scamper_http_buf_data_get(self._c)
 *         if s == 0 or ptr == NULL:
*/
  __pyx_v_s = scamper_http_buf_len_get(__pyx_v_self->_c);

  /* "scamper.pyx":7643
 *         cdef const uint8_t *ptr
 *         s = cscamper_http.scamper_http_buf_len_get(self._c)
 *         ptr = cscamper_http.scamper_http_buf_data_get(self._c)             # <<<<<<<<<<<<<<
 *         if s == 0 or ptr == NULL:
 *             return None
*/
  __pyx_v_ptr = scamper_http_buf_data_get(__pyx_v_self->_c);

  /* "scamper.pyx":7644
 *         s = cscamper_http.scamper_http_buf_len_get(self._c)
 *         ptr = cscamper_http.scamper_http_buf_data_get(self._c)
 *         if s == 0 or ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return ptr[:s]
*/
  __pyx_t_2 = (__pyx_v_s == 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_ptr == NULL);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":7645
 *         ptr = cscamper_http.scamper_http_buf_data_get(self._c)
 *         if s == 0 or ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return ptr[:s]
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7644
 *         s = cscamper_http.scamper_http_buf_len_get(self._c)
 *         ptr = cscamper_http.scamper_http_buf_data_get(self._c)
 *         if s == 0 or ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return ptr[:s]
*/
  }

  /* "scamper.pyx":7646
 *         if s == 0 or ptr == NULL:
 *             return None
 *         return ptr[:s]             # <<<<<<<<<<<<<<
 * 
 * class _ScamperHttpIterator:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_ptr) + 0, __pyx_v_s - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7646, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7632
 *         return cscamper_http.scamper_http_buf_is_data(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def payload(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.payload.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperHttpBuf_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_14__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_14ScamperHttpBuf_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_14ScamperHttpBuf_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_14ScamperHttpBuf_16__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHttpBuf *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_14ScamperHttpBuf_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttpBuf *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHttpBuf.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7649
 * 
 * class _ScamperHttpIterator:
 *     def __init__(self, http):             # <<<<<<<<<<<<<<
 *         self._http = http
 *         self._i = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20_ScamperHttpIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20_ScamperHttpIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20_ScamperHttpIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20_ScamperHttpIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_http = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_http,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7649, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7649, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7649, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 7649, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 7649, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7649, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 7649, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_http = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 7649, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperHttpIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20_ScamperHttpIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_http);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20_ScamperHttpIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_http) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":7650
 * class _ScamperHttpIterator:
 *     def __init__(self, http):
 *         self._http = http             # <<<<<<<<<<<<<<
 *         self._i = 0
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_http_2, __pyx_v_http) < 0) __PYX_ERR(0, 7650, __pyx_L1_error)

  /* "scamper.pyx":7651
 *     def __init__(self, http):
 *         self._http = http
 *         self._i = 0             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 7651, __pyx_L1_error)

  /* "scamper.pyx":7649
 * 
 * class _ScamperHttpIterator:
 *     def __init__(self, http):             # <<<<<<<<<<<<<<
 *         self._http = http
 *         self._i = 0
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper._ScamperHttpIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7653
 *         self._i = 0
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20_ScamperHttpIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20_ScamperHttpIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20_ScamperHttpIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20_ScamperHttpIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7653, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7653, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 7653, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 7653, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7653, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7653, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperHttpIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20_ScamperHttpIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20_ScamperHttpIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":7654
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":7653
 *         self._i = 0
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7656
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         htb = self._http.buf(self._i)
 *         self._i += 1
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20_ScamperHttpIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20_ScamperHttpIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20_ScamperHttpIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20_ScamperHttpIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7656, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7656, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 7656, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 7656, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7656, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7656, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperHttpIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20_ScamperHttpIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20_ScamperHttpIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_htb = 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;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":7657
 * 
 *     def __next__(self):
 *         htb = self._http.buf(self._i)             # <<<<<<<<<<<<<<
 *         self._i += 1
 *         if htb:
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_http_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7657, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_4};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_buf, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7657, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_htb = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":7658
 *     def __next__(self):
 *         htb = self._http.buf(self._i)
 *         self._i += 1             # <<<<<<<<<<<<<<
 *         if htb:
 *             return htb
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyLong_AddObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7658, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_i_2, __pyx_t_3) < 0) __PYX_ERR(0, 7658, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":7659
 *         htb = self._http.buf(self._i)
 *         self._i += 1
 *         if htb:             # <<<<<<<<<<<<<<
 *             return htb
 *         raise StopIteration
*/
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_v_htb); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 7659, __pyx_L1_error)
  if (__pyx_t_6) {

    /* "scamper.pyx":7660
 *         self._i += 1
 *         if htb:
 *             return htb             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_htb);
    __pyx_r = __pyx_v_htb;
    goto __pyx_L0;

    /* "scamper.pyx":7659
 *         htb = self._http.buf(self._i)
 *         self._i += 1
 *         if htb:             # <<<<<<<<<<<<<<
 *             return htb
 *         raise StopIteration
*/
  }

  /* "scamper.pyx":7661
 *         if htb:
 *             return htb
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperHttp:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 7661, __pyx_L1_error)

  /* "scamper.pyx":7656
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         htb = self._http.buf(self._i)
 *         self._i += 1
*/

  /* 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_AddTraceback("scamper._ScamperHttpIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_htb);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7671
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperHttp_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_11ScamperHttp_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp___init__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperHttp___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":7672
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 7672, __pyx_L1_error)

  /* "scamper.pyx":7671
 *     cdef public ScamperInst _inst
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHttp.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7674
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_http.scamper_http_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_11ScamperHttp_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_11ScamperHttp_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_11ScamperHttp_2__dealloc__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_11ScamperHttp_2__dealloc__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":7675
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_http.scamper_http_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7676
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_http.scamper_http_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
    scamper_http_free(__pyx_v_self->_c);

    /* "scamper.pyx":7675
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_http.scamper_http_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":7674
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_http.scamper_http_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":7678
 *             cscamper_http.scamper_http_free(self._c)
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return _ScamperHttpIterator(self)
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_4__iter__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_4__iter__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":7679
 * 
 *     def __iter__(self):
 *         return _ScamperHttpIterator(self)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperHttpIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7679, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7679, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7678
 *             cscamper_http.scamper_http_free(self._c)
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return _ScamperHttpIterator(self)
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHttp.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7681
 *         return _ScamperHttpIterator(self)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHttp from_ptr(cscamper_http.scamper_http_t *ptr):
 *         cdef ScamperHttp http = ScamperHttp.__new__(ScamperHttp)
*/

static struct __pyx_obj_7scamper_ScamperHttp *__pyx_f_7scamper_11ScamperHttp_from_ptr(scamper_http_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_http = 0;
  struct __pyx_obj_7scamper_ScamperHttp *__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("from_ptr", 0);

  /* "scamper.pyx":7683
 *     @staticmethod
 *     cdef ScamperHttp from_ptr(cscamper_http.scamper_http_t *ptr):
 *         cdef ScamperHttp http = ScamperHttp.__new__(ScamperHttp)             # <<<<<<<<<<<<<<
 *         http._c = ptr
 *         return http
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperHttp(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttp), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7683, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_http = ((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":7684
 *     cdef ScamperHttp from_ptr(cscamper_http.scamper_http_t *ptr):
 *         cdef ScamperHttp http = ScamperHttp.__new__(ScamperHttp)
 *         http._c = ptr             # <<<<<<<<<<<<<<
 *         return http
 * 
*/
  __pyx_v_http->_c = __pyx_v_ptr;

  /* "scamper.pyx":7685
 *         cdef ScamperHttp http = ScamperHttp.__new__(ScamperHttp)
 *         http._c = ptr
 *         return http             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_http);
  __pyx_r = __pyx_v_http;
  goto __pyx_L0;

  /* "scamper.pyx":7681
 *         return _ScamperHttpIterator(self)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperHttp from_ptr(cscamper_http.scamper_http_t *ptr):
 *         cdef ScamperHttp http = ScamperHttp.__new__(ScamperHttp)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttp.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_http);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7687
 *         return http
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_4inst___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_4inst___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7696
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":7687
 *         return http
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7698
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_4list_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_4list_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_4list___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_4list___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  scamper_list_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":7706
 *         :rtype: ScamperList
 *         """
 *         c = cscamper_http.scamper_http_list_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperList.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_http_list_get(__pyx_v_self->_c);

  /* "scamper.pyx":7707
 *         """
 *         c = cscamper_http.scamper_http_list_get(self._c)
 *         return ScamperList.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7707, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7698
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttp.list.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7709
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5cycle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5cycle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_5cycle___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_5cycle___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  scamper_cycle_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uint16_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7717
 *         :rtype: ScamperCycle
 *         """
 *         c = cscamper_http.scamper_http_cycle_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
*/
  __pyx_v_c = scamper_http_cycle_get(__pyx_v_self->_c);

  /* "scamper.pyx":7718
 *         """
 *         c = cscamper_http.scamper_http_cycle_get(self._c)
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 7718, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7709
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttp.cycle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7720
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_6userid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_6userid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_6userid___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_6userid___get__(struct __pyx_obj_7scamper_ScamperHttp *__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("__get__", 0);

  /* "scamper.pyx":7728
 *         :rtype: int
 *         """
 *         return cscamper_http.scamper_http_userid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_http_userid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7728, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7720
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttp.userid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7730
 *         return cscamper_http.scamper_http_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_5start___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_5start___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7738
 *         :rtype: datetime
 *         """
 *         c = cscamper_http.scamper_http_start_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_http_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":7739
 *         """
 *         c = cscamper_http.scamper_http_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7740
 *         c = cscamper_http.scamper_http_start_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7739
 *         """
 *         c = cscamper_http.scamper_http_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":7741
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 7741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7741, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":7742
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 7742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 7742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 7742, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":7743
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 7743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 7742, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 7742, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7742, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7730
 *         return cscamper_http.scamper_http_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperHttp.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7745
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_3src___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_3src___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":7753
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_http.scamper_http_src_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_http_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":7754
 *         """
 *         c_a = cscamper_http.scamper_http_src_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7754, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7745
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttp.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7756
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_3dst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_3dst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_3dst___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_3dst___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":7764
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_http.scamper_http_dst_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_http_dst_get(__pyx_v_self->_c);

  /* "scamper.pyx":7765
 *         """
 *         c_a = cscamper_http.scamper_http_dst_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7765, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7756
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttp.dst.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7767
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def sport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5sport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5sport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_5sport___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_5sport___get__(struct __pyx_obj_7scamper_ScamperHttp *__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("__get__", 0);

  /* "scamper.pyx":7775
 *         :rtype: int
 *         """
 *         return cscamper_http.scamper_http_sport_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_http_sport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7775, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7767
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def sport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttp.sport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7777
 *         return cscamper_http.scamper_http_sport_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5dport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5dport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_5dport___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_5dport___get__(struct __pyx_obj_7scamper_ScamperHttp *__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("__get__", 0);

  /* "scamper.pyx":7786
 *         :rtype: int
 *         """
 *         return cscamper_http.scamper_http_dport_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_http_dport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7777
 *         return cscamper_http.scamper_http_sport_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttp.dport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7788
 *         return cscamper_http.scamper_http_dport_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def url(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_3url_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_3url_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_3url___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_3url___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  size_t __pyx_v_s;
  char *__pyx_v_buf;
  int __pyx_v_x;
  PyObject *__pyx_v_url = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7798
 *         cdef size_t s
 *         cdef char *buf
 *         x = cscamper_http.scamper_http_url_len_get(self._c, &s)             # <<<<<<<<<<<<<<
 *         if x != 0:
 *             return None
*/
  __pyx_v_x = scamper_http_url_len_get(__pyx_v_self->_c, (&__pyx_v_s));

  /* "scamper.pyx":7799
 *         cdef char *buf
 *         x = cscamper_http.scamper_http_url_len_get(self._c, &s)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
*/
  __pyx_t_1 = (__pyx_v_x != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":7800
 *         x = cscamper_http.scamper_http_url_len_get(self._c, &s)
 *         if x != 0:
 *             return None             # <<<<<<<<<<<<<<
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7799
 *         cdef char *buf
 *         x = cscamper_http.scamper_http_url_len_get(self._c, &s)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
*/
  }

  /* "scamper.pyx":7801
 *         if x != 0:
 *             return None
 *         buf = <char *>PyMem_Malloc(s)             # <<<<<<<<<<<<<<
 *         if not buf:
 *             raise MemoryError()
*/
  __pyx_v_buf = ((char *)PyMem_Malloc(__pyx_v_s));

  /* "scamper.pyx":7802
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_url_get(self._c, buf, s)
*/
  __pyx_t_1 = (!(__pyx_v_buf != 0));
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":7803
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 *         x = cscamper_http.scamper_http_url_get(self._c, buf, s)
 *         if x == 0:
*/
    PyErr_NoMemory(); __PYX_ERR(0, 7803, __pyx_L1_error)

    /* "scamper.pyx":7802
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_url_get(self._c, buf, s)
*/
  }

  /* "scamper.pyx":7804
 *         if not buf:
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_url_get(self._c, buf, s)             # <<<<<<<<<<<<<<
 *         if x == 0:
 *             url = buf.decode('UTF-8', 'strict')
*/
  __pyx_v_x = scamper_http_url_get(__pyx_v_self->_c, __pyx_v_buf, __pyx_v_s);

  /* "scamper.pyx":7805
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_url_get(self._c, buf, s)
 *         if x == 0:             # <<<<<<<<<<<<<<
 *             url = buf.decode('UTF-8', 'strict')
 *         else:
*/
  __pyx_t_1 = (__pyx_v_x == 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":7806
 *         x = cscamper_http.scamper_http_url_get(self._c, buf, s)
 *         if x == 0:
 *             url = buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         else:
 *             url = None
*/
    __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7806, __pyx_L1_error)
    __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7806, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_url = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":7805
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_url_get(self._c, buf, s)
 *         if x == 0:             # <<<<<<<<<<<<<<
 *             url = buf.decode('UTF-8', 'strict')
 *         else:
*/
    goto __pyx_L5;
  }

  /* "scamper.pyx":7808
 *             url = buf.decode('UTF-8', 'strict')
 *         else:
 *             url = None             # <<<<<<<<<<<<<<
 *         PyMem_Free(buf)
 *         return url
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_url = Py_None;
  }
  __pyx_L5:;

  /* "scamper.pyx":7809
 *         else:
 *             url = None
 *         PyMem_Free(buf)             # <<<<<<<<<<<<<<
 *         return url
 * 
*/
  PyMem_Free(__pyx_v_buf);

  /* "scamper.pyx":7810
 *             url = None
 *         PyMem_Free(buf)
 *         return url             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_url);
  __pyx_r = __pyx_v_url;
  goto __pyx_L0;

  /* "scamper.pyx":7788
 *         return cscamper_http.scamper_http_dport_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def url(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHttp.url.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_url);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7812
 *         return url
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def status_code(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_11status_code_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_11status_code_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_11status_code___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_11status_code___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  uint16_t __pyx_v_u16;
  int __pyx_v_x;
  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("__get__", 0);

  /* "scamper.pyx":7821
 *         """
 *         cdef uint16_t u16
 *         x = cscamper_http.scamper_http_status_code_get(self._c, &u16)             # <<<<<<<<<<<<<<
 *         if x != 0:
 *             return None
*/
  __pyx_v_x = scamper_http_status_code_get(__pyx_v_self->_c, (&__pyx_v_u16));

  /* "scamper.pyx":7822
 *         cdef uint16_t u16
 *         x = cscamper_http.scamper_http_status_code_get(self._c, &u16)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return u16
*/
  __pyx_t_1 = (__pyx_v_x != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":7823
 *         x = cscamper_http.scamper_http_status_code_get(self._c, &u16)
 *         if x != 0:
 *             return None             # <<<<<<<<<<<<<<
 *         return u16
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7822
 *         cdef uint16_t u16
 *         x = cscamper_http.scamper_http_status_code_get(self._c, &u16)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         return u16
*/
  }

  /* "scamper.pyx":7824
 *         if x != 0:
 *             return None
 *         return u16             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_u16); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7824, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":7812
 *         return url
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def status_code(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHttp.status_code.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7826
 *         return u16
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def response(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_8response_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_8response_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_8response___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_8response___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  size_t __pyx_v_s;
  uint8_t *__pyx_v_buf;
  int __pyx_v_x;
  PyObject *__pyx_v_output = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":7836
 *         cdef size_t s
 *         cdef uint8_t *buf
 *         x = cscamper_http.scamper_http_rx_data_len_get(self._c, &s)             # <<<<<<<<<<<<<<
 *         if x != 0 or s == 0:
 *             return None
*/
  __pyx_v_x = scamper_http_rx_data_len_get(__pyx_v_self->_c, (&__pyx_v_s));

  /* "scamper.pyx":7837
 *         cdef uint8_t *buf
 *         x = cscamper_http.scamper_http_rx_data_len_get(self._c, &s)
 *         if x != 0 or s == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         buf = <uint8_t *>PyMem_Malloc(s)
*/
  __pyx_t_2 = (__pyx_v_x != 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_s == 0);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":7838
 *         x = cscamper_http.scamper_http_rx_data_len_get(self._c, &s)
 *         if x != 0 or s == 0:
 *             return None             # <<<<<<<<<<<<<<
 *         buf = <uint8_t *>PyMem_Malloc(s)
 *         if not buf:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7837
 *         cdef uint8_t *buf
 *         x = cscamper_http.scamper_http_rx_data_len_get(self._c, &s)
 *         if x != 0 or s == 0:             # <<<<<<<<<<<<<<
 *             return None
 *         buf = <uint8_t *>PyMem_Malloc(s)
*/
  }

  /* "scamper.pyx":7839
 *         if x != 0 or s == 0:
 *             return None
 *         buf = <uint8_t *>PyMem_Malloc(s)             # <<<<<<<<<<<<<<
 *         if not buf:
 *             raise MemoryError()
*/
  __pyx_v_buf = ((uint8_t *)PyMem_Malloc(__pyx_v_s));

  /* "scamper.pyx":7840
 *             return None
 *         buf = <uint8_t *>PyMem_Malloc(s)
 *         if not buf:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_rx_data_get(self._c, buf, s)
*/
  __pyx_t_1 = (!(__pyx_v_buf != 0));
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":7841
 *         buf = <uint8_t *>PyMem_Malloc(s)
 *         if not buf:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 *         x = cscamper_http.scamper_http_rx_data_get(self._c, buf, s)
 *         if x == 0:
*/
    PyErr_NoMemory(); __PYX_ERR(0, 7841, __pyx_L1_error)

    /* "scamper.pyx":7840
 *             return None
 *         buf = <uint8_t *>PyMem_Malloc(s)
 *         if not buf:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_rx_data_get(self._c, buf, s)
*/
  }

  /* "scamper.pyx":7842
 *         if not buf:
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_rx_data_get(self._c, buf, s)             # <<<<<<<<<<<<<<
 *         if x == 0:
 *             output = buf[:s]
*/
  __pyx_v_x = scamper_http_rx_data_get(__pyx_v_self->_c, __pyx_v_buf, __pyx_v_s);

  /* "scamper.pyx":7843
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_rx_data_get(self._c, buf, s)
 *         if x == 0:             # <<<<<<<<<<<<<<
 *             output = buf[:s]
 *         else:
*/
  __pyx_t_1 = (__pyx_v_x == 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":7844
 *         x = cscamper_http.scamper_http_rx_data_get(self._c, buf, s)
 *         if x == 0:
 *             output = buf[:s]             # <<<<<<<<<<<<<<
 *         else:
 *             output = None
*/
    __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_buf) + 0, __pyx_v_s - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7844, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_output = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;

    /* "scamper.pyx":7843
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_rx_data_get(self._c, buf, s)
 *         if x == 0:             # <<<<<<<<<<<<<<
 *             output = buf[:s]
 *         else:
*/
    goto __pyx_L7;
  }

  /* "scamper.pyx":7846
 *             output = buf[:s]
 *         else:
 *             output = None             # <<<<<<<<<<<<<<
 *         PyMem_Free(buf)
 *         return output
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_output = ((PyObject*)Py_None);
  }
  __pyx_L7:;

  /* "scamper.pyx":7847
 *         else:
 *             output = None
 *         PyMem_Free(buf)             # <<<<<<<<<<<<<<
 *         return output
 * 
*/
  PyMem_Free(__pyx_v_buf);

  /* "scamper.pyx":7848
 *             output = None
 *         PyMem_Free(buf)
 *         return output             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_output);
  __pyx_r = __pyx_v_output;
  goto __pyx_L0;

  /* "scamper.pyx":7826
 *         return u16
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def response(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHttp.response.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_output);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7850
 *         return output
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def response_hdr(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_12response_hdr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_12response_hdr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_12response_hdr___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_12response_hdr___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  size_t __pyx_v_s;
  char *__pyx_v_buf;
  int __pyx_v_x;
  PyObject *__pyx_v_output = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7861
 *         cdef size_t s
 *         cdef char *buf
 *         x = cscamper_http.scamper_http_rx_hdr_len_get(self._c, &s)             # <<<<<<<<<<<<<<
 *         if x != 0:
 *             return None
*/
  __pyx_v_x = scamper_http_rx_hdr_len_get(__pyx_v_self->_c, (&__pyx_v_s));

  /* "scamper.pyx":7862
 *         cdef char *buf
 *         x = cscamper_http.scamper_http_rx_hdr_len_get(self._c, &s)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
*/
  __pyx_t_1 = (__pyx_v_x != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":7863
 *         x = cscamper_http.scamper_http_rx_hdr_len_get(self._c, &s)
 *         if x != 0:
 *             return None             # <<<<<<<<<<<<<<
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7862
 *         cdef char *buf
 *         x = cscamper_http.scamper_http_rx_hdr_len_get(self._c, &s)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
*/
  }

  /* "scamper.pyx":7864
 *         if x != 0:
 *             return None
 *         buf = <char *>PyMem_Malloc(s)             # <<<<<<<<<<<<<<
 *         if not buf:
 *             raise MemoryError()
*/
  __pyx_v_buf = ((char *)PyMem_Malloc(__pyx_v_s));

  /* "scamper.pyx":7865
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_rx_hdr_get(self._c, <uint8_t *>buf, s)
*/
  __pyx_t_1 = (!(__pyx_v_buf != 0));
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":7866
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 *         x = cscamper_http.scamper_http_rx_hdr_get(self._c, <uint8_t *>buf, s)
 *         if x == 0:
*/
    PyErr_NoMemory(); __PYX_ERR(0, 7866, __pyx_L1_error)

    /* "scamper.pyx":7865
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_rx_hdr_get(self._c, <uint8_t *>buf, s)
*/
  }

  /* "scamper.pyx":7867
 *         if not buf:
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_rx_hdr_get(self._c, <uint8_t *>buf, s)             # <<<<<<<<<<<<<<
 *         if x == 0:
 *             output = buf.decode('UTF-8', 'strict')
*/
  __pyx_v_x = scamper_http_rx_hdr_get(__pyx_v_self->_c, ((uint8_t *)__pyx_v_buf), __pyx_v_s);

  /* "scamper.pyx":7868
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_rx_hdr_get(self._c, <uint8_t *>buf, s)
 *         if x == 0:             # <<<<<<<<<<<<<<
 *             output = buf.decode('UTF-8', 'strict')
 *         else:
*/
  __pyx_t_1 = (__pyx_v_x == 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":7869
 *         x = cscamper_http.scamper_http_rx_hdr_get(self._c, <uint8_t *>buf, s)
 *         if x == 0:
 *             output = buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         else:
 *             output = None
*/
    __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7869, __pyx_L1_error)
    __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7869, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_output = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":7868
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_rx_hdr_get(self._c, <uint8_t *>buf, s)
 *         if x == 0:             # <<<<<<<<<<<<<<
 *             output = buf.decode('UTF-8', 'strict')
 *         else:
*/
    goto __pyx_L5;
  }

  /* "scamper.pyx":7871
 *             output = buf.decode('UTF-8', 'strict')
 *         else:
 *             output = None             # <<<<<<<<<<<<<<
 *         PyMem_Free(buf)
 *         return output
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_output = Py_None;
  }
  __pyx_L5:;

  /* "scamper.pyx":7872
 *         else:
 *             output = None
 *         PyMem_Free(buf)             # <<<<<<<<<<<<<<
 *         return output
 * 
*/
  PyMem_Free(__pyx_v_buf);

  /* "scamper.pyx":7873
 *             output = None
 *         PyMem_Free(buf)
 *         return output             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_output);
  __pyx_r = __pyx_v_output;
  goto __pyx_L0;

  /* "scamper.pyx":7850
 *         return output
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def response_hdr(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHttp.response_hdr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_output);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7875
 *         return output
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def transmit_hdr(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_12transmit_hdr_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_12transmit_hdr_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_12transmit_hdr___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_12transmit_hdr___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  size_t __pyx_v_s;
  char *__pyx_v_buf;
  int __pyx_v_x;
  PyObject *__pyx_v_output = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":7886
 *         cdef size_t s
 *         cdef char *buf
 *         x = cscamper_http.scamper_http_tx_hdr_len_get(self._c, &s)             # <<<<<<<<<<<<<<
 *         if x != 0:
 *             return None
*/
  __pyx_v_x = scamper_http_tx_hdr_len_get(__pyx_v_self->_c, (&__pyx_v_s));

  /* "scamper.pyx":7887
 *         cdef char *buf
 *         x = cscamper_http.scamper_http_tx_hdr_len_get(self._c, &s)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
*/
  __pyx_t_1 = (__pyx_v_x != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":7888
 *         x = cscamper_http.scamper_http_tx_hdr_len_get(self._c, &s)
 *         if x != 0:
 *             return None             # <<<<<<<<<<<<<<
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7887
 *         cdef char *buf
 *         x = cscamper_http.scamper_http_tx_hdr_len_get(self._c, &s)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
*/
  }

  /* "scamper.pyx":7889
 *         if x != 0:
 *             return None
 *         buf = <char *>PyMem_Malloc(s)             # <<<<<<<<<<<<<<
 *         if not buf:
 *             raise MemoryError()
*/
  __pyx_v_buf = ((char *)PyMem_Malloc(__pyx_v_s));

  /* "scamper.pyx":7890
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_tx_hdr_get(self._c, <uint8_t *>buf, s)
*/
  __pyx_t_1 = (!(__pyx_v_buf != 0));
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":7891
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:
 *             raise MemoryError()             # <<<<<<<<<<<<<<
 *         x = cscamper_http.scamper_http_tx_hdr_get(self._c, <uint8_t *>buf, s)
 *         if x == 0:
*/
    PyErr_NoMemory(); __PYX_ERR(0, 7891, __pyx_L1_error)

    /* "scamper.pyx":7890
 *             return None
 *         buf = <char *>PyMem_Malloc(s)
 *         if not buf:             # <<<<<<<<<<<<<<
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_tx_hdr_get(self._c, <uint8_t *>buf, s)
*/
  }

  /* "scamper.pyx":7892
 *         if not buf:
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_tx_hdr_get(self._c, <uint8_t *>buf, s)             # <<<<<<<<<<<<<<
 *         if x == 0:
 *             output = buf.decode('UTF-8', 'strict')
*/
  __pyx_v_x = scamper_http_tx_hdr_get(__pyx_v_self->_c, ((uint8_t *)__pyx_v_buf), __pyx_v_s);

  /* "scamper.pyx":7893
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_tx_hdr_get(self._c, <uint8_t *>buf, s)
 *         if x == 0:             # <<<<<<<<<<<<<<
 *             output = buf.decode('UTF-8', 'strict')
 *         else:
*/
  __pyx_t_1 = (__pyx_v_x == 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":7894
 *         x = cscamper_http.scamper_http_tx_hdr_get(self._c, <uint8_t *>buf, s)
 *         if x == 0:
 *             output = buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         else:
 *             output = None
*/
    __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7894, __pyx_L1_error)
    __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7894, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_output = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":7893
 *             raise MemoryError()
 *         x = cscamper_http.scamper_http_tx_hdr_get(self._c, <uint8_t *>buf, s)
 *         if x == 0:             # <<<<<<<<<<<<<<
 *             output = buf.decode('UTF-8', 'strict')
 *         else:
*/
    goto __pyx_L5;
  }

  /* "scamper.pyx":7896
 *             output = buf.decode('UTF-8', 'strict')
 *         else:
 *             output = None             # <<<<<<<<<<<<<<
 *         PyMem_Free(buf)
 *         return output
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_output = Py_None;
  }
  __pyx_L5:;

  /* "scamper.pyx":7897
 *         else:
 *             output = None
 *         PyMem_Free(buf)             # <<<<<<<<<<<<<<
 *         return output
 * 
*/
  PyMem_Free(__pyx_v_buf);

  /* "scamper.pyx":7898
 *             output = None
 *         PyMem_Free(buf)
 *         return output             # <<<<<<<<<<<<<<
 * 
 *     cdef dict _htfs_todict(self, cscamper_http.scamper_http_hdr_fields_t *htfs):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_output);
  __pyx_r = __pyx_v_output;
  goto __pyx_L0;

  /* "scamper.pyx":7875
 *         return output
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def transmit_hdr(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHttp.transmit_hdr.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_output);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7900
 *         return output
 * 
 *     cdef dict _htfs_todict(self, cscamper_http.scamper_http_hdr_fields_t *htfs):             # <<<<<<<<<<<<<<
 *         x = cscamper_http.scamper_http_hdr_fields_count_get(htfs)
 *         out = dict()
*/

static PyObject *__pyx_f_7scamper_11ScamperHttp__htfs_todict(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, scamper_http_hdr_fields_t *__pyx_v_htfs) {
  size_t __pyx_v_x;
  PyObject *__pyx_v_out = NULL;
  size_t __pyx_v_i;
  scamper_http_hdr_field_t *__pyx_v_htf;
  char const *__pyx_v_name;
  char const *__pyx_v_value;
  PyObject *__pyx_v_nd = NULL;
  PyObject *__pyx_v_vd = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  int __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_htfs_todict", 0);

  /* "scamper.pyx":7901
 * 
 *     cdef dict _htfs_todict(self, cscamper_http.scamper_http_hdr_fields_t *htfs):
 *         x = cscamper_http.scamper_http_hdr_fields_count_get(htfs)             # <<<<<<<<<<<<<<
 *         out = dict()
 *         if x > 0:
*/
  __pyx_v_x = scamper_http_hdr_fields_count_get(__pyx_v_htfs);

  /* "scamper.pyx":7902
 *     cdef dict _htfs_todict(self, cscamper_http.scamper_http_hdr_fields_t *htfs):
 *         x = cscamper_http.scamper_http_hdr_fields_count_get(htfs)
 *         out = dict()             # <<<<<<<<<<<<<<
 *         if x > 0:
 *             for i in range(x):
*/
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7902, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_out = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":7903
 *         x = cscamper_http.scamper_http_hdr_fields_count_get(htfs)
 *         out = dict()
 *         if x > 0:             # <<<<<<<<<<<<<<
 *             for i in range(x):
 *                 htf = cscamper_http.scamper_http_hdr_fields_get(htfs, i)
*/
  __pyx_t_2 = (__pyx_v_x > 0);
  if (__pyx_t_2) {

    /* "scamper.pyx":7904
 *         out = dict()
 *         if x > 0:
 *             for i in range(x):             # <<<<<<<<<<<<<<
 *                 htf = cscamper_http.scamper_http_hdr_fields_get(htfs, i)
 *                 if htf == NULL:
*/
    __pyx_t_3 = __pyx_v_x;
    __pyx_t_4 = __pyx_t_3;
    for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_v_i = __pyx_t_5;

      /* "scamper.pyx":7905
 *         if x > 0:
 *             for i in range(x):
 *                 htf = cscamper_http.scamper_http_hdr_fields_get(htfs, i)             # <<<<<<<<<<<<<<
 *                 if htf == NULL:
 *                     continue
*/
      __pyx_v_htf = scamper_http_hdr_fields_get(__pyx_v_htfs, __pyx_v_i);

      /* "scamper.pyx":7906
 *             for i in range(x):
 *                 htf = cscamper_http.scamper_http_hdr_fields_get(htfs, i)
 *                 if htf == NULL:             # <<<<<<<<<<<<<<
 *                     continue
 *                 name = cscamper_http.scamper_http_hdr_field_name_get(htf)
*/
      __pyx_t_2 = (__pyx_v_htf == NULL);
      if (__pyx_t_2) {

        /* "scamper.pyx":7907
 *                 htf = cscamper_http.scamper_http_hdr_fields_get(htfs, i)
 *                 if htf == NULL:
 *                     continue             # <<<<<<<<<<<<<<
 *                 name = cscamper_http.scamper_http_hdr_field_name_get(htf)
 *                 value = cscamper_http.scamper_http_hdr_field_value_get(htf)
*/
        goto __pyx_L4_continue;

        /* "scamper.pyx":7906
 *             for i in range(x):
 *                 htf = cscamper_http.scamper_http_hdr_fields_get(htfs, i)
 *                 if htf == NULL:             # <<<<<<<<<<<<<<
 *                     continue
 *                 name = cscamper_http.scamper_http_hdr_field_name_get(htf)
*/
      }

      /* "scamper.pyx":7908
 *                 if htf == NULL:
 *                     continue
 *                 name = cscamper_http.scamper_http_hdr_field_name_get(htf)             # <<<<<<<<<<<<<<
 *                 value = cscamper_http.scamper_http_hdr_field_value_get(htf)
 *                 if name == NULL or value == NULL:
*/
      __pyx_v_name = scamper_http_hdr_field_name_get(__pyx_v_htf);

      /* "scamper.pyx":7909
 *                     continue
 *                 name = cscamper_http.scamper_http_hdr_field_name_get(htf)
 *                 value = cscamper_http.scamper_http_hdr_field_value_get(htf)             # <<<<<<<<<<<<<<
 *                 if name == NULL or value == NULL:
 *                     continue
*/
      __pyx_v_value = scamper_http_hdr_field_value_get(__pyx_v_htf);

      /* "scamper.pyx":7910
 *                 name = cscamper_http.scamper_http_hdr_field_name_get(htf)
 *                 value = cscamper_http.scamper_http_hdr_field_value_get(htf)
 *                 if name == NULL or value == NULL:             # <<<<<<<<<<<<<<
 *                     continue
 *                 nd = name.decode('UTF-8', 'strict')
*/
      __pyx_t_6 = (__pyx_v_name == NULL);
      if (!__pyx_t_6) {
      } else {
        __pyx_t_2 = __pyx_t_6;
        goto __pyx_L8_bool_binop_done;
      }
      __pyx_t_6 = (__pyx_v_value == NULL);
      __pyx_t_2 = __pyx_t_6;
      __pyx_L8_bool_binop_done:;
      if (__pyx_t_2) {

        /* "scamper.pyx":7911
 *                 value = cscamper_http.scamper_http_hdr_field_value_get(htf)
 *                 if name == NULL or value == NULL:
 *                     continue             # <<<<<<<<<<<<<<
 *                 nd = name.decode('UTF-8', 'strict')
 *                 vd = value.decode('UTF-8', 'strict')
*/
        goto __pyx_L4_continue;

        /* "scamper.pyx":7910
 *                 name = cscamper_http.scamper_http_hdr_field_name_get(htf)
 *                 value = cscamper_http.scamper_http_hdr_field_value_get(htf)
 *                 if name == NULL or value == NULL:             # <<<<<<<<<<<<<<
 *                     continue
 *                 nd = name.decode('UTF-8', 'strict')
*/
      }

      /* "scamper.pyx":7912
 *                 if name == NULL or value == NULL:
 *                     continue
 *                 nd = name.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *                 vd = value.decode('UTF-8', 'strict')
 *                 out[nd.lower()] = vd.lower()
*/
      __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_name); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7912, __pyx_L1_error)
      __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_name, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7912, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_nd, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "scamper.pyx":7913
 *                     continue
 *                 nd = name.decode('UTF-8', 'strict')
 *                 vd = value.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *                 out[nd.lower()] = vd.lower()
 *         return out
*/
      __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_value); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7913, __pyx_L1_error)
      __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_value, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7913, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_vd, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "scamper.pyx":7914
 *                 nd = name.decode('UTF-8', 'strict')
 *                 vd = value.decode('UTF-8', 'strict')
 *                 out[nd.lower()] = vd.lower()             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
      __pyx_t_8 = __pyx_v_vd;
      __Pyx_INCREF(__pyx_t_8);
      __pyx_t_9 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, NULL};
        __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 7914, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __pyx_t_10 = __pyx_v_nd;
      __Pyx_INCREF(__pyx_t_10);
      __pyx_t_9 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_10, NULL};
        __pyx_t_8 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_9, (1-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 7914, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      if (unlikely((PyDict_SetItem(__pyx_v_out, __pyx_t_8, __pyx_t_1) < 0))) __PYX_ERR(0, 7914, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_L4_continue:;
    }

    /* "scamper.pyx":7903
 *         x = cscamper_http.scamper_http_hdr_fields_count_get(htfs)
 *         out = dict()
 *         if x > 0:             # <<<<<<<<<<<<<<
 *             for i in range(x):
 *                 htf = cscamper_http.scamper_http_hdr_fields_get(htfs, i)
*/
  }

  /* "scamper.pyx":7915
 *                 vd = value.decode('UTF-8', 'strict')
 *                 out[nd.lower()] = vd.lower()
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":7900
 *         return output
 * 
 *     cdef dict _htfs_todict(self, cscamper_http.scamper_http_hdr_fields_t *htfs):             # <<<<<<<<<<<<<<
 *         x = cscamper_http.scamper_http_hdr_fields_count_get(htfs)
 *         out = dict()
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("scamper.ScamperHttp._htfs_todict", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XDECREF(__pyx_v_nd);
  __Pyx_XDECREF(__pyx_v_vd);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7917
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def response_hdrs(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_13response_hdrs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_13response_hdrs_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_13response_hdrs___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_13response_hdrs___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  scamper_http_hdr_fields_t *__pyx_v_htfs;
  PyObject *__pyx_v_out = NULL;
  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("__get__", 0);

  /* "scamper.pyx":7927
 *         :rtype: dict
 *         """
 *         htfs = cscamper_http.scamper_http_rx_hdr_fields_get(self._c)             # <<<<<<<<<<<<<<
 *         if htfs == NULL:
 *             return None
*/
  __pyx_v_htfs = scamper_http_rx_hdr_fields_get(__pyx_v_self->_c);

  /* "scamper.pyx":7928
 *         """
 *         htfs = cscamper_http.scamper_http_rx_hdr_fields_get(self._c)
 *         if htfs == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = self._htfs_todict(htfs)
*/
  __pyx_t_1 = (__pyx_v_htfs == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7929
 *         htfs = cscamper_http.scamper_http_rx_hdr_fields_get(self._c)
 *         if htfs == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = self._htfs_todict(htfs)
 *         cscamper_http.scamper_http_hdr_fields_free(htfs)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7928
 *         """
 *         htfs = cscamper_http.scamper_http_rx_hdr_fields_get(self._c)
 *         if htfs == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = self._htfs_todict(htfs)
*/
  }

  /* "scamper.pyx":7930
 *         if htfs == NULL:
 *             return None
 *         out = self._htfs_todict(htfs)             # <<<<<<<<<<<<<<
 *         cscamper_http.scamper_http_hdr_fields_free(htfs)
 *         return out
*/
  __pyx_t_2 = ((struct __pyx_vtabstruct_7scamper_ScamperHttp *)__pyx_v_self->__pyx_vtab)->_htfs_todict(__pyx_v_self, __pyx_v_htfs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_out = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":7931
 *             return None
 *         out = self._htfs_todict(htfs)
 *         cscamper_http.scamper_http_hdr_fields_free(htfs)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  scamper_http_hdr_fields_free(__pyx_v_htfs);

  /* "scamper.pyx":7932
 *         out = self._htfs_todict(htfs)
 *         cscamper_http.scamper_http_hdr_fields_free(htfs)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":7917
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def response_hdrs(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHttp.response_hdrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7934
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def transmit_hdrs(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_13transmit_hdrs_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_13transmit_hdrs_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_13transmit_hdrs___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_13transmit_hdrs___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  scamper_http_hdr_fields_t *__pyx_v_htfs;
  PyObject *__pyx_v_out = NULL;
  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("__get__", 0);

  /* "scamper.pyx":7944
 *         :rtype: dict
 *         """
 *         htfs = cscamper_http.scamper_http_tx_hdr_fields_get(self._c)             # <<<<<<<<<<<<<<
 *         if htfs == NULL:
 *             return None
*/
  __pyx_v_htfs = scamper_http_tx_hdr_fields_get(__pyx_v_self->_c);

  /* "scamper.pyx":7945
 *         """
 *         htfs = cscamper_http.scamper_http_tx_hdr_fields_get(self._c)
 *         if htfs == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = self._htfs_todict(htfs)
*/
  __pyx_t_1 = (__pyx_v_htfs == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7946
 *         htfs = cscamper_http.scamper_http_tx_hdr_fields_get(self._c)
 *         if htfs == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = self._htfs_todict(htfs)
 *         cscamper_http.scamper_http_hdr_fields_free(htfs)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7945
 *         """
 *         htfs = cscamper_http.scamper_http_tx_hdr_fields_get(self._c)
 *         if htfs == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = self._htfs_todict(htfs)
*/
  }

  /* "scamper.pyx":7947
 *         if htfs == NULL:
 *             return None
 *         out = self._htfs_todict(htfs)             # <<<<<<<<<<<<<<
 *         cscamper_http.scamper_http_hdr_fields_free(htfs)
 *         return out
*/
  __pyx_t_2 = ((struct __pyx_vtabstruct_7scamper_ScamperHttp *)__pyx_v_self->__pyx_vtab)->_htfs_todict(__pyx_v_self, __pyx_v_htfs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7947, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_out = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":7948
 *             return None
 *         out = self._htfs_todict(htfs)
 *         cscamper_http.scamper_http_hdr_fields_free(htfs)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  scamper_http_hdr_fields_free(__pyx_v_htfs);

  /* "scamper.pyx":7949
 *         out = self._htfs_todict(htfs)
 *         cscamper_http.scamper_http_hdr_fields_free(htfs)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     def response_hdr_byname(self, name):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":7934
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def transmit_hdrs(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHttp.transmit_hdrs.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7951
 *         return out
 * 
 *     def response_hdr_byname(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the value of a response header, if present
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_7response_hdr_byname(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHttp_6response_hdr_byname, "\n        get method to obtain the value of a response header, if present\n        in the response.  the value is reported in the same case it was\n        received.  if the caller will fetch multiple response headers,\n        it is more efficient to use the dictionary provided by\n        :attr:`response_hdrs`.\n\n        :param string name: the name of the response header to fetch\n        :returns: the value for the header, if present.\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHttp_7response_hdr_byname = {"response_hdr_byname", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_7response_hdr_byname, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHttp_6response_hdr_byname};
static PyObject *__pyx_pw_7scamper_11ScamperHttp_7response_hdr_byname(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("response_hdr_byname (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_name,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7951, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7951, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "response_hdr_byname", 0) < 0) __PYX_ERR(0, 7951, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("response_hdr_byname", 1, 1, 1, i); __PYX_ERR(0, 7951, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7951, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("response_hdr_byname", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7951, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHttp.response_hdr_byname", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_6response_hdr_byname(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self), __pyx_v_name);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_6response_hdr_byname(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, PyObject *__pyx_v_name) {
  char *__pyx_v_value;
  int __pyx_v_x;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  char const *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  Py_ssize_t __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("response_hdr_byname", 0);

  /* "scamper.pyx":7964
 *         """
 *         cdef char *value
 *         if name is None or not isinstance(name, str):             # <<<<<<<<<<<<<<
 *             return ValueError("name must be a string")
 *         x = cscamper_http.scamper_http_rx_hdr_name_get(self._c,
*/
  __pyx_t_2 = (__pyx_v_name == Py_None);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = PyUnicode_Check(__pyx_v_name); 
  __pyx_t_3 = (!__pyx_t_2);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":7965
 *         cdef char *value
 *         if name is None or not isinstance(name, str):
 *             return ValueError("name must be a string")             # <<<<<<<<<<<<<<
 *         x = cscamper_http.scamper_http_rx_hdr_name_get(self._c,
 *                                                        name.encode('UTF-8'),
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_6 = __pyx_builtin_ValueError; 
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_name_must_be_a_string};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7965, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":7964
 *         """
 *         cdef char *value
 *         if name is None or not isinstance(name, str):             # <<<<<<<<<<<<<<
 *             return ValueError("name must be a string")
 *         x = cscamper_http.scamper_http_rx_hdr_name_get(self._c,
*/
  }

  /* "scamper.pyx":7967
 *             return ValueError("name must be a string")
 *         x = cscamper_http.scamper_http_rx_hdr_name_get(self._c,
 *                                                        name.encode('UTF-8'),             # <<<<<<<<<<<<<<
 *                                                        &value)
 *         if x != 0:
*/
  __pyx_t_6 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_6);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_UTF_8};
    __pyx_t_4 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7967, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 7967, __pyx_L1_error)

  /* "scamper.pyx":7966
 *         if name is None or not isinstance(name, str):
 *             return ValueError("name must be a string")
 *         x = cscamper_http.scamper_http_rx_hdr_name_get(self._c,             # <<<<<<<<<<<<<<
 *                                                        name.encode('UTF-8'),
 *                                                        &value)
*/
  __pyx_v_x = scamper_http_rx_hdr_name_get(__pyx_v_self->_c, __pyx_t_8, (&__pyx_v_value));
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "scamper.pyx":7969
 *                                                        name.encode('UTF-8'),
 *                                                        &value)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return RuntimeError(f"could not extract {name}")
 *         if value == NULL:
*/
  __pyx_t_1 = (__pyx_v_x != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":7970
 *                                                        &value)
 *         if x != 0:
 *             return RuntimeError(f"could not extract {name}")             # <<<<<<<<<<<<<<
 *         if value == NULL:
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = NULL;
    __Pyx_INCREF(__pyx_builtin_RuntimeError);
    __pyx_t_5 = __pyx_builtin_RuntimeError; 
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_could_not_extract, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7970, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":7969
 *                                                        name.encode('UTF-8'),
 *                                                        &value)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return RuntimeError(f"could not extract {name}")
 *         if value == NULL:
*/
  }

  /* "scamper.pyx":7971
 *         if x != 0:
 *             return RuntimeError(f"could not extract {name}")
 *         if value == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = value.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_value == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7972
 *             return RuntimeError(f"could not extract {name}")
 *         if value == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = value.decode('UTF-8', 'strict')
 *         free(value)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7971
 *         if x != 0:
 *             return RuntimeError(f"could not extract {name}")
 *         if value == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = value.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":7973
 *         if value == NULL:
 *             return None
 *         out = value.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(value)
 *         return out
*/
  __pyx_t_11 = __Pyx_ssize_strlen(__pyx_v_value); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7973, __pyx_L1_error)
  __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_value, 0, __pyx_t_11, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7973, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_out = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "scamper.pyx":7974
 *             return None
 *         out = value.decode('UTF-8', 'strict')
 *         free(value)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_value);

  /* "scamper.pyx":7975
 *         out = value.decode('UTF-8', 'strict')
 *         free(value)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     def transmit_hdr_byname(self, name):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":7951
 *         return out
 * 
 *     def response_hdr_byname(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the value of a response header, if present
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("scamper.ScamperHttp.response_hdr_byname", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7977
 *         return out
 * 
 *     def transmit_hdr_byname(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the value of a transmit header entry, if present
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_9transmit_hdr_byname(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHttp_8transmit_hdr_byname, "\n        get method to obtain the value of a transmit header entry, if present\n        in the request.  the value is reported in the same case it was\n        transmitted.  if the caller will fetch multiple transmit headers,\n        it is more to efficient use the dictionary provided by\n        :attr:`transmit_hdrs`.\n\n        :param string name: the name of the transmit header to fetch\n        :returns: the value for the header, if present.\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHttp_9transmit_hdr_byname = {"transmit_hdr_byname", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_9transmit_hdr_byname, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHttp_8transmit_hdr_byname};
static PyObject *__pyx_pw_7scamper_11ScamperHttp_9transmit_hdr_byname(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_name = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transmit_hdr_byname (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_name,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 7977, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7977, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "transmit_hdr_byname", 0) < 0) __PYX_ERR(0, 7977, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("transmit_hdr_byname", 1, 1, 1, i); __PYX_ERR(0, 7977, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 7977, __pyx_L3_error)
    }
    __pyx_v_name = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("transmit_hdr_byname", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 7977, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHttp.transmit_hdr_byname", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_8transmit_hdr_byname(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self), __pyx_v_name);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_8transmit_hdr_byname(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, PyObject *__pyx_v_name) {
  char *__pyx_v_value;
  int __pyx_v_x;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  char const *__pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  Py_ssize_t __pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("transmit_hdr_byname", 0);

  /* "scamper.pyx":7990
 *         """
 *         cdef char *value
 *         if name is None or not isinstance(name, str):             # <<<<<<<<<<<<<<
 *             return ValueError("name must be a string")
 *         x = cscamper_http.scamper_http_tx_hdr_name_get(self._c,
*/
  __pyx_t_2 = (__pyx_v_name == Py_None);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = PyUnicode_Check(__pyx_v_name); 
  __pyx_t_3 = (!__pyx_t_2);
  __pyx_t_1 = __pyx_t_3;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":7991
 *         cdef char *value
 *         if name is None or not isinstance(name, str):
 *             return ValueError("name must be a string")             # <<<<<<<<<<<<<<
 *         x = cscamper_http.scamper_http_tx_hdr_name_get(self._c,
 *                                                        name.encode('UTF-8'),
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_6 = __pyx_builtin_ValueError; 
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_name_must_be_a_string};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7991, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":7990
 *         """
 *         cdef char *value
 *         if name is None or not isinstance(name, str):             # <<<<<<<<<<<<<<
 *             return ValueError("name must be a string")
 *         x = cscamper_http.scamper_http_tx_hdr_name_get(self._c,
*/
  }

  /* "scamper.pyx":7993
 *             return ValueError("name must be a string")
 *         x = cscamper_http.scamper_http_tx_hdr_name_get(self._c,
 *                                                        name.encode('UTF-8'),             # <<<<<<<<<<<<<<
 *                                                        &value)
 *         if x != 0:
*/
  __pyx_t_6 = __pyx_v_name;
  __Pyx_INCREF(__pyx_t_6);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_UTF_8};
    __pyx_t_4 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7993, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
  }
  __pyx_t_8 = __Pyx_PyObject_AsString(__pyx_t_4); if (unlikely((!__pyx_t_8) && PyErr_Occurred())) __PYX_ERR(0, 7993, __pyx_L1_error)

  /* "scamper.pyx":7992
 *         if name is None or not isinstance(name, str):
 *             return ValueError("name must be a string")
 *         x = cscamper_http.scamper_http_tx_hdr_name_get(self._c,             # <<<<<<<<<<<<<<
 *                                                        name.encode('UTF-8'),
 *                                                        &value)
*/
  __pyx_v_x = scamper_http_tx_hdr_name_get(__pyx_v_self->_c, __pyx_t_8, (&__pyx_v_value));
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "scamper.pyx":7995
 *                                                        name.encode('UTF-8'),
 *                                                        &value)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return RuntimeError(f"could not extract {name}")
 *         if value == NULL:
*/
  __pyx_t_1 = (__pyx_v_x != 0);
  if (__pyx_t_1) {

    /* "scamper.pyx":7996
 *                                                        &value)
 *         if x != 0:
 *             return RuntimeError(f"could not extract {name}")             # <<<<<<<<<<<<<<
 *         if value == NULL:
 *             return None
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = NULL;
    __Pyx_INCREF(__pyx_builtin_RuntimeError);
    __pyx_t_5 = __pyx_builtin_RuntimeError; 
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 7996, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_could_not_extract, __pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 7996, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_10};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7996, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":7995
 *                                                        name.encode('UTF-8'),
 *                                                        &value)
 *         if x != 0:             # <<<<<<<<<<<<<<
 *             return RuntimeError(f"could not extract {name}")
 *         if value == NULL:
*/
  }

  /* "scamper.pyx":7997
 *         if x != 0:
 *             return RuntimeError(f"could not extract {name}")
 *         if value == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = value.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_value == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":7998
 *             return RuntimeError(f"could not extract {name}")
 *         if value == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = value.decode('UTF-8', 'strict')
 *         free(value)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":7997
 *         if x != 0:
 *             return RuntimeError(f"could not extract {name}")
 *         if value == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = value.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":7999
 *         if value == NULL:
 *             return None
 *         out = value.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(value)
 *         return out
*/
  __pyx_t_11 = __Pyx_ssize_strlen(__pyx_v_value); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 7999, __pyx_L1_error)
  __pyx_t_4 = __Pyx_decode_c_string(__pyx_v_value, 0, __pyx_t_11, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 7999, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_v_out = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "scamper.pyx":8000
 *             return None
 *         out = value.decode('UTF-8', 'strict')
 *         free(value)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_value);

  /* "scamper.pyx":8001
 *         out = value.decode('UTF-8', 'strict')
 *         free(value)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":7977
 *         return out
 * 
 *     def transmit_hdr_byname(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the value of a transmit header entry, if present
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("scamper.ScamperHttp.transmit_hdr_byname", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8003
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def buf_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_9buf_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_9buf_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_9buf_count___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_9buf_count___get__(struct __pyx_obj_7scamper_ScamperHttp *__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("__get__", 0);

  /* "scamper.pyx":8011
 *         :rtype: int:
 *         """
 *         return cscamper_http.scamper_http_bufc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def buf(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_http_bufc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8003
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def buf_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttp.buf_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8013
 *         return cscamper_http.scamper_http_bufc_get(self._c)
 * 
 *     def buf(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         buf(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_11buf(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHttp_10buf, "\n        buf(i)\n        get method to return a specific buffer in the exchange, starting at\n        zero.\n\n        :returns: the nominated buffer\n        :rtype: ScamperHttpBuf\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHttp_11buf = {"buf", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_11buf, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHttp_10buf};
static PyObject *__pyx_pw_7scamper_11ScamperHttp_11buf(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("buf (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8013, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8013, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "buf", 0) < 0) __PYX_ERR(0, 8013, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("buf", 1, 1, 1, i); __PYX_ERR(0, 8013, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8013, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("buf", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 8013, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHttp.buf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_10buf(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_10buf(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_http_buf_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint32_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("buf", 0);

  /* "scamper.pyx":8022
 *         :rtype: ScamperHttpBuf
 *         """
 *         c = cscamper_http.scamper_http_buf_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperHttpBuf.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint32_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint32_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8022, __pyx_L1_error)
  __pyx_v_c = scamper_http_buf_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":8023
 *         """
 *         c = cscamper_http.scamper_http_buf_get(self._c, i)
 *         return ScamperHttpBuf.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     def bufs(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_14ScamperHttpBuf_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8023, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8013
 *         return cscamper_http.scamper_http_bufc_get(self._c)
 * 
 *     def buf(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         buf(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperHttp.buf", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8025
 *         return ScamperHttpBuf.from_ptr(c)
 * 
 *     def bufs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator that returns each buffer in
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_13bufs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperHttp_12bufs, "\n        get method to obtain an iterator that returns each buffer in\n        the exchange.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperHttp_13bufs = {"bufs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_13bufs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHttp_12bufs};
static PyObject *__pyx_pw_7scamper_11ScamperHttp_13bufs(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bufs (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("bufs", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("bufs", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_12bufs(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_12bufs(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bufs", 0);

  /* "scamper.pyx":8030
 *         the exchange.
 *         """
 *         return _ScamperHttpIterator(self)             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperHttpIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8030, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8030, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8025
 *         return ScamperHttpBuf.from_ptr(c)
 * 
 *     def bufs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator that returns each buffer in
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperHttp.bufs", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":7669
 *     """
 *     cdef cscamper_http.scamper_http_t *_c
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperHttp_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_5_inst___get__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_5_inst___get__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperHttp_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperHttp_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperHttp_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 7669, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperHttp._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperHttp_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_11ScamperHttp_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperHttp_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperHttp_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperHttp_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_14__reduce_cython__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHttp.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperHttp_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperHttp_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperHttp_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperHttp.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperHttp_16__setstate_cython__(((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperHttp_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperHttp *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperHttp.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8036
 * ####
 * class _ScamperUdpprobeReplyIterator:
 *     def __init__(self, up):             # <<<<<<<<<<<<<<
 *         self._up = up
 *         self._pi = 0
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_29_ScamperUdpprobeReplyIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_29_ScamperUdpprobeReplyIterator_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_29_ScamperUdpprobeReplyIterator_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_29_ScamperUdpprobeReplyIterator_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_up = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_up,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8036, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8036, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8036, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 8036, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, i); __PYX_ERR(0, 8036, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 2)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8036, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8036, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_up = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, __pyx_nargs); __PYX_ERR(0, 8036, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperUdpprobeReplyIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_29_ScamperUdpprobeReplyIterator___init__(__pyx_self, __pyx_v_self, __pyx_v_up);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_29_ScamperUdpprobeReplyIterator___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_up) {
  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("__init__", 0);

  /* "scamper.pyx":8037
 * class _ScamperUdpprobeReplyIterator:
 *     def __init__(self, up):
 *         self._up = up             # <<<<<<<<<<<<<<
 *         self._pi = 0
 *         self._pc = up.probe_sent
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_up_2, __pyx_v_up) < 0) __PYX_ERR(0, 8037, __pyx_L1_error)

  /* "scamper.pyx":8038
 *     def __init__(self, up):
 *         self._up = up
 *         self._pi = 0             # <<<<<<<<<<<<<<
 *         self._pc = up.probe_sent
 *         self._ri = 0
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_pi, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 8038, __pyx_L1_error)

  /* "scamper.pyx":8039
 *         self._up = up
 *         self._pi = 0
 *         self._pc = up.probe_sent             # <<<<<<<<<<<<<<
 *         self._ri = 0
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_up, __pyx_mstate_global->__pyx_n_u_probe_sent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8039, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_pc, __pyx_t_1) < 0) __PYX_ERR(0, 8039, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":8040
 *         self._pi = 0
 *         self._pc = up.probe_sent
 *         self._ri = 0             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ri, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 8040, __pyx_L1_error)

  /* "scamper.pyx":8036
 * ####
 * class _ScamperUdpprobeReplyIterator:
 *     def __init__(self, up):             # <<<<<<<<<<<<<<
 *         self._up = up
 *         self._pi = 0
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper._ScamperUdpprobeReplyIterator.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8042
 *         self._ri = 0
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_29_ScamperUdpprobeReplyIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_29_ScamperUdpprobeReplyIterator_3__iter__ = {"__iter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_29_ScamperUdpprobeReplyIterator_3__iter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_29_ScamperUdpprobeReplyIterator_3__iter__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8042, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8042, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__iter__", 0) < 0) __PYX_ERR(0, 8042, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, i); __PYX_ERR(0, 8042, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8042, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__iter__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 8042, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperUdpprobeReplyIterator.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_29_ScamperUdpprobeReplyIterator_2__iter__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_29_ScamperUdpprobeReplyIterator_2__iter__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":8043
 * 
 *     def __iter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self);
  __pyx_r = __pyx_v_self;
  goto __pyx_L0;

  /* "scamper.pyx":8042
 *         self._ri = 0
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8045
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._pi < self._pc:
 *             probe = self._up.probe(self._pi)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_29_ScamperUdpprobeReplyIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_29_ScamperUdpprobeReplyIterator_5__next__ = {"__next__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_29_ScamperUdpprobeReplyIterator_5__next__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_29_ScamperUdpprobeReplyIterator_5__next__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8045, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8045, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__next__", 0) < 0) __PYX_ERR(0, 8045, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, i); __PYX_ERR(0, 8045, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8045, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__next__", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 8045, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperUdpprobeReplyIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_29_ScamperUdpprobeReplyIterator_4__next__(__pyx_self, __pyx_v_self);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_29_ScamperUdpprobeReplyIterator_4__next__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self) {
  PyObject *__pyx_v_probe = NULL;
  PyObject *__pyx_v_reply = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":8046
 * 
 *     def __next__(self):
 *         while self._pi < self._pc:             # <<<<<<<<<<<<<<
 *             probe = self._up.probe(self._pi)
 *             while self._ri < probe.reply_count:
*/
  while (1) {
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_pi); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_pc); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyObject_RichCompare(__pyx_t_1, __pyx_t_2, Py_LT); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8046, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 8046, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (!__pyx_t_4) break;

    /* "scamper.pyx":8047
 *     def __next__(self):
 *         while self._pi < self._pc:
 *             probe = self._up.probe(self._pi)             # <<<<<<<<<<<<<<
 *             while self._ri < probe.reply_count:
 *                 reply = probe.reply(self._ri)
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_up_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8047, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_2);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_pi); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8047, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_5};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_probe, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8047, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_XDECREF_SET(__pyx_v_probe, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "scamper.pyx":8048
 *         while self._pi < self._pc:
 *             probe = self._up.probe(self._pi)
 *             while self._ri < probe.reply_count:             # <<<<<<<<<<<<<<
 *                 reply = probe.reply(self._ri)
 *                 self._ri += 1
*/
    while (1) {
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ri); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8048, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_probe, __pyx_mstate_global->__pyx_n_u_reply_count); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8048, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_1, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8048, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_4 < 0))) __PYX_ERR(0, 8048, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (!__pyx_t_4) break;

      /* "scamper.pyx":8049
 *             probe = self._up.probe(self._pi)
 *             while self._ri < probe.reply_count:
 *                 reply = probe.reply(self._ri)             # <<<<<<<<<<<<<<
 *                 self._ri += 1
 *                 return reply
*/
      __pyx_t_1 = __pyx_v_probe;
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ri); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8049, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_6 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_3};
        __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_reply, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8049, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __pyx_v_reply = __pyx_t_5;
      __pyx_t_5 = 0;

      /* "scamper.pyx":8050
 *             while self._ri < probe.reply_count:
 *                 reply = probe.reply(self._ri)
 *                 self._ri += 1             # <<<<<<<<<<<<<<
 *                 return reply
 *             self._pi += 1
*/
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ri); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8050, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyLong_AddObjC(__pyx_t_5, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8050, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ri, __pyx_t_3) < 0) __PYX_ERR(0, 8050, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "scamper.pyx":8051
 *                 reply = probe.reply(self._ri)
 *                 self._ri += 1
 *                 return reply             # <<<<<<<<<<<<<<
 *             self._pi += 1
 *             self._ri = 0
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_reply);
      __pyx_r = __pyx_v_reply;
      goto __pyx_L0;
    }

    /* "scamper.pyx":8052
 *                 self._ri += 1
 *                 return reply
 *             self._pi += 1             # <<<<<<<<<<<<<<
 *             self._ri = 0
 *         raise StopIteration
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_pi); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8052, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyLong_AddObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8052, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_pi, __pyx_t_5) < 0) __PYX_ERR(0, 8052, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":8053
 *                 return reply
 *             self._pi += 1
 *             self._ri = 0             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_ri, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 8053, __pyx_L1_error)
  }

  /* "scamper.pyx":8054
 *             self._pi += 1
 *             self._ri = 0
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperUdpprobeReply:
*/
  __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
  __PYX_ERR(0, 8054, __pyx_L1_error)

  /* "scamper.pyx":8045
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._pi < self._pc:
 *             probe = self._up.probe(self._pi)
*/

  /* 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_5);
  __Pyx_AddTraceback("scamper._ScamperUdpprobeReplyIterator.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_probe);
  __Pyx_XDECREF(__pyx_v_reply);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8063
 *     cdef cscamper_udpprobe.scamper_udpprobe_reply_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_20ScamperUdpprobeReply_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_20ScamperUdpprobeReply_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeReply___init__(((struct __pyx_obj_7scamper_ScamperUdpprobeReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_20ScamperUdpprobeReply___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":8064
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8064, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 8064, __pyx_L1_error)

  /* "scamper.pyx":8063
 *     cdef cscamper_udpprobe.scamper_udpprobe_reply_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeReply.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8066
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_udpprobe.scamper_udpprobe_reply_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_20ScamperUdpprobeReply_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_20ScamperUdpprobeReply_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_20ScamperUdpprobeReply_2__dealloc__(((struct __pyx_obj_7scamper_ScamperUdpprobeReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_20ScamperUdpprobeReply_2__dealloc__(struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":8067
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_udpprobe.scamper_udpprobe_reply_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8068
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_udpprobe.scamper_udpprobe_reply_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_udpprobe_reply_free(__pyx_v_self->_c);

    /* "scamper.pyx":8067
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_udpprobe.scamper_udpprobe_reply_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":8066
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_udpprobe.scamper_udpprobe_reply_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":8070
 *             cscamper_udpprobe.scamper_udpprobe_reply_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperUdpprobeReply from_ptr(cscamper_udpprobe.scamper_udpprobe_reply_t *ptr):
 *         cdef ScamperUdpprobeReply ur = ScamperUdpprobeReply.__new__(ScamperUdpprobeReply)
*/

static struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_f_7scamper_20ScamperUdpprobeReply_from_ptr(scamper_udpprobe_reply_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_ur = 0;
  struct __pyx_obj_7scamper_ScamperUdpprobeReply *__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("from_ptr", 0);

  /* "scamper.pyx":8072
 *     @staticmethod
 *     cdef ScamperUdpprobeReply from_ptr(cscamper_udpprobe.scamper_udpprobe_reply_t *ptr):
 *         cdef ScamperUdpprobeReply ur = ScamperUdpprobeReply.__new__(ScamperUdpprobeReply)             # <<<<<<<<<<<<<<
 *         ur._c = cscamper_udpprobe.scamper_udpprobe_reply_use(ptr)
 *         return ur
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperUdpprobeReply(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperUdpprobeReply), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8072, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_ur = ((struct __pyx_obj_7scamper_ScamperUdpprobeReply *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":8073
 *     cdef ScamperUdpprobeReply from_ptr(cscamper_udpprobe.scamper_udpprobe_reply_t *ptr):
 *         cdef ScamperUdpprobeReply ur = ScamperUdpprobeReply.__new__(ScamperUdpprobeReply)
 *         ur._c = cscamper_udpprobe.scamper_udpprobe_reply_use(ptr)             # <<<<<<<<<<<<<<
 *         return ur
 * 
*/
  __pyx_v_ur->_c = scamper_udpprobe_reply_use(__pyx_v_ptr);

  /* "scamper.pyx":8074
 *         cdef ScamperUdpprobeReply ur = ScamperUdpprobeReply.__new__(ScamperUdpprobeReply)
 *         ur._c = cscamper_udpprobe.scamper_udpprobe_reply_use(ptr)
 *         return ur             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_ur);
  __pyx_r = __pyx_v_ur;
  goto __pyx_L0;

  /* "scamper.pyx":8070
 *             cscamper_udpprobe.scamper_udpprobe_reply_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperUdpprobeReply from_ptr(cscamper_udpprobe.scamper_udpprobe_reply_t *ptr):
 *         cdef ScamperUdpprobeReply ur = ScamperUdpprobeReply.__new__(ScamperUdpprobeReply)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeReply.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_ur);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8076
 *         return ur
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeReply_2rx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeReply_2rx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeReply_2rx___get__(((struct __pyx_obj_7scamper_ScamperUdpprobeReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeReply_2rx___get__(struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":8084
 *         :rtype: datetime
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_reply_rx_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_udpprobe_reply_rx_get(__pyx_v_self->_c);

  /* "scamper.pyx":8085
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_reply_rx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8086
 *         c = cscamper_udpprobe.scamper_udpprobe_reply_rx_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":8085
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_reply_rx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":8087
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8087, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8087, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":8088
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8088, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":8089
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8089, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 8088, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8088, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8076
 *         return ur
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def rx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeReply.rx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8091
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def payload(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeReply_7payload_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeReply_7payload_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeReply_7payload___get__(((struct __pyx_obj_7scamper_ScamperUdpprobeReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeReply_7payload___get__(struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self) {
  size_t __pyx_v_s;
  uint8_t const *__pyx_v_buf;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":8101
 *         cdef size_t s
 *         cdef const uint8_t *buf
 *         s = cscamper_udpprobe.scamper_udpprobe_reply_len_get(self._c)             # <<<<<<<<<<<<<<
 *         buf = cscamper_udpprobe.scamper_udpprobe_reply_data_get(self._c)
 *         if s == 0 or buf == NULL:
*/
  __pyx_v_s = scamper_udpprobe_reply_len_get(__pyx_v_self->_c);

  /* "scamper.pyx":8102
 *         cdef const uint8_t *buf
 *         s = cscamper_udpprobe.scamper_udpprobe_reply_len_get(self._c)
 *         buf = cscamper_udpprobe.scamper_udpprobe_reply_data_get(self._c)             # <<<<<<<<<<<<<<
 *         if s == 0 or buf == NULL:
 *             return None
*/
  __pyx_v_buf = scamper_udpprobe_reply_data_get(__pyx_v_self->_c);

  /* "scamper.pyx":8103
 *         s = cscamper_udpprobe.scamper_udpprobe_reply_len_get(self._c)
 *         buf = cscamper_udpprobe.scamper_udpprobe_reply_data_get(self._c)
 *         if s == 0 or buf == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return buf[:s]
*/
  __pyx_t_2 = (__pyx_v_s == 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_buf == NULL);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":8104
 *         buf = cscamper_udpprobe.scamper_udpprobe_reply_data_get(self._c)
 *         if s == 0 or buf == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return buf[:s]
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":8103
 *         s = cscamper_udpprobe.scamper_udpprobe_reply_len_get(self._c)
 *         buf = cscamper_udpprobe.scamper_udpprobe_reply_data_get(self._c)
 *         if s == 0 or buf == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return buf[:s]
*/
  }

  /* "scamper.pyx":8105
 *         if s == 0 or buf == NULL:
 *             return None
 *         return buf[:s]             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_buf) + 0, __pyx_v_s - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8105, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8091
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def payload(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeReply.payload.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8107
 *         return buf[:s]
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ifname(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeReply_6ifname_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeReply_6ifname_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeReply_6ifname___get__(((struct __pyx_obj_7scamper_ScamperUdpprobeReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeReply_6ifname___get__(struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self) {
  char const *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":8116
 *         :rtype: string
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_reply_ifname_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_udpprobe_reply_ifname_get(__pyx_v_self->_c);

  /* "scamper.pyx":8117
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_reply_ifname_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8118
 *         c = cscamper_udpprobe.scamper_udpprobe_reply_ifname_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":8117
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_reply_ifname_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":8119
 *         if c == NULL:
 *             return None
 *         return c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperUdpprobeProbe:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8119, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8119, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8107
 *         return buf[:s]
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ifname(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeReply.ifname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeReply_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20ScamperUdpprobeReply_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperUdpprobeReply_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeReply_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeReply_4__reduce_cython__(((struct __pyx_obj_7scamper_ScamperUdpprobeReply *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeReply_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperUdpprobeReply.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeReply_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20ScamperUdpprobeReply_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperUdpprobeReply_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeReply_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperUdpprobeReply.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeReply_6__setstate_cython__(((struct __pyx_obj_7scamper_ScamperUdpprobeReply *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeReply_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeReply *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperUdpprobeReply.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8129
 *     cdef uint8_t _i, _replyc
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_20ScamperUdpprobeProbe_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_20ScamperUdpprobeProbe_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeProbe___init__(((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_20ScamperUdpprobeProbe___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":8130
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8130, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 8130, __pyx_L1_error)

  /* "scamper.pyx":8129
 *     cdef uint8_t _i, _replyc
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8132
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_udpprobe.scamper_udpprobe_probe_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_20ScamperUdpprobeProbe_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_20ScamperUdpprobeProbe_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_20ScamperUdpprobeProbe_2__dealloc__(((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_20ScamperUdpprobeProbe_2__dealloc__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":8133
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_udpprobe.scamper_udpprobe_probe_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8134
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_udpprobe.scamper_udpprobe_probe_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
    scamper_udpprobe_probe_free(__pyx_v_self->_c);

    /* "scamper.pyx":8133
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_udpprobe.scamper_udpprobe_probe_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":8132
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_udpprobe.scamper_udpprobe_probe_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":8136
 *             cscamper_udpprobe.scamper_udpprobe_probe_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperUdpprobeProbe from_ptr(cscamper_udpprobe.scamper_udpprobe_probe_t *ptr):
 *         cdef ScamperUdpprobeProbe pr = ScamperUdpprobeProbe.__new__(ScamperUdpprobeProbe)
*/

static struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_f_7scamper_20ScamperUdpprobeProbe_from_ptr(scamper_udpprobe_probe_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_pr = 0;
  struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__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("from_ptr", 0);

  /* "scamper.pyx":8138
 *     @staticmethod
 *     cdef ScamperUdpprobeProbe from_ptr(cscamper_udpprobe.scamper_udpprobe_probe_t *ptr):
 *         cdef ScamperUdpprobeProbe pr = ScamperUdpprobeProbe.__new__(ScamperUdpprobeProbe)             # <<<<<<<<<<<<<<
 *         pr._c = cscamper_udpprobe.scamper_udpprobe_probe_use(ptr)
 *         return pr
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperUdpprobeProbe(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperUdpprobeProbe), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8138, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_pr = ((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":8139
 *     cdef ScamperUdpprobeProbe from_ptr(cscamper_udpprobe.scamper_udpprobe_probe_t *ptr):
 *         cdef ScamperUdpprobeProbe pr = ScamperUdpprobeProbe.__new__(ScamperUdpprobeProbe)
 *         pr._c = cscamper_udpprobe.scamper_udpprobe_probe_use(ptr)             # <<<<<<<<<<<<<<
 *         return pr
 * 
*/
  __pyx_v_pr->_c = scamper_udpprobe_probe_use(__pyx_v_ptr);

  /* "scamper.pyx":8140
 *         cdef ScamperUdpprobeProbe pr = ScamperUdpprobeProbe.__new__(ScamperUdpprobeProbe)
 *         pr._c = cscamper_udpprobe.scamper_udpprobe_probe_use(ptr)
 *         return pr             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_pr);
  __pyx_r = __pyx_v_pr;
  goto __pyx_L0;

  /* "scamper.pyx":8136
 *             cscamper_udpprobe.scamper_udpprobe_probe_free(self._c)
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperUdpprobeProbe from_ptr(cscamper_udpprobe.scamper_udpprobe_probe_t *ptr):
 *         cdef ScamperUdpprobeProbe pr = ScamperUdpprobeProbe.__new__(ScamperUdpprobeProbe)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_pr);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8142
 *         return pr
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         self._replyc = cscamper_udpprobe.scamper_udpprobe_probe_replyc_get(self._c)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_5__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_5__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeProbe_4__iter__(((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_4__iter__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":8143
 * 
 *     def __iter__(self):
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         self._replyc = cscamper_udpprobe.scamper_udpprobe_probe_replyc_get(self._c)
 *         return self
*/
  __pyx_v_self->_i = 0;

  /* "scamper.pyx":8144
 *     def __iter__(self):
 *         self._i = 0
 *         self._replyc = cscamper_udpprobe.scamper_udpprobe_probe_replyc_get(self._c)             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_v_self->_replyc = scamper_udpprobe_probe_replyc_get(__pyx_v_self->_c);

  /* "scamper.pyx":8145
 *         self._i = 0
 *         self._replyc = cscamper_udpprobe.scamper_udpprobe_probe_replyc_get(self._c)
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":8142
 *         return pr
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         self._replyc = cscamper_udpprobe.scamper_udpprobe_probe_replyc_get(self._c)
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8147
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._replyc:
 *             reply = cscamper_udpprobe.scamper_udpprobe_probe_reply_get(self._c, self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_7__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_7__next__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeProbe_6__next__(((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_6__next__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self) {
  scamper_udpprobe_reply_t *__pyx_v_reply;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_error_without_exception = 0; /* StopIteration */
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":8148
 * 
 *     def __next__(self):
 *         while self._i < self._replyc:             # <<<<<<<<<<<<<<
 *             reply = cscamper_udpprobe.scamper_udpprobe_probe_reply_get(self._c, self._i)
 *             self._i += 1
*/
  while (1) {
    __pyx_t_1 = (__pyx_v_self->_i < __pyx_v_self->_replyc);
    if (!__pyx_t_1) break;

    /* "scamper.pyx":8149
 *     def __next__(self):
 *         while self._i < self._replyc:
 *             reply = cscamper_udpprobe.scamper_udpprobe_probe_reply_get(self._c, self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             if reply != NULL:
*/
    __pyx_v_reply = scamper_udpprobe_probe_reply_get(__pyx_v_self->_c, __pyx_v_self->_i);

    /* "scamper.pyx":8150
 *         while self._i < self._replyc:
 *             reply = cscamper_udpprobe.scamper_udpprobe_probe_reply_get(self._c, self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             if reply != NULL:
 *                 return ScamperUdpprobeReply.from_ptr(reply)
*/
    __pyx_v_self->_i = (__pyx_v_self->_i + 1);

    /* "scamper.pyx":8151
 *             reply = cscamper_udpprobe.scamper_udpprobe_probe_reply_get(self._c, self._i)
 *             self._i += 1
 *             if reply != NULL:             # <<<<<<<<<<<<<<
 *                 return ScamperUdpprobeReply.from_ptr(reply)
 *         raise StopIteration
*/
    __pyx_t_1 = (__pyx_v_reply != NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":8152
 *             self._i += 1
 *             if reply != NULL:
 *                 return ScamperUdpprobeReply.from_ptr(reply)             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_20ScamperUdpprobeReply_from_ptr(__pyx_v_reply)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":8151
 *             reply = cscamper_udpprobe.scamper_udpprobe_probe_reply_get(self._c, self._i)
 *             self._i += 1
 *             if reply != NULL:             # <<<<<<<<<<<<<<
 *                 return ScamperUdpprobeReply.from_ptr(reply)
 *         raise StopIteration
*/
    }
  }

  /* "scamper.pyx":8153
 *             if reply != NULL:
 *                 return ScamperUdpprobeReply.from_ptr(reply)
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_error_without_exception = 1;
  goto __pyx_L1_error;;

  /* "scamper.pyx":8147
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._replyc:
 *             reply = cscamper_udpprobe.scamper_udpprobe_probe_reply_get(self._c, self._i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  if (!__pyx_error_without_exception) {
    __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8155
 *         raise StopIteration
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_2tx_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_2tx_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeProbe_2tx___get__(((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_2tx___get__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":8163
 *         :rtype: datetime
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_probe_tx_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_udpprobe_probe_tx_get(__pyx_v_self->_c);

  /* "scamper.pyx":8164
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_probe_tx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8165
 *         c = cscamper_udpprobe.scamper_udpprobe_probe_tx_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":8164
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_probe_tx_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":8166
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8166, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":8167
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8167, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":8168
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8168, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 8167, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8167, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8155
 *         raise StopIteration
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tx(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.tx.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8170
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def sport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_5sport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_5sport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeProbe_5sport___get__(((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_5sport___get__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__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("__get__", 0);

  /* "scamper.pyx":8178
 *         :rtype: int
 *         """
 *         return cscamper_udpprobe.scamper_udpprobe_probe_sport_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_udpprobe_probe_sport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8178, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8170
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def sport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.sport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8180
 *         return cscamper_udpprobe.scamper_udpprobe_probe_sport_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_count(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_11reply_count_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_11reply_count_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeProbe_11reply_count___get__(((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_11reply_count___get__(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__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("__get__", 0);

  /* "scamper.pyx":8188
 *         :rtype: int
 *         """
 *         return cscamper_udpprobe.scamper_udpprobe_probe_replyc_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def reply(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_udpprobe_probe_replyc_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8188, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8180
 *         return cscamper_udpprobe.scamper_udpprobe_probe_sport_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def reply_count(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.reply_count.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8190
 *         return cscamper_udpprobe.scamper_udpprobe_probe_replyc_get(self._c)
 * 
 *     def reply(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         reply(i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_9reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_20ScamperUdpprobeProbe_8reply, "\n        reply(i)\n        get method to obtain a reply for a specific attempt, starting at zero.\n\n        :returns: the nominated reply\n        :rtype: ScamperUdpprobeReply\n        ");
static PyMethodDef __pyx_mdef_7scamper_20ScamperUdpprobeProbe_9reply = {"reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperUdpprobeProbe_9reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_20ScamperUdpprobeProbe_8reply};
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_9reply(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("reply (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8190, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8190, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "reply", 0) < 0) __PYX_ERR(0, 8190, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("reply", 1, 1, 1, i); __PYX_ERR(0, 8190, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8190, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("reply", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 8190, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.reply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeProbe_8reply(((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_8reply(struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_udpprobe_reply_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint8_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("reply", 0);

  /* "scamper.pyx":8198
 *         :rtype: ScamperUdpprobeReply
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_probe_reply_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperUdpprobeReply.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint8_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8198, __pyx_L1_error)
  __pyx_v_c = scamper_udpprobe_probe_reply_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":8199
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_probe_reply_get(self._c, i)
 *         return ScamperUdpprobeReply.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperUdpprobe:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_20ScamperUdpprobeReply_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8190
 *         return cscamper_udpprobe.scamper_udpprobe_probe_replyc_get(self._c)
 * 
 *     def reply(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         reply(i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.reply", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20ScamperUdpprobeProbe_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperUdpprobeProbe_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeProbe_10__reduce_cython__(((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_20ScamperUdpprobeProbe_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperUdpprobeProbe_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_20ScamperUdpprobeProbe_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_20ScamperUdpprobeProbe_12__setstate_cython__(((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_20ScamperUdpprobeProbe_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobeProbe *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperUdpprobeProbe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8210
 *     cdef uint8_t _i, _probe_sent
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_15ScamperUdpprobe_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_15ScamperUdpprobe_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe___init__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_15ScamperUdpprobe___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":8211
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8211, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 8211, __pyx_L1_error)

  /* "scamper.pyx":8210
 *     cdef uint8_t _i, _probe_sent
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8213
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_udpprobe.scamper_udpprobe_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_15ScamperUdpprobe_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_15ScamperUdpprobe_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_15ScamperUdpprobe_2__dealloc__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_15ScamperUdpprobe_2__dealloc__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":8214
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_udpprobe.scamper_udpprobe_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8215
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             cscamper_udpprobe.scamper_udpprobe_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
    scamper_udpprobe_free(__pyx_v_self->_c);

    /* "scamper.pyx":8214
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_udpprobe.scamper_udpprobe_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":8213
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             cscamper_udpprobe.scamper_udpprobe_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":8217
 *             cscamper_udpprobe.scamper_udpprobe_free(self._c)
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         self._probe_sent = cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_4__iter__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_4__iter__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":8218
 * 
 *     def __iter__(self):
 *         self._i = 0             # <<<<<<<<<<<<<<
 *         self._probe_sent = cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)
 *         return self
*/
  __pyx_v_self->_i = 0;

  /* "scamper.pyx":8219
 *     def __iter__(self):
 *         self._i = 0
 *         self._probe_sent = cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_v_self->_probe_sent = scamper_udpprobe_probe_sent_get(__pyx_v_self->_c);

  /* "scamper.pyx":8220
 *         self._i = 0
 *         self._probe_sent = cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":8217
 *             cscamper_udpprobe.scamper_udpprobe_free(self._c)
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         self._i = 0
 *         self._probe_sent = cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8222
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._probe_sent:
 *             probe = cscamper_udpprobe.scamper_udpprobe_probe_get(self._c, self._i)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_7__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_7__next__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_6__next__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_6__next__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  scamper_udpprobe_probe_t *__pyx_v_probe;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_error_without_exception = 0; /* StopIteration */
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":8223
 * 
 *     def __next__(self):
 *         while self._i < self._probe_sent:             # <<<<<<<<<<<<<<
 *             probe = cscamper_udpprobe.scamper_udpprobe_probe_get(self._c, self._i)
 *             self._i += 1
*/
  while (1) {
    __pyx_t_1 = (__pyx_v_self->_i < __pyx_v_self->_probe_sent);
    if (!__pyx_t_1) break;

    /* "scamper.pyx":8224
 *     def __next__(self):
 *         while self._i < self._probe_sent:
 *             probe = cscamper_udpprobe.scamper_udpprobe_probe_get(self._c, self._i)             # <<<<<<<<<<<<<<
 *             self._i += 1
 *             if probe != NULL:
*/
    __pyx_v_probe = scamper_udpprobe_probe_get(__pyx_v_self->_c, __pyx_v_self->_i);

    /* "scamper.pyx":8225
 *         while self._i < self._probe_sent:
 *             probe = cscamper_udpprobe.scamper_udpprobe_probe_get(self._c, self._i)
 *             self._i += 1             # <<<<<<<<<<<<<<
 *             if probe != NULL:
 *                 return ScamperUdpprobeProbe.from_ptr(probe)
*/
    __pyx_v_self->_i = (__pyx_v_self->_i + 1);

    /* "scamper.pyx":8226
 *             probe = cscamper_udpprobe.scamper_udpprobe_probe_get(self._c, self._i)
 *             self._i += 1
 *             if probe != NULL:             # <<<<<<<<<<<<<<
 *                 return ScamperUdpprobeProbe.from_ptr(probe)
 *         raise StopIteration
*/
    __pyx_t_1 = (__pyx_v_probe != NULL);
    if (__pyx_t_1) {

      /* "scamper.pyx":8227
 *             self._i += 1
 *             if probe != NULL:
 *                 return ScamperUdpprobeProbe.from_ptr(probe)             # <<<<<<<<<<<<<<
 *         raise StopIteration
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_20ScamperUdpprobeProbe_from_ptr(__pyx_v_probe)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8227, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":8226
 *             probe = cscamper_udpprobe.scamper_udpprobe_probe_get(self._c, self._i)
 *             self._i += 1
 *             if probe != NULL:             # <<<<<<<<<<<<<<
 *                 return ScamperUdpprobeProbe.from_ptr(probe)
 *         raise StopIteration
*/
    }
  }

  /* "scamper.pyx":8228
 *             if probe != NULL:
 *                 return ScamperUdpprobeProbe.from_ptr(probe)
 *         raise StopIteration             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_error_without_exception = 1;
  goto __pyx_L1_error;;

  /* "scamper.pyx":8222
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._probe_sent:
 *             probe = cscamper_udpprobe.scamper_udpprobe_probe_get(self._c, self._i)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  if (!__pyx_error_without_exception) {
    __Pyx_AddTraceback("scamper.ScamperUdpprobe.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8230
 *         raise StopIteration
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperUdpprobe from_ptr(cscamper_udpprobe.scamper_udpprobe_t *ptr):
 *         cdef ScamperUdpprobe up = ScamperUdpprobe.__new__(ScamperUdpprobe)
*/

static struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_f_7scamper_15ScamperUdpprobe_from_ptr(scamper_udpprobe_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_up = 0;
  struct __pyx_obj_7scamper_ScamperUdpprobe *__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("from_ptr", 0);

  /* "scamper.pyx":8232
 *     @staticmethod
 *     cdef ScamperUdpprobe from_ptr(cscamper_udpprobe.scamper_udpprobe_t *ptr):
 *         cdef ScamperUdpprobe up = ScamperUdpprobe.__new__(ScamperUdpprobe)             # <<<<<<<<<<<<<<
 *         up._c = ptr
 *         return up
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperUdpprobe(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperUdpprobe), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8232, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_up = ((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":8233
 *     cdef ScamperUdpprobe from_ptr(cscamper_udpprobe.scamper_udpprobe_t *ptr):
 *         cdef ScamperUdpprobe up = ScamperUdpprobe.__new__(ScamperUdpprobe)
 *         up._c = ptr             # <<<<<<<<<<<<<<
 *         return up
 * 
*/
  __pyx_v_up->_c = __pyx_v_ptr;

  /* "scamper.pyx":8234
 *         cdef ScamperUdpprobe up = ScamperUdpprobe.__new__(ScamperUdpprobe)
 *         up._c = ptr
 *         return up             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_up);
  __pyx_r = __pyx_v_up;
  goto __pyx_L0;

  /* "scamper.pyx":8230
 *         raise StopIteration
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperUdpprobe from_ptr(cscamper_udpprobe.scamper_udpprobe_t *ptr):
 *         cdef ScamperUdpprobe up = ScamperUdpprobe.__new__(ScamperUdpprobe)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_up);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8236
 *         return up
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_4inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_4inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_4inst___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_4inst___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":8245
 *         :rtype: ScamperInst
 *         """
 *         return self._inst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* "scamper.pyx":8236
 *         return up
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def inst(self):
 *         """
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8247
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_4list_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_4list_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_4list___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_4list___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  scamper_list_t *__pyx_v_c;
  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("__get__", 0);

  /* "scamper.pyx":8255
 *         :rtype: ScamperList
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_list_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperList.from_ptr(c)
 * 
*/
  __pyx_v_c = scamper_udpprobe_list_get(__pyx_v_self->_c);

  /* "scamper.pyx":8256
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_list_get(self._c)
 *         return ScamperList.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8256, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8247
 *         return self._inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def list(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.list.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8258
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5cycle_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5cycle_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_5cycle___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_5cycle___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  scamper_cycle_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  uint16_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":8266
 *         :rtype: ScamperCycle
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_cycle_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
*/
  __pyx_v_c = scamper_udpprobe_cycle_get(__pyx_v_self->_c);

  /* "scamper.pyx":8267
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_cycle_get(self._c)
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_t_1); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c, __pyx_t_2)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8258
 *         return ScamperList.from_ptr(c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cycle(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.cycle.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8269
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_6userid_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_6userid_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_6userid___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_6userid___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__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("__get__", 0);

  /* "scamper.pyx":8277
 *         :rtype: int
 *         """
 *         return cscamper_udpprobe.scamper_udpprobe_userid_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint32_t(scamper_udpprobe_userid_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8269
 *         return ScamperCycle.from_ptr(c, SCAMPER_FILE_OBJ_CYCLE_DEF)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def userid(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.userid.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8279
 *         return cscamper_udpprobe.scamper_udpprobe_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5start_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5start_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_5start___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_5start___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  PyObject *__pyx_v_t = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":8287
 *         :rtype: datetime
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_start_get(self._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_udpprobe_start_get(__pyx_v_self->_c);

  /* "scamper.pyx":8288
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8289
 *         c = cscamper_udpprobe.scamper_udpprobe_start_get(self._c)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":8288
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_start_get(self._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         t = time.gmtime(c.tv_sec)
*/
  }

  /* "scamper.pyx":8290
 *         if c == NULL:
 *             return None
 *         t = time.gmtime(c.tv_sec)             # <<<<<<<<<<<<<<
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)
*/
  __pyx_t_3 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_time); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_gmtime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8290, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_5))) {
    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
    assert(__pyx_t_3);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
    __Pyx_INCREF(__pyx_t_3);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_4};
    __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8290, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_v_t = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "scamper.pyx":8291
 *             return None
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,             # <<<<<<<<<<<<<<
 *                                  tzinfo=datetime.timezone.utc)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_5 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_t, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_t, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_t, 2, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_t, 3, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_10 = __Pyx_GetItemInt(__pyx_v_t, 4, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 8291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __pyx_t_11 = __Pyx_GetItemInt(__pyx_v_t, 5, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 8291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_11);
  __pyx_t_12 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 8291, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_12);

  /* "scamper.pyx":8292
 *         t = time.gmtime(c.tv_sec)
 *         return datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], c.tv_usec,
 *                                  tzinfo=datetime.timezone.utc)             # <<<<<<<<<<<<<<
 * 
 *     def to_json(self):
*/
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __pyx_t_14 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_mstate_global->__pyx_n_u_timezone); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_14);
  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_14, __pyx_mstate_global->__pyx_n_u_utc); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 8292, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_13);
  __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_5);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_5);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[8 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, __pyx_t_4, __pyx_t_7, __pyx_t_8, __pyx_t_9, __pyx_t_10, __pyx_t_11, __pyx_t_12};
    __pyx_t_14 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_14)) __PYX_ERR(0, 8291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_14);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_tzinfo, __pyx_t_13, __pyx_t_14, __pyx_callargs+8, 0) < 0) __PYX_ERR(0, 8291, __pyx_L1_error)
    __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_6, (8-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_14);
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
    __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
    __Pyx_DECREF(__pyx_t_14); __pyx_t_14 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8291, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8279
 *         return cscamper_udpprobe.scamper_udpprobe_userid_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def start(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_XDECREF(__pyx_t_13);
  __Pyx_XDECREF(__pyx_t_14);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.start.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8294
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this UDP probe measurement.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_9to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperUdpprobe_8to_json, "\n        get method to obtain a JSON rendering of this UDP probe measurement.\n\n        :returns: json representation\n        :rtype: string\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperUdpprobe_9to_json = {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperUdpprobe_9to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperUdpprobe_8to_json};
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_9to_json(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("to_json (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("to_json", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("to_json", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_8to_json(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_8to_json(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("to_json", 0);

  /* "scamper.pyx":8301
 *         :rtype: string
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_tojson(self._c, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_udpprobe_tojson(__pyx_v_self->_c, NULL);

  /* "scamper.pyx":8302
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8303
 *         c = cscamper_udpprobe.scamper_udpprobe_tojson(self._c, NULL)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":8302
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_tojson(self._c, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         out = c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":8304
 *         if c == NULL:
 *             return None
 *         out = c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         free(c)
 *         return out
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8304, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8304, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_out = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":8305
 *             return None
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)             # <<<<<<<<<<<<<<
 *         return out
 * 
*/
  free(__pyx_v_c);

  /* "scamper.pyx":8306
 *         out = c.decode('UTF-8', 'strict')
 *         free(c)
 *         return out             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_out);
  __pyx_r = __pyx_v_out;
  goto __pyx_L0;

  /* "scamper.pyx":8294
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this UDP probe measurement.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.to_json", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8308
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_3src_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_3src_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_3src___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_3src___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":8316
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_udpprobe.scamper_udpprobe_src_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_udpprobe_src_get(__pyx_v_self->_c);

  /* "scamper.pyx":8317
 *         """
 *         c_a = cscamper_udpprobe.scamper_udpprobe_src_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8317, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8308
 *         return out
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def src(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.src.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8319
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_3dst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_3dst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_3dst___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_3dst___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  scamper_addr_t *__pyx_v_c_a;
  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("__get__", 0);

  /* "scamper.pyx":8327
 *         :rtype: ScamperAddr
 *         """
 *         c_a = cscamper_udpprobe.scamper_udpprobe_dst_get(self._c)             # <<<<<<<<<<<<<<
 *         return ScamperAddr.from_ptr(c_a)
 * 
*/
  __pyx_v_c_a = scamper_udpprobe_dst_get(__pyx_v_self->_c);

  /* "scamper.pyx":8328
 *         """
 *         c_a = cscamper_udpprobe.scamper_udpprobe_dst_get(self._c)
 *         return ScamperAddr.from_ptr(c_a)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperAddr_from_ptr(__pyx_v_c_a)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8328, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8319
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dst(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.dst.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8330
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def sport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5sport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5sport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_5sport___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_5sport___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__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("__get__", 0);

  /* "scamper.pyx":8339
 *         :rtype: int
 *         """
 *         return cscamper_udpprobe.scamper_udpprobe_sport_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_udpprobe_sport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8330
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def sport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.sport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8341
 *         return cscamper_udpprobe.scamper_udpprobe_sport_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dport(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5dport_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5dport_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_5dport___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_5dport___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__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("__get__", 0);

  /* "scamper.pyx":8350
 *         :rtype: int
 *         """
 *         return cscamper_udpprobe.scamper_udpprobe_dport_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint16_t(scamper_udpprobe_dport_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8341
 *         return cscamper_udpprobe.scamper_udpprobe_sport_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def dport(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.dport.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8352
 *         return cscamper_udpprobe.scamper_udpprobe_dport_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_timeout(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_12wait_timeout_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_12wait_timeout_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_12wait_timeout___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_12wait_timeout___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  struct timeval const *__pyx_v_c;
  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;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":8361
 *         :rtype: timedelta
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_wait_timeout_get(self._c)             # <<<<<<<<<<<<<<
 *         return datetime.timedelta(seconds=c.tv_sec,
 *                                   microseconds=c.tv_usec)
*/
  __pyx_v_c = scamper_udpprobe_wait_timeout_get(__pyx_v_self->_c);

  /* "scamper.pyx":8362
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_wait_timeout_get(self._c)
 *         return datetime.timedelta(seconds=c.tv_sec,             # <<<<<<<<<<<<<<
 *                                   microseconds=c.tv_usec)
 * 
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyLong_From_time_t(__pyx_v_c->tv_sec); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8362, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "scamper.pyx":8363
 *         c = cscamper_udpprobe.scamper_udpprobe_wait_timeout_get(self._c)
 *         return datetime.timedelta(seconds=c.tv_sec,
 *                                   microseconds=c.tv_usec)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_t_5 = __Pyx_PyLong_From_suseconds_t(__pyx_v_c->tv_usec); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8363, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_6 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 2 : 0)] = {__pyx_t_2, NULL};
    __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_t_3, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 8362, __pyx_L1_error)
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_microseconds, __pyx_t_5, __pyx_t_7, __pyx_callargs+1, 1) < 0) __PYX_ERR(0, 8362, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_4, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8362, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8352
 *         return cscamper_udpprobe.scamper_udpprobe_dport_get(self._c)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def wait_timeout(self):
 *         """
*/

  /* 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_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.wait_timeout.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8365
 *                                   microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def payload(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_7payload_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_7payload_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_7payload___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_7payload___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  size_t __pyx_v_s;
  uint8_t const *__pyx_v_buf;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__get__", 0);

  /* "scamper.pyx":8375
 *         cdef size_t s
 *         cdef const uint8_t *buf
 *         s = cscamper_udpprobe.scamper_udpprobe_len_get(self._c)             # <<<<<<<<<<<<<<
 *         buf = cscamper_udpprobe.scamper_udpprobe_data_get(self._c)
 *         if s == 0 or buf == NULL:
*/
  __pyx_v_s = scamper_udpprobe_len_get(__pyx_v_self->_c);

  /* "scamper.pyx":8376
 *         cdef const uint8_t *buf
 *         s = cscamper_udpprobe.scamper_udpprobe_len_get(self._c)
 *         buf = cscamper_udpprobe.scamper_udpprobe_data_get(self._c)             # <<<<<<<<<<<<<<
 *         if s == 0 or buf == NULL:
 *             return None
*/
  __pyx_v_buf = scamper_udpprobe_data_get(__pyx_v_self->_c);

  /* "scamper.pyx":8377
 *         s = cscamper_udpprobe.scamper_udpprobe_len_get(self._c)
 *         buf = cscamper_udpprobe.scamper_udpprobe_data_get(self._c)
 *         if s == 0 or buf == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return buf[:s]
*/
  __pyx_t_2 = (__pyx_v_s == 0);
  if (!__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_buf == NULL);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":8378
 *         buf = cscamper_udpprobe.scamper_udpprobe_data_get(self._c)
 *         if s == 0 or buf == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return buf[:s]
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":8377
 *         s = cscamper_udpprobe.scamper_udpprobe_len_get(self._c)
 *         buf = cscamper_udpprobe.scamper_udpprobe_data_get(self._c)
 *         if s == 0 or buf == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return buf[:s]
*/
  }

  /* "scamper.pyx":8379
 *         if s == 0 or buf == NULL:
 *             return None
 *         return buf[:s]             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyBytes_FromStringAndSize(((char const *)__pyx_v_buf) + 0, __pyx_v_s - 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8379, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8365
 *                                   microseconds=c.tv_usec)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def payload(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.payload.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8381
 *         return buf[:s]
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_sent(self):
 *         return cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_10probe_sent_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_10probe_sent_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_10probe_sent___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_10probe_sent___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__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("__get__", 0);

  /* "scamper.pyx":8383
 *     @property
 *     def probe_sent(self):
 *         return cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def probe(self, i):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_uint8_t(scamper_udpprobe_probe_sent_get(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8383, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8381
 *         return buf[:s]
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def probe_sent(self):
 *         return cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.probe_sent.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8385
 *         return cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)
 * 
 *     def probe(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a specific probe
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_11probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperUdpprobe_10probe, "\n        get method that returns a specific probe\n\n        :returns: the probe identified\n        :rtype: ScamperUdpprobeProbe\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperUdpprobe_11probe = {"probe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperUdpprobe_11probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperUdpprobe_10probe};
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_11probe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_i = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("probe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_i,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8385, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8385, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "probe", 0) < 0) __PYX_ERR(0, 8385, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("probe", 1, 1, 1, i); __PYX_ERR(0, 8385, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8385, __pyx_L3_error)
    }
    __pyx_v_i = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("probe", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 8385, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_10probe(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self), __pyx_v_i);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_10probe(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self, PyObject *__pyx_v_i) {
  scamper_udpprobe_probe_t *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  uint8_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("probe", 0);

  /* "scamper.pyx":8392
 *         :rtype: ScamperUdpprobeProbe
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_probe_get(self._c, i)             # <<<<<<<<<<<<<<
 *         return ScamperUdpprobeProbe.from_ptr(c)
 * 
*/
  __pyx_t_1 = __Pyx_PyLong_As_uint8_t(__pyx_v_i); if (unlikely((__pyx_t_1 == ((uint8_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8392, __pyx_L1_error)
  __pyx_v_c = scamper_udpprobe_probe_get(__pyx_v_self->_c, __pyx_t_1);

  /* "scamper.pyx":8393
 *         """
 *         c = cscamper_udpprobe.scamper_udpprobe_probe_get(self._c, i)
 *         return ScamperUdpprobeProbe.from_ptr(c)             # <<<<<<<<<<<<<<
 * 
 *     def replies(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_20ScamperUdpprobeProbe_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8393, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8385
 *         return cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)
 * 
 *     def probe(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a specific probe
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.probe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8395
 *         return ScamperUdpprobeProbe.from_ptr(c)
 * 
 *     def replies(self):             # <<<<<<<<<<<<<<
 *         """
 *         get an Iterator that contains the replies obtained during the
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_13replies(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_15ScamperUdpprobe_12replies, "\n        get an Iterator that contains the replies obtained during the\n        measurement.\n        ");
static PyMethodDef __pyx_mdef_7scamper_15ScamperUdpprobe_13replies = {"replies", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperUdpprobe_13replies, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperUdpprobe_12replies};
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_13replies(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("replies (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("replies", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("replies", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_12replies(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_12replies(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("replies", 0);

  /* "scamper.pyx":8400
 *         measurement.
 *         """
 *         return _ScamperUdpprobeReplyIterator(self)             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReplyIterator); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8400, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_3))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, ((PyObject *)__pyx_v_self)};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8400, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8395
 *         return ScamperUdpprobeProbe.from_ptr(c)
 * 
 *     def replies(self):             # <<<<<<<<<<<<<<
 *         """
 *         get an Iterator that contains the replies obtained during the
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.replies", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8207
 *     """
 *     cdef cscamper_udpprobe.scamper_udpprobe_t *_c
 *     cdef public ScamperInst _inst             # <<<<<<<<<<<<<<
 *     cdef uint8_t _i, _probe_sent
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5_inst_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_5_inst_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_5_inst___get__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_5_inst___get__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self->_inst);
  __pyx_r = ((PyObject *)__pyx_v_self->_inst);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_15ScamperUdpprobe_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_15ScamperUdpprobe_5_inst_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_5_inst_2__set__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_15ScamperUdpprobe_5_inst_2__set__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __pyx_t_1 = __pyx_v_value;
  __Pyx_INCREF(__pyx_t_1);
  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst))))) __PYX_ERR(0, 8207, __pyx_L1_error)
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperUdpprobe._inst.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_15ScamperUdpprobe_5_inst_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_15ScamperUdpprobe_5_inst_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_5_inst_4__del__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_15ScamperUdpprobe_5_inst_4__del__(struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF((PyObject *)__pyx_v_self->_inst);
  __Pyx_DECREF((PyObject *)__pyx_v_self->_inst);
  __pyx_v_self->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None);

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperUdpprobe_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperUdpprobe_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_14__reduce_cython__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_15ScamperUdpprobe_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperUdpprobe_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_15ScamperUdpprobe_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_15ScamperUdpprobe_16__setstate_cython__(((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_15ScamperUdpprobe_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperUdpprobe *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperUdpprobe.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8429
 *     cdef char _mode
 * 
 *     def __init__(self, filename, mode='r', kind=None, filter_types=None):             # <<<<<<<<<<<<<<
 *         if mode != 'r' and mode != 'w':
 *             raise ValueError("invalid mode: " + mode)
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperFile_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_11ScamperFile_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_filename = 0;
  PyObject *__pyx_v_mode = 0;
  PyObject *__pyx_v_kind = 0;
  PyObject *__pyx_v_filter_types = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_filename,&__pyx_mstate_global->__pyx_n_u_mode,&__pyx_mstate_global->__pyx_n_u_kind,&__pyx_mstate_global->__pyx_n_u_filter_types,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8429, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 8429, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8429, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8429, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8429, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 8429, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_r));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, i); __PYX_ERR(0, 8429, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 8429, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8429, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8429, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8429, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)__pyx_mstate_global->__pyx_n_u_r));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_filename = values[0];
    __pyx_v_mode = values[1];
    __pyx_v_kind = values[2];
    __pyx_v_filter_types = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 4, __pyx_nargs); __PYX_ERR(0, 8429, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperFile.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperFile___init__(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self), __pyx_v_filename, __pyx_v_mode, __pyx_v_kind, __pyx_v_filter_types);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperFile___init__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self, PyObject *__pyx_v_filename, PyObject *__pyx_v_mode, PyObject *__pyx_v_kind, PyObject *__pyx_v_filter_types) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  long __pyx_t_8;
  char const *__pyx_t_9;
  char const *__pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);
  __Pyx_INCREF(__pyx_v_kind);

  /* "scamper.pyx":8430
 * 
 *     def __init__(self, filename, mode='r', kind=None, filter_types=None):
 *         if mode != 'r' and mode != 'w':             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid mode: " + mode)
 *         if mode == 'r':
*/
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_mode, __pyx_mstate_global->__pyx_n_u_r, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 8430, __pyx_L1_error)
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_mode, __pyx_mstate_global->__pyx_n_u_w, Py_NE)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 8430, __pyx_L1_error)
  __pyx_t_1 = __pyx_t_2;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":8431
 *     def __init__(self, filename, mode='r', kind=None, filter_types=None):
 *         if mode != 'r' and mode != 'w':
 *             raise ValueError("invalid mode: " + mode)             # <<<<<<<<<<<<<<
 *         if mode == 'r':
 *             if kind is not None:
*/
    __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_5 = __pyx_builtin_ValueError; 
    __pyx_t_6 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_invalid_mode, __pyx_v_mode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8431, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8431, __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_ERR(0, 8431, __pyx_L1_error)

    /* "scamper.pyx":8430
 * 
 *     def __init__(self, filename, mode='r', kind=None, filter_types=None):
 *         if mode != 'r' and mode != 'w':             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid mode: " + mode)
 *         if mode == 'r':
*/
  }

  /* "scamper.pyx":8432
 *         if mode != 'r' and mode != 'w':
 *             raise ValueError("invalid mode: " + mode)
 *         if mode == 'r':             # <<<<<<<<<<<<<<
 *             if kind is not None:
 *                 raise ValueError("do not specify kind when opening a file for reading")
*/
  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_mode, __pyx_mstate_global->__pyx_n_u_r, Py_EQ)); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8432, __pyx_L1_error)
  if (__pyx_t_1) {

    /* "scamper.pyx":8433
 *             raise ValueError("invalid mode: " + mode)
 *         if mode == 'r':
 *             if kind is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("do not specify kind when opening a file for reading")
 *             else:
*/
    __pyx_t_1 = (__pyx_v_kind != Py_None);
    if (unlikely(__pyx_t_1)) {

      /* "scamper.pyx":8434
 *         if mode == 'r':
 *             if kind is not None:
 *                 raise ValueError("do not specify kind when opening a file for reading")             # <<<<<<<<<<<<<<
 *             else:
 *                 kind = "warts"
*/
      __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_6 = __pyx_builtin_ValueError; 
      __pyx_t_7 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_do_not_specify_kind_when_opening};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8434, __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_ERR(0, 8434, __pyx_L1_error)

      /* "scamper.pyx":8433
 *             raise ValueError("invalid mode: " + mode)
 *         if mode == 'r':
 *             if kind is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("do not specify kind when opening a file for reading")
 *             else:
*/
    }

    /* "scamper.pyx":8436
 *                 raise ValueError("do not specify kind when opening a file for reading")
 *             else:
 *                 kind = "warts"             # <<<<<<<<<<<<<<
 *         elif mode == 'w' and kind is None:
 *             if filename.endswith(".gz"):
*/
    /*else*/ {
      __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_warts);
      __Pyx_DECREF_SET(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_warts);
    }

    /* "scamper.pyx":8432
 *         if mode != 'r' and mode != 'w':
 *             raise ValueError("invalid mode: " + mode)
 *         if mode == 'r':             # <<<<<<<<<<<<<<
 *             if kind is not None:
 *                 raise ValueError("do not specify kind when opening a file for reading")
*/
    goto __pyx_L6;
  }

  /* "scamper.pyx":8437
 *             else:
 *                 kind = "warts"
 *         elif mode == 'w' and kind is None:             # <<<<<<<<<<<<<<
 *             if filename.endswith(".gz"):
 *                 kind = "warts.gz"
*/
  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_mode, __pyx_mstate_global->__pyx_n_u_w, Py_EQ)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 8437, __pyx_L1_error)
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_v_kind == Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L8_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":8438
 *                 kind = "warts"
 *         elif mode == 'w' and kind is None:
 *             if filename.endswith(".gz"):             # <<<<<<<<<<<<<<
 *                 kind = "warts.gz"
 *             elif filename.endswith(".bz2"):
*/
    __pyx_t_6 = __pyx_v_filename;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_gz};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_endswith, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8438, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8438, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_1) {

      /* "scamper.pyx":8439
 *         elif mode == 'w' and kind is None:
 *             if filename.endswith(".gz"):
 *                 kind = "warts.gz"             # <<<<<<<<<<<<<<
 *             elif filename.endswith(".bz2"):
 *                 kind = "warts.bz2"
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_warts_gz);
      __Pyx_DECREF_SET(__pyx_v_kind, __pyx_mstate_global->__pyx_kp_u_warts_gz);

      /* "scamper.pyx":8438
 *                 kind = "warts"
 *         elif mode == 'w' and kind is None:
 *             if filename.endswith(".gz"):             # <<<<<<<<<<<<<<
 *                 kind = "warts.gz"
 *             elif filename.endswith(".bz2"):
*/
      goto __pyx_L10;
    }

    /* "scamper.pyx":8440
 *             if filename.endswith(".gz"):
 *                 kind = "warts.gz"
 *             elif filename.endswith(".bz2"):             # <<<<<<<<<<<<<<
 *                 kind = "warts.bz2"
 *             elif filename.endswith(".xz"):
*/
    __pyx_t_6 = __pyx_v_filename;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_bz2};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_endswith, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8440, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8440, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_1) {

      /* "scamper.pyx":8441
 *                 kind = "warts.gz"
 *             elif filename.endswith(".bz2"):
 *                 kind = "warts.bz2"             # <<<<<<<<<<<<<<
 *             elif filename.endswith(".xz"):
 *                 kind = "warts.xz"
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_warts_bz2);
      __Pyx_DECREF_SET(__pyx_v_kind, __pyx_mstate_global->__pyx_kp_u_warts_bz2);

      /* "scamper.pyx":8440
 *             if filename.endswith(".gz"):
 *                 kind = "warts.gz"
 *             elif filename.endswith(".bz2"):             # <<<<<<<<<<<<<<
 *                 kind = "warts.bz2"
 *             elif filename.endswith(".xz"):
*/
      goto __pyx_L10;
    }

    /* "scamper.pyx":8442
 *             elif filename.endswith(".bz2"):
 *                 kind = "warts.bz2"
 *             elif filename.endswith(".xz"):             # <<<<<<<<<<<<<<
 *                 kind = "warts.xz"
 *             elif filename.endswith(".json"):
*/
    __pyx_t_6 = __pyx_v_filename;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_xz};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_endswith, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8442, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8442, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_1) {

      /* "scamper.pyx":8443
 *                 kind = "warts.bz2"
 *             elif filename.endswith(".xz"):
 *                 kind = "warts.xz"             # <<<<<<<<<<<<<<
 *             elif filename.endswith(".json"):
 *                 kind = "json"
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_warts_xz);
      __Pyx_DECREF_SET(__pyx_v_kind, __pyx_mstate_global->__pyx_kp_u_warts_xz);

      /* "scamper.pyx":8442
 *             elif filename.endswith(".bz2"):
 *                 kind = "warts.bz2"
 *             elif filename.endswith(".xz"):             # <<<<<<<<<<<<<<
 *                 kind = "warts.xz"
 *             elif filename.endswith(".json"):
*/
      goto __pyx_L10;
    }

    /* "scamper.pyx":8444
 *             elif filename.endswith(".xz"):
 *                 kind = "warts.xz"
 *             elif filename.endswith(".json"):             # <<<<<<<<<<<<<<
 *                 kind = "json"
 *             elif filename.endswith(".txt"):
*/
    __pyx_t_6 = __pyx_v_filename;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_json};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_endswith, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8444, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8444, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_1) {

      /* "scamper.pyx":8445
 *                 kind = "warts.xz"
 *             elif filename.endswith(".json"):
 *                 kind = "json"             # <<<<<<<<<<<<<<
 *             elif filename.endswith(".txt"):
 *                 kind = "text"
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_json_2);
      __Pyx_DECREF_SET(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_json_2);

      /* "scamper.pyx":8444
 *             elif filename.endswith(".xz"):
 *                 kind = "warts.xz"
 *             elif filename.endswith(".json"):             # <<<<<<<<<<<<<<
 *                 kind = "json"
 *             elif filename.endswith(".txt"):
*/
      goto __pyx_L10;
    }

    /* "scamper.pyx":8446
 *             elif filename.endswith(".json"):
 *                 kind = "json"
 *             elif filename.endswith(".txt"):             # <<<<<<<<<<<<<<
 *                 kind = "text"
 *             else:
*/
    __pyx_t_6 = __pyx_v_filename;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_txt_2};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_endswith, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8446, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8446, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_1) {

      /* "scamper.pyx":8447
 *                 kind = "json"
 *             elif filename.endswith(".txt"):
 *                 kind = "text"             # <<<<<<<<<<<<<<
 *             else:
 *                 kind = "warts"
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_text);
      __Pyx_DECREF_SET(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_text);

      /* "scamper.pyx":8446
 *             elif filename.endswith(".json"):
 *                 kind = "json"
 *             elif filename.endswith(".txt"):             # <<<<<<<<<<<<<<
 *                 kind = "text"
 *             else:
*/
      goto __pyx_L10;
    }

    /* "scamper.pyx":8449
 *                 kind = "text"
 *             else:
 *                 kind = "warts"             # <<<<<<<<<<<<<<
 *         self._mode = ord(mode)
 * 
*/
    /*else*/ {
      __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_warts);
      __Pyx_DECREF_SET(__pyx_v_kind, __pyx_mstate_global->__pyx_n_u_warts);
    }
    __pyx_L10:;

    /* "scamper.pyx":8437
 *             else:
 *                 kind = "warts"
 *         elif mode == 'w' and kind is None:             # <<<<<<<<<<<<<<
 *             if filename.endswith(".gz"):
 *                 kind = "warts.gz"
*/
  }
  __pyx_L6:;

  /* "scamper.pyx":8450
 *             else:
 *                 kind = "warts"
 *         self._mode = ord(mode)             # <<<<<<<<<<<<<<
 * 
 *         if filter_types is not None:
*/
  __pyx_t_8 = __Pyx_PyObject_Ord(__pyx_v_mode); if (unlikely(__pyx_t_8 == ((long)(long)(Py_UCS4)-1))) __PYX_ERR(0, 8450, __pyx_L1_error)
  __pyx_v_self->_mode = __pyx_t_8;

  /* "scamper.pyx":8452
 *         self._mode = ord(mode)
 * 
 *         if filter_types is not None:             # <<<<<<<<<<<<<<
 *             self.filter_types(*filter_types)
 * 
*/
  __pyx_t_1 = (__pyx_v_filter_types != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8453
 * 
 *         if filter_types is not None:
 *             self.filter_types(*filter_types)             # <<<<<<<<<<<<<<
 * 
 *         self._c_sf = cscamper_file.scamper_file_open(filename.encode('UTF-8'),
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_filter_types); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PySequence_Tuple(__pyx_v_filter_types); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8453, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":8452
 *         self._mode = ord(mode)
 * 
 *         if filter_types is not None:             # <<<<<<<<<<<<<<
 *             self.filter_types(*filter_types)
 * 
*/
  }

  /* "scamper.pyx":8455
 *             self.filter_types(*filter_types)
 * 
 *         self._c_sf = cscamper_file.scamper_file_open(filename.encode('UTF-8'),             # <<<<<<<<<<<<<<
 *                                                      ord(mode),
 *                                                      kind.encode('UTF-8'))
*/
  __pyx_t_6 = __pyx_v_filename;
  __Pyx_INCREF(__pyx_t_6);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_UTF_8};
    __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8455, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __pyx_t_9 = __Pyx_PyObject_AsString(__pyx_t_5); if (unlikely((!__pyx_t_9) && PyErr_Occurred())) __PYX_ERR(0, 8455, __pyx_L1_error)

  /* "scamper.pyx":8456
 * 
 *         self._c_sf = cscamper_file.scamper_file_open(filename.encode('UTF-8'),
 *                                                      ord(mode),             # <<<<<<<<<<<<<<
 *                                                      kind.encode('UTF-8'))
 *         if self._c_sf == NULL:
*/
  __pyx_t_8 = __Pyx_PyObject_Ord(__pyx_v_mode); if (unlikely(__pyx_t_8 == ((long)(long)(Py_UCS4)-1))) __PYX_ERR(0, 8456, __pyx_L1_error)

  /* "scamper.pyx":8457
 *         self._c_sf = cscamper_file.scamper_file_open(filename.encode('UTF-8'),
 *                                                      ord(mode),
 *                                                      kind.encode('UTF-8'))             # <<<<<<<<<<<<<<
 *         if self._c_sf == NULL:
 *             raise RuntimeError("could not open file")
*/
  __pyx_t_3 = __pyx_v_kind;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_UTF_8};
    __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8457, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  __pyx_t_10 = __Pyx_PyObject_AsString(__pyx_t_6); if (unlikely((!__pyx_t_10) && PyErr_Occurred())) __PYX_ERR(0, 8457, __pyx_L1_error)

  /* "scamper.pyx":8455
 *             self.filter_types(*filter_types)
 * 
 *         self._c_sf = cscamper_file.scamper_file_open(filename.encode('UTF-8'),             # <<<<<<<<<<<<<<
 *                                                      ord(mode),
 *                                                      kind.encode('UTF-8'))
*/
  __pyx_v_self->_c_sf = scamper_file_open(__pyx_t_9, __pyx_t_8, __pyx_t_10);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "scamper.pyx":8458
 *                                                      ord(mode),
 *                                                      kind.encode('UTF-8'))
 *         if self._c_sf == NULL:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("could not open file")
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c_sf == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":8459
 *                                                      kind.encode('UTF-8'))
 *         if self._c_sf == NULL:
 *             raise RuntimeError("could not open file")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
    __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_builtin_RuntimeError);
    __pyx_t_3 = __pyx_builtin_RuntimeError; 
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_could_not_open_file};
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8459, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __PYX_ERR(0, 8459, __pyx_L1_error)

    /* "scamper.pyx":8458
 *                                                      ord(mode),
 *                                                      kind.encode('UTF-8'))
 *         if self._c_sf == NULL:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("could not open file")
 * 
*/
  }

  /* "scamper.pyx":8429
 *     cdef char _mode
 * 
 *     def __init__(self, filename, mode='r', kind=None, filter_types=None):             # <<<<<<<<<<<<<<
 *         if mode != 'r' and mode != 'w':
 *             raise ValueError("invalid mode: " + mode)
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("scamper.ScamperFile.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_kind);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8461
 *             raise RuntimeError("could not open file")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c_sf != NULL:
 *             cscamper_file.scamper_file_close(self._c_sf)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_11ScamperFile_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_11ScamperFile_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_11ScamperFile_2__dealloc__(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_11ScamperFile_2__dealloc__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":8462
 * 
 *     def __dealloc__(self):
 *         if self._c_sf != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_file.scamper_file_close(self._c_sf)
 *         if self._c_sff != NULL:
*/
  __pyx_t_1 = (__pyx_v_self->_c_sf != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8463
 *     def __dealloc__(self):
 *         if self._c_sf != NULL:
 *             cscamper_file.scamper_file_close(self._c_sf)             # <<<<<<<<<<<<<<
 *         if self._c_sff != NULL:
 *             cscamper_file.scamper_file_filter_free(self._c_sff)
*/
    scamper_file_close(__pyx_v_self->_c_sf);

    /* "scamper.pyx":8462
 * 
 *     def __dealloc__(self):
 *         if self._c_sf != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_file.scamper_file_close(self._c_sf)
 *         if self._c_sff != NULL:
*/
  }

  /* "scamper.pyx":8464
 *         if self._c_sf != NULL:
 *             cscamper_file.scamper_file_close(self._c_sf)
 *         if self._c_sff != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_file.scamper_file_filter_free(self._c_sff)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c_sff != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8465
 *             cscamper_file.scamper_file_close(self._c_sf)
 *         if self._c_sff != NULL:
 *             cscamper_file.scamper_file_filter_free(self._c_sff)             # <<<<<<<<<<<<<<
 * 
 *     def __iter__(self):
*/
    scamper_file_filter_free(__pyx_v_self->_c_sff);

    /* "scamper.pyx":8464
 *         if self._c_sf != NULL:
 *             cscamper_file.scamper_file_close(self._c_sf)
 *         if self._c_sff != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_file.scamper_file_filter_free(self._c_sff)
 * 
*/
  }

  /* "scamper.pyx":8461
 *             raise RuntimeError("could not open file")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c_sf != NULL:
 *             cscamper_file.scamper_file_close(self._c_sf)
*/

  /* function exit code */
}

/* "scamper.pyx":8467
 *             cscamper_file.scamper_file_filter_free(self._c_sff)
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         if self._mode != ord('r'):
 *             raise ValueError("not readable")
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_5__iter__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperFile_5__iter__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__iter__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_4__iter__(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_4__iter__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__iter__", 0);

  /* "scamper.pyx":8468
 * 
 *     def __iter__(self):
 *         if self._mode != ord('r'):             # <<<<<<<<<<<<<<
 *             raise ValueError("not readable")
 *         return self
*/
  __pyx_t_1 = (__pyx_v_self->_mode != 0x72);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":8469
 *     def __iter__(self):
 *         if self._mode != ord('r'):
 *             raise ValueError("not readable")             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_4 = __pyx_builtin_ValueError; 
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_not_readable};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8469, __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_ERR(0, 8469, __pyx_L1_error)

    /* "scamper.pyx":8468
 * 
 *     def __iter__(self):
 *         if self._mode != ord('r'):             # <<<<<<<<<<<<<<
 *             raise ValueError("not readable")
 *         return self
*/
  }

  /* "scamper.pyx":8470
 *         if self._mode != ord('r'):
 *             raise ValueError("not readable")
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __next__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":8467
 *             cscamper_file.scamper_file_filter_free(self._c_sff)
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         if self._mode != ord('r'):
 *             raise ValueError("not readable")
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("scamper.ScamperFile.__iter__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8472
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         o = self.read()
 *         if o is None:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_7__next__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperFile_7__next__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__next__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_6__next__(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_6__next__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self) {
  PyObject *__pyx_v_o = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_error_without_exception = 0; /* StopIteration */
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__next__", 0);

  /* "scamper.pyx":8473
 * 
 *     def __next__(self):
 *         o = self.read()             # <<<<<<<<<<<<<<
 *         if o is None:
 *             raise StopIteration
*/
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, NULL};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_read, __pyx_callargs+__pyx_t_3, (1-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8473, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_o = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":8474
 *     def __next__(self):
 *         o = self.read()
 *         if o is None:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         return o
*/
  __pyx_t_4 = (__pyx_v_o == Py_None);
  if (unlikely(__pyx_t_4)) {

    /* "scamper.pyx":8475
 *         o = self.read()
 *         if o is None:
 *             raise StopIteration             # <<<<<<<<<<<<<<
 *         return o
 * 
*/
    __pyx_error_without_exception = 1;
    goto __pyx_L1_error;;

    /* "scamper.pyx":8474
 *     def __next__(self):
 *         o = self.read()
 *         if o is None:             # <<<<<<<<<<<<<<
 *             raise StopIteration
 *         return o
*/
  }

  /* "scamper.pyx":8476
 *         if o is None:
 *             raise StopIteration
 *         return o             # <<<<<<<<<<<<<<
 * 
 *     def __enter__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_o);
  __pyx_r = __pyx_v_o;
  goto __pyx_L0;

  /* "scamper.pyx":8472
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         o = self.read()
 *         if o is None:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  if (!__pyx_error_without_exception) {
    __Pyx_AddTraceback("scamper.ScamperFile.__next__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8478
 *         return o
 * 
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_9__enter__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperFile_9__enter__ = {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_9__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperFile_9__enter__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__enter__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__enter__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_8__enter__(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_8__enter__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__enter__", 0);

  /* "scamper.pyx":8479
 * 
 *     def __enter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __exit__(self, exc_type, exc_val, exc_tb):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":8478
 *         return o
 * 
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8481
 *         return self
 * 
 *     def __exit__(self, exc_type, exc_val, exc_tb):             # <<<<<<<<<<<<<<
 *         pass
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_11__exit__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperFile_11__exit__ = {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_11__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperFile_11__exit__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_exc_type = 0;
  CYTHON_UNUSED PyObject *__pyx_v_exc_val = 0;
  CYTHON_UNUSED PyObject *__pyx_v_exc_tb = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_exc_type,&__pyx_mstate_global->__pyx_n_u_exc_val,&__pyx_mstate_global->__pyx_n_u_exc_tb,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8481, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8481, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8481, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8481, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__exit__", 0) < 0) __PYX_ERR(0, 8481, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, i); __PYX_ERR(0, 8481, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8481, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8481, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8481, __pyx_L3_error)
    }
    __pyx_v_exc_type = values[0];
    __pyx_v_exc_val = values[1];
    __pyx_v_exc_tb = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 8481, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperFile.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_10__exit__(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self), __pyx_v_exc_type, __pyx_v_exc_val, __pyx_v_exc_tb);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_10__exit__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v_exc_val, CYTHON_UNUSED PyObject *__pyx_v_exc_tb) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__exit__", 0);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8484
 *         pass
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def filetype(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_8filetype_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperFile_8filetype_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_8filetype___get__(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_8filetype___get__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self) {
  char __pyx_v_buf[0x80];
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":8493
 *         """
 *         cdef char buf[128]
 *         cscamper_file.scamper_file_type_tostr(self._c_sf, buf, sizeof(buf))             # <<<<<<<<<<<<<<
 *         return buf.decode('UTF-8', 'strict')
 * 
*/
  (void)(scamper_file_type_tostr(__pyx_v_self->_c_sf, __pyx_v_buf, (sizeof(__pyx_v_buf))));

  /* "scamper.pyx":8494
 *         cdef char buf[128]
 *         cscamper_file.scamper_file_type_tostr(self._c_sf, buf, sizeof(buf))
 *         return buf.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     def close(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_ssize_strlen(__pyx_v_buf); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8494, __pyx_L1_error)
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_buf, 0, __pyx_t_1, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8494, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8484
 *         pass
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def filetype(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperFile.filetype.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8496
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """
 *         close the file
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_13close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperFile_12close, "\n        close the file\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperFile_13close = {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_13close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperFile_12close};
static PyObject *__pyx_pw_7scamper_11ScamperFile_13close(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("close", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("close", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_12close(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_12close(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("close", 0);

  /* "scamper.pyx":8500
 *         close the file
 *         """
 *         cscamper_file.scamper_file_close(self._c_sf)             # <<<<<<<<<<<<<<
 *         self._c_sf = NULL
 * 
*/
  scamper_file_close(__pyx_v_self->_c_sf);

  /* "scamper.pyx":8501
 *         """
 *         cscamper_file.scamper_file_close(self._c_sf)
 *         self._c_sf = NULL             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __pyx_v_self->_c_sf = NULL;

  /* "scamper.pyx":8496
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """
 *         close the file
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8503
 *         self._c_sf = NULL
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def filename(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_8filename_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperFile_8filename_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_8filename___get__(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_8filename___get__(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self) {
  char *__pyx_v_c;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":8511
 *         :rtype: string
 *         """
 *         c = cscamper_file.scamper_file_getfilename(self._c_sf)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return None
*/
  __pyx_v_c = scamper_file_getfilename(__pyx_v_self->_c_sf);

  /* "scamper.pyx":8512
 *         """
 *         c = cscamper_file.scamper_file_getfilename(self._c_sf)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8513
 *         c = cscamper_file.scamper_file_getfilename(self._c_sf)
 *         if c == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":8512
 *         """
 *         c = cscamper_file.scamper_file_getfilename(self._c_sf)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":8514
 *         if c == NULL:
 *             return None
 *         return c.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     def filter_types(self, *types):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8514, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8514, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8503
 *         self._c_sf = NULL
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def filename(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperFile.filename.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8516
 *         return c.decode('UTF-8', 'strict')
 * 
 *     def filter_types(self, *types):             # <<<<<<<<<<<<<<
 *         """
 *         filter_types(*types)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_15filter_types(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperFile_14filter_types, "\n        filter_types(*types)\n        configure the :class:`ScamperFile` to return the specific object types.\n        This method will raise a :py:exc:`ValueError` if the type to\n        filter is not valid.\n\n        :param class types: the types of Scamper objects to filter.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperFile_15filter_types = {"filter_types", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_pw_7scamper_11ScamperFile_15filter_types, METH_VARARGS|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperFile_14filter_types};
static PyObject *__pyx_pw_7scamper_11ScamperFile_15filter_types(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_types = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("filter_types (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("filter_types", __pyx_kwds); return NULL;}
  __Pyx_INCREF(__pyx_args);
  __pyx_v_types = __pyx_args;
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_14filter_types(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self), __pyx_v_types);

  /* function exit code */
  __Pyx_DECREF(__pyx_v_types);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_14filter_types(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self, PyObject *__pyx_v_types) {
  uint16_t __pyx_v_i;
  uint16_t __pyx_v_o_type;
  uint16_t __pyx_v_typea[10];
  uint16_t __pyx_v_typec;
  PyObject *__pyx_v_t = NULL;
  int __pyx_v_seen;
  scamper_file_filter_t *__pyx_v_c_sff;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  uint16_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  uint16_t __pyx_t_9;
  uint16_t __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("filter_types", 0);

  /* "scamper.pyx":8528
 *         cdef uint16_t o_type
 *         cdef uint16_t typea[10]
 *         cdef uint16_t typec = 0             # <<<<<<<<<<<<<<
 * 
 *         if self._mode != ord('r'):
*/
  __pyx_v_typec = 0;

  /* "scamper.pyx":8530
 *         cdef uint16_t typec = 0
 * 
 *         if self._mode != ord('r'):             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot add filter to non-readable files")
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_mode != 0x72);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":8531
 * 
 *         if self._mode != ord('r'):
 *             raise ValueError("cannot add filter to non-readable files")             # <<<<<<<<<<<<<<
 * 
 *         for t in types:
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_4 = __pyx_builtin_ValueError; 
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_cannot_add_filter_to_non_readabl};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8531, __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_ERR(0, 8531, __pyx_L1_error)

    /* "scamper.pyx":8530
 *         cdef uint16_t typec = 0
 * 
 *         if self._mode != ord('r'):             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot add filter to non-readable files")
 * 
*/
  }

  /* "scamper.pyx":8533
 *             raise ValueError("cannot add filter to non-readable files")
 * 
 *         for t in types:             # <<<<<<<<<<<<<<
 *             if t is ScamperTrace:
 *                 o_type = SCAMPER_FILE_OBJ_TRACE
*/
  __pyx_t_2 = __pyx_v_types; __Pyx_INCREF(__pyx_t_2);
  __pyx_t_6 = 0;
  for (;;) {
    {
      Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_2);
      #if !CYTHON_ASSUME_SAFE_SIZE
      if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 8533, __pyx_L1_error)
      #endif
      if (__pyx_t_6 >= __pyx_temp) break;
    }
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6));
    #else
    __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_2, __pyx_t_6);
    #endif
    ++__pyx_t_6;
    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8533, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "scamper.pyx":8534
 * 
 *         for t in types:
 *             if t is ScamperTrace:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_TRACE
 *             elif t is ScamperPing:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace));
    if (__pyx_t_1) {

      /* "scamper.pyx":8535
 *         for t in types:
 *             if t is ScamperTrace:
 *                 o_type = SCAMPER_FILE_OBJ_TRACE             # <<<<<<<<<<<<<<
 *             elif t is ScamperPing:
 *                 o_type = SCAMPER_FILE_OBJ_PING
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TRACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8535, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8534
 * 
 *         for t in types:
 *             if t is ScamperTrace:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_TRACE
 *             elif t is ScamperPing:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8536
 *             if t is ScamperTrace:
 *                 o_type = SCAMPER_FILE_OBJ_TRACE
 *             elif t is ScamperPing:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_PING
 *             elif t is ScamperTracelb:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing));
    if (__pyx_t_1) {

      /* "scamper.pyx":8537
 *                 o_type = SCAMPER_FILE_OBJ_TRACE
 *             elif t is ScamperPing:
 *                 o_type = SCAMPER_FILE_OBJ_PING             # <<<<<<<<<<<<<<
 *             elif t is ScamperTracelb:
 *                 o_type = SCAMPER_FILE_OBJ_TRACELB
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_PING); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8537, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8537, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8536
 *             if t is ScamperTrace:
 *                 o_type = SCAMPER_FILE_OBJ_TRACE
 *             elif t is ScamperPing:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_PING
 *             elif t is ScamperTracelb:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8538
 *             elif t is ScamperPing:
 *                 o_type = SCAMPER_FILE_OBJ_PING
 *             elif t is ScamperTracelb:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_TRACELB
 *             elif t is ScamperDealias:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb));
    if (__pyx_t_1) {

      /* "scamper.pyx":8539
 *                 o_type = SCAMPER_FILE_OBJ_PING
 *             elif t is ScamperTracelb:
 *                 o_type = SCAMPER_FILE_OBJ_TRACELB             # <<<<<<<<<<<<<<
 *             elif t is ScamperDealias:
 *                 o_type = SCAMPER_FILE_OBJ_DEALIAS
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TRACELB); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8539, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8539, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8538
 *             elif t is ScamperPing:
 *                 o_type = SCAMPER_FILE_OBJ_PING
 *             elif t is ScamperTracelb:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_TRACELB
 *             elif t is ScamperDealias:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8540
 *             elif t is ScamperTracelb:
 *                 o_type = SCAMPER_FILE_OBJ_TRACELB
 *             elif t is ScamperDealias:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_DEALIAS
 *             elif t is ScamperNeighbourdisc:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias));
    if (__pyx_t_1) {

      /* "scamper.pyx":8541
 *                 o_type = SCAMPER_FILE_OBJ_TRACELB
 *             elif t is ScamperDealias:
 *                 o_type = SCAMPER_FILE_OBJ_DEALIAS             # <<<<<<<<<<<<<<
 *             elif t is ScamperNeighbourdisc:
 *                 o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_DEALIAS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8541, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8541, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8540
 *             elif t is ScamperTracelb:
 *                 o_type = SCAMPER_FILE_OBJ_TRACELB
 *             elif t is ScamperDealias:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_DEALIAS
 *             elif t is ScamperNeighbourdisc:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8542
 *             elif t is ScamperDealias:
 *                 o_type = SCAMPER_FILE_OBJ_DEALIAS
 *             elif t is ScamperNeighbourdisc:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
 *             elif t is ScamperTbit:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperNeighbourdisc));
    if (__pyx_t_1) {

      /* "scamper.pyx":8543
 *                 o_type = SCAMPER_FILE_OBJ_DEALIAS
 *             elif t is ScamperNeighbourdisc:
 *                 o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC             # <<<<<<<<<<<<<<
 *             elif t is ScamperTbit:
 *                 o_type = SCAMPER_FILE_OBJ_TBIT
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_NEIGHBOURDISC); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8543, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8543, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8542
 *             elif t is ScamperDealias:
 *                 o_type = SCAMPER_FILE_OBJ_DEALIAS
 *             elif t is ScamperNeighbourdisc:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
 *             elif t is ScamperTbit:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8544
 *             elif t is ScamperNeighbourdisc:
 *                 o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
 *             elif t is ScamperTbit:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_TBIT
 *             elif t is ScamperSting:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTbit));
    if (__pyx_t_1) {

      /* "scamper.pyx":8545
 *                 o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
 *             elif t is ScamperTbit:
 *                 o_type = SCAMPER_FILE_OBJ_TBIT             # <<<<<<<<<<<<<<
 *             elif t is ScamperSting:
 *                 o_type = SCAMPER_FILE_OBJ_STING
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TBIT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8545, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8544
 *             elif t is ScamperNeighbourdisc:
 *                 o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
 *             elif t is ScamperTbit:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_TBIT
 *             elif t is ScamperSting:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8546
 *             elif t is ScamperTbit:
 *                 o_type = SCAMPER_FILE_OBJ_TBIT
 *             elif t is ScamperSting:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_STING
 *             elif t is ScamperSniff:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperSting));
    if (__pyx_t_1) {

      /* "scamper.pyx":8547
 *                 o_type = SCAMPER_FILE_OBJ_TBIT
 *             elif t is ScamperSting:
 *                 o_type = SCAMPER_FILE_OBJ_STING             # <<<<<<<<<<<<<<
 *             elif t is ScamperSniff:
 *                 o_type = SCAMPER_FILE_OBJ_SNIFF
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_STING); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8547, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8547, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8546
 *             elif t is ScamperTbit:
 *                 o_type = SCAMPER_FILE_OBJ_TBIT
 *             elif t is ScamperSting:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_STING
 *             elif t is ScamperSniff:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8548
 *             elif t is ScamperSting:
 *                 o_type = SCAMPER_FILE_OBJ_STING
 *             elif t is ScamperSniff:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_SNIFF
 *             elif t is ScamperHost:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperSniff));
    if (__pyx_t_1) {

      /* "scamper.pyx":8549
 *                 o_type = SCAMPER_FILE_OBJ_STING
 *             elif t is ScamperSniff:
 *                 o_type = SCAMPER_FILE_OBJ_SNIFF             # <<<<<<<<<<<<<<
 *             elif t is ScamperHost:
 *                 o_type = SCAMPER_FILE_OBJ_HOST
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_SNIFF); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8549, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8549, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8548
 *             elif t is ScamperSting:
 *                 o_type = SCAMPER_FILE_OBJ_STING
 *             elif t is ScamperSniff:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_SNIFF
 *             elif t is ScamperHost:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8550
 *             elif t is ScamperSniff:
 *                 o_type = SCAMPER_FILE_OBJ_SNIFF
 *             elif t is ScamperHost:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_HOST
 *             elif t is ScamperHttp:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost));
    if (__pyx_t_1) {

      /* "scamper.pyx":8551
 *                 o_type = SCAMPER_FILE_OBJ_SNIFF
 *             elif t is ScamperHost:
 *                 o_type = SCAMPER_FILE_OBJ_HOST             # <<<<<<<<<<<<<<
 *             elif t is ScamperHttp:
 *                 o_type = SCAMPER_FILE_OBJ_HTTP
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_HOST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8551, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8551, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8550
 *             elif t is ScamperSniff:
 *                 o_type = SCAMPER_FILE_OBJ_SNIFF
 *             elif t is ScamperHost:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_HOST
 *             elif t is ScamperHttp:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8552
 *             elif t is ScamperHost:
 *                 o_type = SCAMPER_FILE_OBJ_HOST
 *             elif t is ScamperHttp:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_HTTP
 *             elif t is ScamperUdpprobe:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttp));
    if (__pyx_t_1) {

      /* "scamper.pyx":8553
 *                 o_type = SCAMPER_FILE_OBJ_HOST
 *             elif t is ScamperHttp:
 *                 o_type = SCAMPER_FILE_OBJ_HTTP             # <<<<<<<<<<<<<<
 *             elif t is ScamperUdpprobe:
 *                 o_type = SCAMPER_FILE_OBJ_UDPPROBE
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_HTTP); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8553, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8553, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8552
 *             elif t is ScamperHost:
 *                 o_type = SCAMPER_FILE_OBJ_HOST
 *             elif t is ScamperHttp:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_HTTP
 *             elif t is ScamperUdpprobe:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8554
 *             elif t is ScamperHttp:
 *                 o_type = SCAMPER_FILE_OBJ_HTTP
 *             elif t is ScamperUdpprobe:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_UDPPROBE
 *             else:
*/
    __pyx_t_1 = (__pyx_v_t == ((PyObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperUdpprobe));
    if (likely(__pyx_t_1)) {

      /* "scamper.pyx":8555
 *                 o_type = SCAMPER_FILE_OBJ_HTTP
 *             elif t is ScamperUdpprobe:
 *                 o_type = SCAMPER_FILE_OBJ_UDPPROBE             # <<<<<<<<<<<<<<
 *             else:
 *                 raise ValueError("invalid type")
*/
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_UDPPROBE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8555, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyLong_As_uint16_t(__pyx_t_4); if (unlikely((__pyx_t_7 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8555, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_v_o_type = __pyx_t_7;

      /* "scamper.pyx":8554
 *             elif t is ScamperHttp:
 *                 o_type = SCAMPER_FILE_OBJ_HTTP
 *             elif t is ScamperUdpprobe:             # <<<<<<<<<<<<<<
 *                 o_type = SCAMPER_FILE_OBJ_UDPPROBE
 *             else:
*/
      goto __pyx_L6;
    }

    /* "scamper.pyx":8557
 *                 o_type = SCAMPER_FILE_OBJ_UDPPROBE
 *             else:
 *                 raise ValueError("invalid type")             # <<<<<<<<<<<<<<
 * 
 *             seen = False
*/
    /*else*/ {
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_invalid_type};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8557, __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_ERR(0, 8557, __pyx_L1_error)
    }
    __pyx_L6:;

    /* "scamper.pyx":8559
 *                 raise ValueError("invalid type")
 * 
 *             seen = False             # <<<<<<<<<<<<<<
 *             for i in range(typec):
 *                 if typea[i] == o_type:
*/
    __pyx_v_seen = 0;

    /* "scamper.pyx":8560
 * 
 *             seen = False
 *             for i in range(typec):             # <<<<<<<<<<<<<<
 *                 if typea[i] == o_type:
 *                     seen = True
*/
    __pyx_t_7 = __pyx_v_typec;
    __pyx_t_9 = __pyx_t_7;
    for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_9; __pyx_t_10+=1) {
      __pyx_v_i = __pyx_t_10;

      /* "scamper.pyx":8561
 *             seen = False
 *             for i in range(typec):
 *                 if typea[i] == o_type:             # <<<<<<<<<<<<<<
 *                     seen = True
 *                     break
*/
      __pyx_t_1 = ((__pyx_v_typea[__pyx_v_i]) == __pyx_v_o_type);
      if (__pyx_t_1) {

        /* "scamper.pyx":8562
 *             for i in range(typec):
 *                 if typea[i] == o_type:
 *                     seen = True             # <<<<<<<<<<<<<<
 *                     break
 * 
*/
        __pyx_v_seen = 1;

        /* "scamper.pyx":8563
 *                 if typea[i] == o_type:
 *                     seen = True
 *                     break             # <<<<<<<<<<<<<<
 * 
 *             if not seen:
*/
        goto __pyx_L8_break;

        /* "scamper.pyx":8561
 *             seen = False
 *             for i in range(typec):
 *                 if typea[i] == o_type:             # <<<<<<<<<<<<<<
 *                     seen = True
 *                     break
*/
      }
    }
    __pyx_L8_break:;

    /* "scamper.pyx":8565
 *                     break
 * 
 *             if not seen:             # <<<<<<<<<<<<<<
 *                 typea[typec] = o_type
 *                 typec += 1
*/
    __pyx_t_1 = (!__pyx_v_seen);
    if (__pyx_t_1) {

      /* "scamper.pyx":8566
 * 
 *             if not seen:
 *                 typea[typec] = o_type             # <<<<<<<<<<<<<<
 *                 typec += 1
 * 
*/
      (__pyx_v_typea[__pyx_v_typec]) = __pyx_v_o_type;

      /* "scamper.pyx":8567
 *             if not seen:
 *                 typea[typec] = o_type
 *                 typec += 1             # <<<<<<<<<<<<<<
 * 
 *         if typec == 0:
*/
      __pyx_v_typec = (__pyx_v_typec + 1);

      /* "scamper.pyx":8565
 *                     break
 * 
 *             if not seen:             # <<<<<<<<<<<<<<
 *                 typea[typec] = o_type
 *                 typec += 1
*/
    }

    /* "scamper.pyx":8533
 *             raise ValueError("cannot add filter to non-readable files")
 * 
 *         for t in types:             # <<<<<<<<<<<<<<
 *             if t is ScamperTrace:
 *                 o_type = SCAMPER_FILE_OBJ_TRACE
*/
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8569
 *                 typec += 1
 * 
 *         if typec == 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("nothing to filter")
 * 
*/
  __pyx_t_1 = (__pyx_v_typec == 0);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":8570
 * 
 *         if typec == 0:
 *             raise ValueError("nothing to filter")             # <<<<<<<<<<<<<<
 * 
 *         c_sff = cscamper_file.scamper_file_filter_alloc(typea, typec)
*/
    __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_8 = __pyx_builtin_ValueError; 
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_nothing_to_filter};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8570, __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_ERR(0, 8570, __pyx_L1_error)

    /* "scamper.pyx":8569
 *                 typec += 1
 * 
 *         if typec == 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("nothing to filter")
 * 
*/
  }

  /* "scamper.pyx":8572
 *             raise ValueError("nothing to filter")
 * 
 *         c_sff = cscamper_file.scamper_file_filter_alloc(typea, typec)             # <<<<<<<<<<<<<<
 *         if c_sff == NULL:
 *             raise RuntimeError("could not build filter")
*/
  __pyx_v_c_sff = scamper_file_filter_alloc(__pyx_v_typea, __pyx_v_typec);

  /* "scamper.pyx":8573
 * 
 *         c_sff = cscamper_file.scamper_file_filter_alloc(typea, typec)
 *         if c_sff == NULL:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("could not build filter")
 *         if self._c_sff != NULL:
*/
  __pyx_t_1 = (__pyx_v_c_sff == NULL);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":8574
 *         c_sff = cscamper_file.scamper_file_filter_alloc(typea, typec)
 *         if c_sff == NULL:
 *             raise RuntimeError("could not build filter")             # <<<<<<<<<<<<<<
 *         if self._c_sff != NULL:
 *             cscamper_file.scamper_file_filter_free(self._c_sff)
*/
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_builtin_RuntimeError);
    __pyx_t_4 = __pyx_builtin_RuntimeError; 
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_could_not_build_filter};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8574, __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_ERR(0, 8574, __pyx_L1_error)

    /* "scamper.pyx":8573
 * 
 *         c_sff = cscamper_file.scamper_file_filter_alloc(typea, typec)
 *         if c_sff == NULL:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("could not build filter")
 *         if self._c_sff != NULL:
*/
  }

  /* "scamper.pyx":8575
 *         if c_sff == NULL:
 *             raise RuntimeError("could not build filter")
 *         if self._c_sff != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_file.scamper_file_filter_free(self._c_sff)
 *         self._c_sff = c_sff
*/
  __pyx_t_1 = (__pyx_v_self->_c_sff != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8576
 *             raise RuntimeError("could not build filter")
 *         if self._c_sff != NULL:
 *             cscamper_file.scamper_file_filter_free(self._c_sff)             # <<<<<<<<<<<<<<
 *         self._c_sff = c_sff
 * 
*/
    scamper_file_filter_free(__pyx_v_self->_c_sff);

    /* "scamper.pyx":8575
 *         if c_sff == NULL:
 *             raise RuntimeError("could not build filter")
 *         if self._c_sff != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_file.scamper_file_filter_free(self._c_sff)
 *         self._c_sff = c_sff
*/
  }

  /* "scamper.pyx":8577
 *         if self._c_sff != NULL:
 *             cscamper_file.scamper_file_filter_free(self._c_sff)
 *         self._c_sff = c_sff             # <<<<<<<<<<<<<<
 * 
 *     def read(self):
*/
  __pyx_v_self->_c_sff = __pyx_v_c_sff;

  /* "scamper.pyx":8516
 *         return c.decode('UTF-8', 'strict')
 * 
 *     def filter_types(self, *types):             # <<<<<<<<<<<<<<
 *         """
 *         filter_types(*types)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperFile.filter_types", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_t);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8579
 *         self._c_sff = c_sff
 * 
 *     def read(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to read the next object from the :class:`ScamperFile`.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_17read(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperFile_16read, "\n        get method to read the next object from the :class:`ScamperFile`.\n        This method will raise a :py:exc:`RuntimeError` if the file was\n        not opened in read mode, or if it reads an object type that this\n        module does not support.\n\n        :returns: a scamper object\n        :rtype: ScamperList ScamperCycle ScamperTrace ScamperPing             ScamperTracelb ScamperDealias ScamperNeighbourdisc ScamperTbit             ScamperSting ScamperSniff ScamperHost\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperFile_17read = {"read", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_17read, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperFile_16read};
static PyObject *__pyx_pw_7scamper_11ScamperFile_17read(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("read", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("read", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_16read(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_16read(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self) {
  scamper_list_t *__pyx_v_c_list;
  scamper_cycle_t *__pyx_v_c_cycle;
  uint16_t __pyx_v_o_type;
  void *__pyx_v_o_data;
  int __pyx_v_rc;
  PyObject *__pyx_v_o = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read", 0);

  /* "scamper.pyx":8597
 *         cdef int rc
 * 
 *         if self._mode != ord('r'):             # <<<<<<<<<<<<<<
 *             raise RuntimeError("file not opened in read mode")
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_mode != 0x72);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":8598
 * 
 *         if self._mode != ord('r'):
 *             raise RuntimeError("file not opened in read mode")             # <<<<<<<<<<<<<<
 * 
 *         rc = cscamper_file.scamper_file_read(self._c_sf, self._c_sff, &o_type, &o_data)
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_RuntimeError);
    __pyx_t_4 = __pyx_builtin_RuntimeError; 
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_file_not_opened_in_read_mode};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8598, __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_ERR(0, 8598, __pyx_L1_error)

    /* "scamper.pyx":8597
 *         cdef int rc
 * 
 *         if self._mode != ord('r'):             # <<<<<<<<<<<<<<
 *             raise RuntimeError("file not opened in read mode")
 * 
*/
  }

  /* "scamper.pyx":8600
 *             raise RuntimeError("file not opened in read mode")
 * 
 *         rc = cscamper_file.scamper_file_read(self._c_sf, self._c_sff, &o_type, &o_data)             # <<<<<<<<<<<<<<
 *         if rc != 0 or o_data == NULL:
 *             return None
*/
  __pyx_v_rc = scamper_file_read(__pyx_v_self->_c_sf, __pyx_v_self->_c_sff, (&__pyx_v_o_type), (&__pyx_v_o_data));

  /* "scamper.pyx":8601
 * 
 *         rc = cscamper_file.scamper_file_read(self._c_sf, self._c_sff, &o_type, &o_data)
 *         if rc != 0 or o_data == NULL:             # <<<<<<<<<<<<<<
 *             return None
 * 
*/
  __pyx_t_6 = (__pyx_v_rc != 0);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_1 = __pyx_t_6;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_o_data == NULL);
  __pyx_t_1 = __pyx_t_6;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_1) {

    /* "scamper.pyx":8602
 *         rc = cscamper_file.scamper_file_read(self._c_sf, self._c_sff, &o_type, &o_data)
 *         if rc != 0 or o_data == NULL:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *         if o_type == SCAMPER_FILE_OBJ_LIST:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":8601
 * 
 *         rc = cscamper_file.scamper_file_read(self._c_sf, self._c_sff, &o_type, &o_data)
 *         if rc != 0 or o_data == NULL:             # <<<<<<<<<<<<<<
 *             return None
 * 
*/
  }

  /* "scamper.pyx":8604
 *             return None
 * 
 *         if o_type == SCAMPER_FILE_OBJ_LIST:             # <<<<<<<<<<<<<<
 *             c_list = <cscamper_list.scamper_list_t *>o_data
 *             o = ScamperList.from_ptr(c_list)
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_LIST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8604, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8605
 * 
 *         if o_type == SCAMPER_FILE_OBJ_LIST:
 *             c_list = <cscamper_list.scamper_list_t *>o_data             # <<<<<<<<<<<<<<
 *             o = ScamperList.from_ptr(c_list)
 *             if o is not None:
*/
    __pyx_v_c_list = ((scamper_list_t *)__pyx_v_o_data);

    /* "scamper.pyx":8606
 *         if o_type == SCAMPER_FILE_OBJ_LIST:
 *             c_list = <cscamper_list.scamper_list_t *>o_data
 *             o = ScamperList.from_ptr(c_list)             # <<<<<<<<<<<<<<
 *             if o is not None:
 *                 cscamper_list.scamper_list_free(c_list)
*/
    __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c_list)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8606, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_o = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":8607
 *             c_list = <cscamper_list.scamper_list_t *>o_data
 *             o = ScamperList.from_ptr(c_list)
 *             if o is not None:             # <<<<<<<<<<<<<<
 *                 cscamper_list.scamper_list_free(c_list)
 *             return o
*/
    __pyx_t_1 = (__pyx_v_o != Py_None);
    if (__pyx_t_1) {

      /* "scamper.pyx":8608
 *             o = ScamperList.from_ptr(c_list)
 *             if o is not None:
 *                 cscamper_list.scamper_list_free(c_list)             # <<<<<<<<<<<<<<
 *             return o
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or
*/
      scamper_list_free(__pyx_v_c_list);

      /* "scamper.pyx":8607
 *             c_list = <cscamper_list.scamper_list_t *>o_data
 *             o = ScamperList.from_ptr(c_list)
 *             if o is not None:             # <<<<<<<<<<<<<<
 *                 cscamper_list.scamper_list_free(c_list)
 *             return o
*/
    }

    /* "scamper.pyx":8609
 *             if o is not None:
 *                 cscamper_list.scamper_list_free(c_list)
 *             return o             # <<<<<<<<<<<<<<
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_o);
    __pyx_r = __pyx_v_o;
    goto __pyx_L0;

    /* "scamper.pyx":8604
 *             return None
 * 
 *         if o_type == SCAMPER_FILE_OBJ_LIST:             # <<<<<<<<<<<<<<
 *             c_list = <cscamper_list.scamper_list_t *>o_data
 *             o = ScamperList.from_ptr(c_list)
*/
  }

  /* "scamper.pyx":8610
 *                 cscamper_list.scamper_list_free(c_list)
 *             return o
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or             # <<<<<<<<<<<<<<
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_START); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8610, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 8610, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_6) {
  } else {
    __pyx_t_1 = __pyx_t_6;
    goto __pyx_L9_bool_binop_done;
  }

  /* "scamper.pyx":8611
 *             return o
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or             # <<<<<<<<<<<<<<
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8611, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8611, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 8611, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (!__pyx_t_6) {
  } else {
    __pyx_t_1 = __pyx_t_6;
    goto __pyx_L9_bool_binop_done;
  }

  /* "scamper.pyx":8612
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):             # <<<<<<<<<<<<<<
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data
 *             o = ScamperCycle.from_ptr(c_cycle, o_type)
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_STOP); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8612, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8612, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 8612, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_1 = __pyx_t_6;
  __pyx_L9_bool_binop_done:;

  /* "scamper.pyx":8610
 *                 cscamper_list.scamper_list_free(c_list)
 *             return o
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or             # <<<<<<<<<<<<<<
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
*/
  if (__pyx_t_1) {

    /* "scamper.pyx":8613
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data             # <<<<<<<<<<<<<<
 *             o = ScamperCycle.from_ptr(c_cycle, o_type)
 *             if o is not None:
*/
    __pyx_v_c_cycle = ((scamper_cycle_t *)__pyx_v_o_data);

    /* "scamper.pyx":8614
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data
 *             o = ScamperCycle.from_ptr(c_cycle, o_type)             # <<<<<<<<<<<<<<
 *             if o is not None:
 *                 cscamper_list.scamper_cycle_free(c_cycle)
*/
    __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c_cycle, __pyx_v_o_type)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8614, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_v_o = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "scamper.pyx":8615
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data
 *             o = ScamperCycle.from_ptr(c_cycle, o_type)
 *             if o is not None:             # <<<<<<<<<<<<<<
 *                 cscamper_list.scamper_cycle_free(c_cycle)
 *             return o
*/
    __pyx_t_1 = (__pyx_v_o != Py_None);
    if (__pyx_t_1) {

      /* "scamper.pyx":8616
 *             o = ScamperCycle.from_ptr(c_cycle, o_type)
 *             if o is not None:
 *                 cscamper_list.scamper_cycle_free(c_cycle)             # <<<<<<<<<<<<<<
 *             return o
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
*/
      scamper_cycle_free(__pyx_v_c_cycle);

      /* "scamper.pyx":8615
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data
 *             o = ScamperCycle.from_ptr(c_cycle, o_type)
 *             if o is not None:             # <<<<<<<<<<<<<<
 *                 cscamper_list.scamper_cycle_free(c_cycle)
 *             return o
*/
    }

    /* "scamper.pyx":8617
 *             if o is not None:
 *                 cscamper_list.scamper_cycle_free(c_cycle)
 *             return o             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
 *             return ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_o);
    __pyx_r = __pyx_v_o;
    goto __pyx_L0;

    /* "scamper.pyx":8610
 *                 cscamper_list.scamper_list_free(c_list)
 *             return o
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or             # <<<<<<<<<<<<<<
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
*/
  }

  /* "scamper.pyx":8618
 *                 cscamper_list.scamper_cycle_free(c_cycle)
 *             return o
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:             # <<<<<<<<<<<<<<
 *             return ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TRACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8618, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8618, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8618, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8619
 *             return o
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
 *             return ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
 *             return ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_12ScamperTrace_from_ptr(((scamper_trace_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8619, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8618
 *                 cscamper_list.scamper_cycle_free(c_cycle)
 *             return o
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:             # <<<<<<<<<<<<<<
 *             return ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
*/
  }

  /* "scamper.pyx":8620
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
 *             return ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_PING:             # <<<<<<<<<<<<<<
 *             return ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_PING); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8620, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8620, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8621
 *             return ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
 *             return ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
 *             return ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_11ScamperPing_from_ptr(((scamper_ping_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8620
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
 *             return ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_PING:             # <<<<<<<<<<<<<<
 *             return ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
*/
  }

  /* "scamper.pyx":8622
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
 *             return ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:             # <<<<<<<<<<<<<<
 *             return ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TRACELB); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8622, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8622, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8622, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8623
 *             return ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
 *             return ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
 *             return ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_14ScamperTracelb_from_ptr(((scamper_tracelb_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8622
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
 *             return ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:             # <<<<<<<<<<<<<<
 *             return ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
*/
  }

  /* "scamper.pyx":8624
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
 *             return ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:             # <<<<<<<<<<<<<<
 *             return ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_DEALIAS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8624, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8624, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8625
 *             return ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
 *             return ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
 *             return ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_14ScamperDealias_from_ptr(((scamper_dealias_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8624
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
 *             return ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:             # <<<<<<<<<<<<<<
 *             return ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
*/
  }

  /* "scamper.pyx":8626
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
 *             return ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:             # <<<<<<<<<<<<<<
 *             return ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_NEIGHBOURDISC); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8626, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8626, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8626, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8627
 *             return ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
 *             return ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
 *             return ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_20ScamperNeighbourdisc_from_ptr(((scamper_neighbourdisc_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8627, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8626
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
 *             return ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:             # <<<<<<<<<<<<<<
 *             return ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
*/
  }

  /* "scamper.pyx":8628
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
 *             return ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:             # <<<<<<<<<<<<<<
 *             return ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TBIT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8628, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8628, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8629
 *             return ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
 *             return ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
 *             return ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_11ScamperTbit_from_ptr(((scamper_tbit_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8628
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
 *             return ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:             # <<<<<<<<<<<<<<
 *             return ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
*/
  }

  /* "scamper.pyx":8630
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
 *             return ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_STING:             # <<<<<<<<<<<<<<
 *             return ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_STING); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8631
 *             return ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
 *             return ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
 *             return ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_12ScamperSting_from_ptr(((scamper_sting_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8631, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8630
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
 *             return ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_STING:             # <<<<<<<<<<<<<<
 *             return ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
*/
  }

  /* "scamper.pyx":8632
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
 *             return ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:             # <<<<<<<<<<<<<<
 *             return ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_SNIFF); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8632, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8632, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8633
 *             return ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
 *             return ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
 *             return ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_12ScamperSniff_from_ptr(((scamper_sniff_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8633, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8632
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
 *             return ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:             # <<<<<<<<<<<<<<
 *             return ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
*/
  }

  /* "scamper.pyx":8634
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
 *             return ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:             # <<<<<<<<<<<<<<
 *             return ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_HOST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8634, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8634, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8634, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8635
 *             return ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
 *             return ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
 *             return ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_11ScamperHost_from_ptr(((scamper_host_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8635, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8634
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
 *             return ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:             # <<<<<<<<<<<<<<
 *             return ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
*/
  }

  /* "scamper.pyx":8636
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
 *             return ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:             # <<<<<<<<<<<<<<
 *             return ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:
*/
  __pyx_t_3 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_HTTP); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8637
 *             return ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
 *             return ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:
 *             return ScamperUdpprobe.from_ptr(<cscamper_udpprobe.scamper_udpprobe_t *>o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_11ScamperHttp_from_ptr(((scamper_http_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8637, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8636
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
 *             return ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:             # <<<<<<<<<<<<<<
 *             return ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:
*/
  }

  /* "scamper.pyx":8638
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
 *             return ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:             # <<<<<<<<<<<<<<
 *             return ScamperUdpprobe.from_ptr(<cscamper_udpprobe.scamper_udpprobe_t *>o_data)
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_UDPPROBE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 8638, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":8639
 *             return ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:
 *             return ScamperUdpprobe.from_ptr(<cscamper_udpprobe.scamper_udpprobe_t *>o_data)             # <<<<<<<<<<<<<<
 * 
 *         raise RuntimeError("unexpected object type " + o_type)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = ((PyObject *)__pyx_f_7scamper_15ScamperUdpprobe_from_ptr(((scamper_udpprobe_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8639, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":8638
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
 *             return ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:             # <<<<<<<<<<<<<<
 *             return ScamperUdpprobe.from_ptr(<cscamper_udpprobe.scamper_udpprobe_t *>o_data)
 * 
*/
  }

  /* "scamper.pyx":8641
 *             return ScamperUdpprobe.from_ptr(<cscamper_udpprobe.scamper_udpprobe_t *>o_data)
 * 
 *         raise RuntimeError("unexpected object type " + o_type)             # <<<<<<<<<<<<<<
 * 
 *     def write(self, obj):
*/
  __pyx_t_4 = NULL;
  __Pyx_INCREF(__pyx_builtin_RuntimeError);
  __pyx_t_2 = __pyx_builtin_RuntimeError; 
  __pyx_t_7 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_unexpected_object_type, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8641, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_5 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_8};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8641, __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_ERR(0, 8641, __pyx_L1_error)

  /* "scamper.pyx":8579
 *         self._c_sff = c_sff
 * 
 *     def read(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to read the next object from the :class:`ScamperFile`.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperFile.read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8643
 *         raise RuntimeError("unexpected object type " + o_type)
 * 
 *     def write(self, obj):             # <<<<<<<<<<<<<<
 *         """
 *         write(obj)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_19write(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperFile_18write, "\n        write(obj)\n        write an object to the warts file.  This method will raise a\n        :py:exc:`RuntimeError` if the file was not opened in write\n        mode, if the object to write is not supported by this module,\n        or if it could not write the object to disk.\n\n        :param object obj: a scamper object to write.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperFile_19write = {"write", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_19write, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperFile_18write};
static PyObject *__pyx_pw_7scamper_11ScamperFile_19write(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_obj = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_obj,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8643, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8643, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "write", 0) < 0) __PYX_ERR(0, 8643, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("write", 1, 1, 1, i); __PYX_ERR(0, 8643, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8643, __pyx_L3_error)
    }
    __pyx_v_obj = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 8643, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperFile.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_18write(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self), __pyx_v_obj);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_18write(struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self, PyObject *__pyx_v_obj) {
  void *__pyx_v_o_data;
  uint16_t __pyx_v_o_type;
  int __pyx_v_rc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  uint16_t __pyx_t_6;
  scamper_list_t *__pyx_t_7;
  scamper_cycle_t *__pyx_t_8;
  scamper_addr_t *__pyx_t_9;
  scamper_trace_t *__pyx_t_10;
  scamper_ping_t *__pyx_t_11;
  scamper_tracelb_t *__pyx_t_12;
  scamper_dealias_t *__pyx_t_13;
  scamper_neighbourdisc_t *__pyx_t_14;
  scamper_tbit_t *__pyx_t_15;
  scamper_sting_t *__pyx_t_16;
  scamper_sniff_t *__pyx_t_17;
  scamper_host_t *__pyx_t_18;
  scamper_http_t *__pyx_t_19;
  scamper_udpprobe_t *__pyx_t_20;
  int __pyx_t_21;
  PyObject *__pyx_t_22 = NULL;
  PyObject *__pyx_t_23 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write", 0);

  /* "scamper.pyx":8656
 *         cdef uint16_t o_type
 * 
 *         if self._mode != ord('w'):             # <<<<<<<<<<<<<<
 *             raise RuntimeError("file not opened in write mode")
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_mode != 0x77);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":8657
 * 
 *         if self._mode != ord('w'):
 *             raise RuntimeError("file not opened in write mode")             # <<<<<<<<<<<<<<
 * 
 *         if isinstance(obj, ScamperList):
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_RuntimeError);
    __pyx_t_4 = __pyx_builtin_RuntimeError; 
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_file_not_opened_in_write_mode};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8657, __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_ERR(0, 8657, __pyx_L1_error)

    /* "scamper.pyx":8656
 *         cdef uint16_t o_type
 * 
 *         if self._mode != ord('w'):             # <<<<<<<<<<<<<<
 *             raise RuntimeError("file not opened in write mode")
 * 
*/
  }

  /* "scamper.pyx":8659
 *             raise RuntimeError("file not opened in write mode")
 * 
 *         if isinstance(obj, ScamperList):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_LIST
 *             o_data = (<ScamperList>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperList); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8660
 * 
 *         if isinstance(obj, ScamperList):
 *             o_type = SCAMPER_FILE_OBJ_LIST             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperList>obj)._c
 *         elif isinstance(obj, ScamperCycle):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_LIST); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8660, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8660, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8661
 *         if isinstance(obj, ScamperList):
 *             o_type = SCAMPER_FILE_OBJ_LIST
 *             o_data = (<ScamperList>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperCycle):
 *             o_type = (<ScamperCycle>obj)._type
*/
    __pyx_t_7 = ((struct __pyx_obj_7scamper_ScamperList *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_7;

    /* "scamper.pyx":8659
 *             raise RuntimeError("file not opened in write mode")
 * 
 *         if isinstance(obj, ScamperList):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_LIST
 *             o_data = (<ScamperList>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8662
 *             o_type = SCAMPER_FILE_OBJ_LIST
 *             o_data = (<ScamperList>obj)._c
 *         elif isinstance(obj, ScamperCycle):             # <<<<<<<<<<<<<<
 *             o_type = (<ScamperCycle>obj)._type
 *             o_data = (<ScamperCycle>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperCycle); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8663
 *             o_data = (<ScamperList>obj)._c
 *         elif isinstance(obj, ScamperCycle):
 *             o_type = (<ScamperCycle>obj)._type             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperCycle>obj)._c
 *         elif isinstance(obj, ScamperAddr):
*/
    __pyx_t_6 = ((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_obj)->_type;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8664
 *         elif isinstance(obj, ScamperCycle):
 *             o_type = (<ScamperCycle>obj)._type
 *             o_data = (<ScamperCycle>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperAddr):
 *             o_type = SCAMPER_FILE_OBJ_ADDR
*/
    __pyx_t_8 = ((struct __pyx_obj_7scamper_ScamperCycle *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_8;

    /* "scamper.pyx":8662
 *             o_type = SCAMPER_FILE_OBJ_LIST
 *             o_data = (<ScamperList>obj)._c
 *         elif isinstance(obj, ScamperCycle):             # <<<<<<<<<<<<<<
 *             o_type = (<ScamperCycle>obj)._type
 *             o_data = (<ScamperCycle>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8665
 *             o_type = (<ScamperCycle>obj)._type
 *             o_data = (<ScamperCycle>obj)._c
 *         elif isinstance(obj, ScamperAddr):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_ADDR
 *             o_data = (<ScamperAddr>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8666
 *             o_data = (<ScamperCycle>obj)._c
 *         elif isinstance(obj, ScamperAddr):
 *             o_type = SCAMPER_FILE_OBJ_ADDR             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperAddr>obj)._c
 *         elif isinstance(obj, ScamperTrace):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_ADDR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8666, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8666, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8667
 *         elif isinstance(obj, ScamperAddr):
 *             o_type = SCAMPER_FILE_OBJ_ADDR
 *             o_data = (<ScamperAddr>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperTrace):
 *             o_type = SCAMPER_FILE_OBJ_TRACE
*/
    __pyx_t_9 = ((struct __pyx_obj_7scamper_ScamperAddr *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_9;

    /* "scamper.pyx":8665
 *             o_type = (<ScamperCycle>obj)._type
 *             o_data = (<ScamperCycle>obj)._c
 *         elif isinstance(obj, ScamperAddr):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_ADDR
 *             o_data = (<ScamperAddr>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8668
 *             o_type = SCAMPER_FILE_OBJ_ADDR
 *             o_data = (<ScamperAddr>obj)._c
 *         elif isinstance(obj, ScamperTrace):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_TRACE
 *             o_data = (<ScamperTrace>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8669
 *             o_data = (<ScamperAddr>obj)._c
 *         elif isinstance(obj, ScamperTrace):
 *             o_type = SCAMPER_FILE_OBJ_TRACE             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperTrace>obj)._c
 *         elif isinstance(obj, ScamperPing):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TRACE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8669, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8669, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8670
 *         elif isinstance(obj, ScamperTrace):
 *             o_type = SCAMPER_FILE_OBJ_TRACE
 *             o_data = (<ScamperTrace>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperPing):
 *             o_type = SCAMPER_FILE_OBJ_PING
*/
    __pyx_t_10 = ((struct __pyx_obj_7scamper_ScamperTrace *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_10;

    /* "scamper.pyx":8668
 *             o_type = SCAMPER_FILE_OBJ_ADDR
 *             o_data = (<ScamperAddr>obj)._c
 *         elif isinstance(obj, ScamperTrace):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_TRACE
 *             o_data = (<ScamperTrace>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8671
 *             o_type = SCAMPER_FILE_OBJ_TRACE
 *             o_data = (<ScamperTrace>obj)._c
 *         elif isinstance(obj, ScamperPing):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_PING
 *             o_data = (<ScamperPing>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8672
 *             o_data = (<ScamperTrace>obj)._c
 *         elif isinstance(obj, ScamperPing):
 *             o_type = SCAMPER_FILE_OBJ_PING             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperPing>obj)._c
 *         elif isinstance(obj, ScamperTracelb):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_PING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8672, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8672, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8673
 *         elif isinstance(obj, ScamperPing):
 *             o_type = SCAMPER_FILE_OBJ_PING
 *             o_data = (<ScamperPing>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperTracelb):
 *             o_type = SCAMPER_FILE_OBJ_TRACELB
*/
    __pyx_t_11 = ((struct __pyx_obj_7scamper_ScamperPing *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_11;

    /* "scamper.pyx":8671
 *             o_type = SCAMPER_FILE_OBJ_TRACE
 *             o_data = (<ScamperTrace>obj)._c
 *         elif isinstance(obj, ScamperPing):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_PING
 *             o_data = (<ScamperPing>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8674
 *             o_type = SCAMPER_FILE_OBJ_PING
 *             o_data = (<ScamperPing>obj)._c
 *         elif isinstance(obj, ScamperTracelb):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_TRACELB
 *             o_data = (<ScamperTracelb>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8675
 *             o_data = (<ScamperPing>obj)._c
 *         elif isinstance(obj, ScamperTracelb):
 *             o_type = SCAMPER_FILE_OBJ_TRACELB             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperTracelb>obj)._c
 *         elif isinstance(obj, ScamperDealias):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TRACELB); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8675, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8675, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8676
 *         elif isinstance(obj, ScamperTracelb):
 *             o_type = SCAMPER_FILE_OBJ_TRACELB
 *             o_data = (<ScamperTracelb>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperDealias):
 *             o_type = SCAMPER_FILE_OBJ_DEALIAS
*/
    __pyx_t_12 = ((struct __pyx_obj_7scamper_ScamperTracelb *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_12;

    /* "scamper.pyx":8674
 *             o_type = SCAMPER_FILE_OBJ_PING
 *             o_data = (<ScamperPing>obj)._c
 *         elif isinstance(obj, ScamperTracelb):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_TRACELB
 *             o_data = (<ScamperTracelb>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8677
 *             o_type = SCAMPER_FILE_OBJ_TRACELB
 *             o_data = (<ScamperTracelb>obj)._c
 *         elif isinstance(obj, ScamperDealias):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_DEALIAS
 *             o_data = (<ScamperDealias>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8678
 *             o_data = (<ScamperTracelb>obj)._c
 *         elif isinstance(obj, ScamperDealias):
 *             o_type = SCAMPER_FILE_OBJ_DEALIAS             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperDealias>obj)._c
 *         elif isinstance(obj, ScamperNeighbourdisc):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_DEALIAS); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8678, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8678, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8679
 *         elif isinstance(obj, ScamperDealias):
 *             o_type = SCAMPER_FILE_OBJ_DEALIAS
 *             o_data = (<ScamperDealias>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperNeighbourdisc):
 *             o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
*/
    __pyx_t_13 = ((struct __pyx_obj_7scamper_ScamperDealias *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_13;

    /* "scamper.pyx":8677
 *             o_type = SCAMPER_FILE_OBJ_TRACELB
 *             o_data = (<ScamperTracelb>obj)._c
 *         elif isinstance(obj, ScamperDealias):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_DEALIAS
 *             o_data = (<ScamperDealias>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8680
 *             o_type = SCAMPER_FILE_OBJ_DEALIAS
 *             o_data = (<ScamperDealias>obj)._c
 *         elif isinstance(obj, ScamperNeighbourdisc):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
 *             o_data = (<ScamperNeighbourdisc>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperNeighbourdisc); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8681
 *             o_data = (<ScamperDealias>obj)._c
 *         elif isinstance(obj, ScamperNeighbourdisc):
 *             o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperNeighbourdisc>obj)._c
 *         elif isinstance(obj, ScamperTbit):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_NEIGHBOURDISC); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8681, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8681, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8682
 *         elif isinstance(obj, ScamperNeighbourdisc):
 *             o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
 *             o_data = (<ScamperNeighbourdisc>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperTbit):
 *             o_type = SCAMPER_FILE_OBJ_TBIT
*/
    __pyx_t_14 = ((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_14;

    /* "scamper.pyx":8680
 *             o_type = SCAMPER_FILE_OBJ_DEALIAS
 *             o_data = (<ScamperDealias>obj)._c
 *         elif isinstance(obj, ScamperNeighbourdisc):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
 *             o_data = (<ScamperNeighbourdisc>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8683
 *             o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
 *             o_data = (<ScamperNeighbourdisc>obj)._c
 *         elif isinstance(obj, ScamperTbit):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_TBIT
 *             o_data = (<ScamperTbit>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperTbit); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8684
 *             o_data = (<ScamperNeighbourdisc>obj)._c
 *         elif isinstance(obj, ScamperTbit):
 *             o_type = SCAMPER_FILE_OBJ_TBIT             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperTbit>obj)._c
 *         elif isinstance(obj, ScamperSting):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TBIT); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8684, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8684, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8685
 *         elif isinstance(obj, ScamperTbit):
 *             o_type = SCAMPER_FILE_OBJ_TBIT
 *             o_data = (<ScamperTbit>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperSting):
 *             o_type = SCAMPER_FILE_OBJ_STING
*/
    __pyx_t_15 = ((struct __pyx_obj_7scamper_ScamperTbit *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_15;

    /* "scamper.pyx":8683
 *             o_type = SCAMPER_FILE_OBJ_NEIGHBOURDISC
 *             o_data = (<ScamperNeighbourdisc>obj)._c
 *         elif isinstance(obj, ScamperTbit):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_TBIT
 *             o_data = (<ScamperTbit>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8686
 *             o_type = SCAMPER_FILE_OBJ_TBIT
 *             o_data = (<ScamperTbit>obj)._c
 *         elif isinstance(obj, ScamperSting):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_STING
 *             o_data = (<ScamperSting>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperSting); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8687
 *             o_data = (<ScamperTbit>obj)._c
 *         elif isinstance(obj, ScamperSting):
 *             o_type = SCAMPER_FILE_OBJ_STING             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperSting>obj)._c
 *         elif isinstance(obj, ScamperSniff):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_STING); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8687, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8687, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8688
 *         elif isinstance(obj, ScamperSting):
 *             o_type = SCAMPER_FILE_OBJ_STING
 *             o_data = (<ScamperSting>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperSniff):
 *             o_type = SCAMPER_FILE_OBJ_SNIFF
*/
    __pyx_t_16 = ((struct __pyx_obj_7scamper_ScamperSting *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_16;

    /* "scamper.pyx":8686
 *             o_type = SCAMPER_FILE_OBJ_TBIT
 *             o_data = (<ScamperTbit>obj)._c
 *         elif isinstance(obj, ScamperSting):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_STING
 *             o_data = (<ScamperSting>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8689
 *             o_type = SCAMPER_FILE_OBJ_STING
 *             o_data = (<ScamperSting>obj)._c
 *         elif isinstance(obj, ScamperSniff):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_SNIFF
 *             o_data = (<ScamperSniff>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperSniff); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8690
 *             o_data = (<ScamperSting>obj)._c
 *         elif isinstance(obj, ScamperSniff):
 *             o_type = SCAMPER_FILE_OBJ_SNIFF             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperSniff>obj)._c
 *         elif isinstance(obj, ScamperHost):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_SNIFF); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8690, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8690, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8691
 *         elif isinstance(obj, ScamperSniff):
 *             o_type = SCAMPER_FILE_OBJ_SNIFF
 *             o_data = (<ScamperSniff>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperHost):
 *             o_type = SCAMPER_FILE_OBJ_HOST
*/
    __pyx_t_17 = ((struct __pyx_obj_7scamper_ScamperSniff *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_17;

    /* "scamper.pyx":8689
 *             o_type = SCAMPER_FILE_OBJ_STING
 *             o_data = (<ScamperSting>obj)._c
 *         elif isinstance(obj, ScamperSniff):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_SNIFF
 *             o_data = (<ScamperSniff>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8692
 *             o_type = SCAMPER_FILE_OBJ_SNIFF
 *             o_data = (<ScamperSniff>obj)._c
 *         elif isinstance(obj, ScamperHost):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_HOST
 *             o_data = (<ScamperHost>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8693
 *             o_data = (<ScamperSniff>obj)._c
 *         elif isinstance(obj, ScamperHost):
 *             o_type = SCAMPER_FILE_OBJ_HOST             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperHost>obj)._c
 *         elif isinstance(obj, ScamperHttp):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_HOST); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8693, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8693, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8694
 *         elif isinstance(obj, ScamperHost):
 *             o_type = SCAMPER_FILE_OBJ_HOST
 *             o_data = (<ScamperHost>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperHttp):
 *             o_type = SCAMPER_FILE_OBJ_HTTP
*/
    __pyx_t_18 = ((struct __pyx_obj_7scamper_ScamperHost *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_18;

    /* "scamper.pyx":8692
 *             o_type = SCAMPER_FILE_OBJ_SNIFF
 *             o_data = (<ScamperSniff>obj)._c
 *         elif isinstance(obj, ScamperHost):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_HOST
 *             o_data = (<ScamperHost>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8695
 *             o_type = SCAMPER_FILE_OBJ_HOST
 *             o_data = (<ScamperHost>obj)._c
 *         elif isinstance(obj, ScamperHttp):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_HTTP
 *             o_data = (<ScamperHttp>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttp); 
  if (__pyx_t_1) {

    /* "scamper.pyx":8696
 *             o_data = (<ScamperHost>obj)._c
 *         elif isinstance(obj, ScamperHttp):
 *             o_type = SCAMPER_FILE_OBJ_HTTP             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperHttp>obj)._c
 *         elif isinstance(obj, ScamperUdpprobe):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_HTTP); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8696, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8696, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8697
 *         elif isinstance(obj, ScamperHttp):
 *             o_type = SCAMPER_FILE_OBJ_HTTP
 *             o_data = (<ScamperHttp>obj)._c             # <<<<<<<<<<<<<<
 *         elif isinstance(obj, ScamperUdpprobe):
 *             o_type = SCAMPER_FILE_OBJ_UDPPROBE
*/
    __pyx_t_19 = ((struct __pyx_obj_7scamper_ScamperHttp *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_19;

    /* "scamper.pyx":8695
 *             o_type = SCAMPER_FILE_OBJ_HOST
 *             o_data = (<ScamperHost>obj)._c
 *         elif isinstance(obj, ScamperHttp):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_HTTP
 *             o_data = (<ScamperHttp>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8698
 *             o_type = SCAMPER_FILE_OBJ_HTTP
 *             o_data = (<ScamperHttp>obj)._c
 *         elif isinstance(obj, ScamperUdpprobe):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_UDPPROBE
 *             o_data = (<ScamperUdpprobe>obj)._c
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperUdpprobe); 
  if (likely(__pyx_t_1)) {

    /* "scamper.pyx":8699
 *             o_data = (<ScamperHttp>obj)._c
 *         elif isinstance(obj, ScamperUdpprobe):
 *             o_type = SCAMPER_FILE_OBJ_UDPPROBE             # <<<<<<<<<<<<<<
 *             o_data = (<ScamperUdpprobe>obj)._c
 *         else:
*/
    __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_UDPPROBE); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8699, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = __Pyx_PyLong_As_uint16_t(__pyx_t_2); if (unlikely((__pyx_t_6 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 8699, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_o_type = __pyx_t_6;

    /* "scamper.pyx":8700
 *         elif isinstance(obj, ScamperUdpprobe):
 *             o_type = SCAMPER_FILE_OBJ_UDPPROBE
 *             o_data = (<ScamperUdpprobe>obj)._c             # <<<<<<<<<<<<<<
 *         else:
 *             raise RuntimeError("unhandled object type")
*/
    __pyx_t_20 = ((struct __pyx_obj_7scamper_ScamperUdpprobe *)__pyx_v_obj)->_c;
    __pyx_v_o_data = __pyx_t_20;

    /* "scamper.pyx":8698
 *             o_type = SCAMPER_FILE_OBJ_HTTP
 *             o_data = (<ScamperHttp>obj)._c
 *         elif isinstance(obj, ScamperUdpprobe):             # <<<<<<<<<<<<<<
 *             o_type = SCAMPER_FILE_OBJ_UDPPROBE
 *             o_data = (<ScamperUdpprobe>obj)._c
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":8702
 *             o_data = (<ScamperUdpprobe>obj)._c
 *         else:
 *             raise RuntimeError("unhandled object type")             # <<<<<<<<<<<<<<
 * 
 *         if (o_type == SCAMPER_FILE_OBJ_LIST or
*/
  /*else*/ {
    __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_builtin_RuntimeError);
    __pyx_t_3 = __pyx_builtin_RuntimeError; 
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_unhandled_object_type};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8702, __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_ERR(0, 8702, __pyx_L1_error)
  }
  __pyx_L4:;

  /* "scamper.pyx":8704
 *             raise RuntimeError("unhandled object type")
 * 
 *         if (o_type == SCAMPER_FILE_OBJ_LIST or             # <<<<<<<<<<<<<<
 *             o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *             o_type == SCAMPER_FILE_OBJ_ADDR):
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_LIST); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8704, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_21 < 0))) __PYX_ERR(0, 8704, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  if (!__pyx_t_21) {
  } else {
    __pyx_t_1 = __pyx_t_21;
    goto __pyx_L6_bool_binop_done;
  }

  /* "scamper.pyx":8705
 * 
 *         if (o_type == SCAMPER_FILE_OBJ_LIST or
 *             o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or             # <<<<<<<<<<<<<<
 *             o_type == SCAMPER_FILE_OBJ_ADDR):
 *             return
*/
  __pyx_t_4 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8705, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8705, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8705, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_21 < 0))) __PYX_ERR(0, 8705, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_21) {
  } else {
    __pyx_t_1 = __pyx_t_21;
    goto __pyx_L6_bool_binop_done;
  }

  /* "scamper.pyx":8706
 *         if (o_type == SCAMPER_FILE_OBJ_LIST or
 *             o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *             o_type == SCAMPER_FILE_OBJ_ADDR):             # <<<<<<<<<<<<<<
 *             return
 * 
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_ADDR); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8706, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyObject_RichCompare(__pyx_t_2, __pyx_t_3, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8706, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_21 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_21 < 0))) __PYX_ERR(0, 8706, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_1 = __pyx_t_21;
  __pyx_L6_bool_binop_done:;

  /* "scamper.pyx":8704
 *             raise RuntimeError("unhandled object type")
 * 
 *         if (o_type == SCAMPER_FILE_OBJ_LIST or             # <<<<<<<<<<<<<<
 *             o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *             o_type == SCAMPER_FILE_OBJ_ADDR):
*/
  if (__pyx_t_1) {

    /* "scamper.pyx":8707
 *             o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *             o_type == SCAMPER_FILE_OBJ_ADDR):
 *             return             # <<<<<<<<<<<<<<
 * 
 *         rc = cscamper_file.scamper_file_write_obj(self._c_sf, o_type, o_data)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":8704
 *             raise RuntimeError("unhandled object type")
 * 
 *         if (o_type == SCAMPER_FILE_OBJ_LIST or             # <<<<<<<<<<<<<<
 *             o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *             o_type == SCAMPER_FILE_OBJ_ADDR):
*/
  }

  /* "scamper.pyx":8709
 *             return
 * 
 *         rc = cscamper_file.scamper_file_write_obj(self._c_sf, o_type, o_data)             # <<<<<<<<<<<<<<
 *         if rc != 0:
 *             raise RuntimeError("could not write " + str(o_type))
*/
  __pyx_v_rc = scamper_file_write_obj(__pyx_v_self->_c_sf, __pyx_v_o_type, __pyx_v_o_data);

  /* "scamper.pyx":8710
 * 
 *         rc = cscamper_file.scamper_file_write_obj(self._c_sf, o_type, o_data)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("could not write " + str(o_type))
 * 
*/
  __pyx_t_1 = (__pyx_v_rc != 0);
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":8711
 *         rc = cscamper_file.scamper_file_write_obj(self._c_sf, o_type, o_data)
 *         if rc != 0:
 *             raise RuntimeError("could not write " + str(o_type))             # <<<<<<<<<<<<<<
 * 
 *         return
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_RuntimeError);
    __pyx_t_2 = __pyx_builtin_RuntimeError; 
    __pyx_t_22 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 8711, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_22);
    __pyx_t_23 = __Pyx_PyObject_Unicode(__pyx_t_22); if (unlikely(!__pyx_t_23)) __PYX_ERR(0, 8711, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_23);
    __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
    __pyx_t_22 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_could_not_write, __pyx_t_23); if (unlikely(!__pyx_t_22)) __PYX_ERR(0, 8711, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_22);
    __Pyx_DECREF(__pyx_t_23); __pyx_t_23 = 0;
    __pyx_t_5 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_22};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_22); __pyx_t_22 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8711, __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_ERR(0, 8711, __pyx_L1_error)

    /* "scamper.pyx":8710
 * 
 *         rc = cscamper_file.scamper_file_write_obj(self._c_sf, o_type, o_data)
 *         if rc != 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("could not write " + str(o_type))
 * 
*/
  }

  /* "scamper.pyx":8713
 *             raise RuntimeError("could not write " + str(o_type))
 * 
 *         return             # <<<<<<<<<<<<<<
 * 
 *     def is_write(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":8643
 *         raise RuntimeError("unexpected object type " + o_type)
 * 
 *     def write(self, obj):             # <<<<<<<<<<<<<<
 *         """
 *         write(obj)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_22);
  __Pyx_XDECREF(__pyx_t_23);
  __Pyx_AddTraceback("scamper.ScamperFile.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8715
 *         return
 * 
 *     def is_write(self):             # <<<<<<<<<<<<<<
 *         return self._mode == ord('w')
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_21is_write(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperFile_21is_write = {"is_write", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_21is_write, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperFile_21is_write(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_write (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_write", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_write", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_20is_write(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_20is_write(struct __pyx_obj_7scamper_ScamperFile *__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("is_write", 0);

  /* "scamper.pyx":8716
 * 
 *     def is_write(self):
 *         return self._mode == ord('w')             # <<<<<<<<<<<<<<
 * 
 *     def is_read(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->_mode == 0x77)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8715
 *         return
 * 
 *     def is_write(self):             # <<<<<<<<<<<<<<
 *         return self._mode == ord('w')
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperFile.is_write", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8718
 *         return self._mode == ord('w')
 * 
 *     def is_read(self):             # <<<<<<<<<<<<<<
 *         return self._mode == ord('r')
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_23is_read(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperFile_23is_read = {"is_read", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_23is_read, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperFile_23is_read(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_read (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_read", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_read", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_22is_read(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_22is_read(struct __pyx_obj_7scamper_ScamperFile *__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("is_read", 0);

  /* "scamper.pyx":8719
 * 
 *     def is_read(self):
 *         return self._mode == ord('r')             # <<<<<<<<<<<<<<
 * 
 * class ScamperInstError(Exception):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_self->_mode == 0x72)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":8718
 *         return self._mode == ord('w')
 * 
 *     def is_read(self):             # <<<<<<<<<<<<<<
 *         return self._mode == ord('r')
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperFile.is_read", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_25__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperFile_25__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_25__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperFile_25__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_24__reduce_cython__(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_24__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_sf_self__c_sff_cannot_be, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperFile.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperFile_27__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperFile_27__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_27__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperFile_27__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperFile.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperFile_26__setstate_cython__(((struct __pyx_obj_7scamper_ScamperFile *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperFile_26__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperFile *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_sf_self__c_sff_cannot_be, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperFile.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8722
 * 
 * class ScamperInstError(Exception):
 *     def __init__(self, message, inst):             # <<<<<<<<<<<<<<
 *         super().__init__(message)
 *         self.inst = inst
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16ScamperInstError_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_16ScamperInstError_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperInstError_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_16ScamperInstError_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_message = 0;
  PyObject *__pyx_v_inst = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_message,&__pyx_mstate_global->__pyx_n_u_inst,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8722, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8722, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8722, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8722, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 8722, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 8722, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8722, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8722, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8722, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_message = values[1];
    __pyx_v_inst = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 8722, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperInstError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_16ScamperInstError___init__(__pyx_self, __pyx_v_self, __pyx_v_message, __pyx_v_inst);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16ScamperInstError___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_message, PyObject *__pyx_v_inst) {
  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;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":8723
 * class ScamperInstError(Exception):
 *     def __init__(self, message, inst):
 *         super().__init__(message)             # <<<<<<<<<<<<<<
 *         self.inst = inst
 * 
*/
  __pyx_t_4 = NULL;
  __Pyx_INCREF(__pyx_builtin_super);
  __pyx_t_5 = __pyx_builtin_super; 
  __pyx_t_6 = __Pyx_CyFunction_GetClassObj(__pyx_self);
  if (!__pyx_t_6) { PyErr_SetString(PyExc_RuntimeError, "super(): empty __class__ cell"); __PYX_ERR(0, 8723, __pyx_L1_error) }
  __Pyx_INCREF(__pyx_t_6);
  __pyx_t_7 = 1;
  {
    PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_t_6, __pyx_v_self};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_2 = __pyx_t_3;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_7 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_message};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_init, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8723, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":8724
 *     def __init__(self, message, inst):
 *         super().__init__(message)
 *         self.inst = inst             # <<<<<<<<<<<<<<
 * 
 * class _ScamperInstData:
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_inst, __pyx_v_inst) < 0) __PYX_ERR(0, 8724, __pyx_L1_error)

  /* "scamper.pyx":8722
 * 
 * class ScamperInstError(Exception):
 *     def __init__(self, message, inst):             # <<<<<<<<<<<<<<
 *         super().__init__(message)
 *         self.inst = inst
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  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);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("scamper.ScamperInstError.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8727
 * 
 * class _ScamperInstData:
 *     def __init__(self, inst, data):             # <<<<<<<<<<<<<<
 *         self._inst = inst
 *         self._data = data
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_16_ScamperInstData_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_16_ScamperInstData_1__init__ = {"__init__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16_ScamperInstData_1__init__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_16_ScamperInstData_1__init__(PyObject *__pyx_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_self = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_data = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_self,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_data,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8727, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8727, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 8727, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, i); __PYX_ERR(0, 8727, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8727, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8727, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8727, __pyx_L3_error)
    }
    __pyx_v_self = values[0];
    __pyx_v_inst = values[1];
    __pyx_v_data = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 8727, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper._ScamperInstData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_16_ScamperInstData___init__(__pyx_self, __pyx_v_self, __pyx_v_inst, __pyx_v_data);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_16_ScamperInstData___init__(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_self, PyObject *__pyx_v_inst, PyObject *__pyx_v_data) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":8728
 * class _ScamperInstData:
 *     def __init__(self, inst, data):
 *         self._inst = inst             # <<<<<<<<<<<<<<
 *         self._data = data
 * 
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_inst_2, __pyx_v_inst) < 0) __PYX_ERR(0, 8728, __pyx_L1_error)

  /* "scamper.pyx":8729
 *     def __init__(self, inst, data):
 *         self._inst = inst
 *         self._data = data             # <<<<<<<<<<<<<<
 * 
 * cdef void _ctrl_cb(clibscamperctrl.scamper_inst_t *c_inst,
*/
  if (__Pyx_PyObject_SetAttrStr(__pyx_v_self, __pyx_mstate_global->__pyx_n_u_data_2, __pyx_v_data) < 0) __PYX_ERR(0, 8729, __pyx_L1_error)

  /* "scamper.pyx":8727
 * 
 * class _ScamperInstData:
 *     def __init__(self, inst, data):             # <<<<<<<<<<<<<<
 *         self._inst = inst
 *         self._data = data
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper._ScamperInstData.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8731
 *         self._data = data
 * 
 * cdef void _ctrl_cb(clibscamperctrl.scamper_inst_t *c_inst,             # <<<<<<<<<<<<<<
 *                    uint8_t cb_type, clibscamperctrl.scamper_task_t *c_task,
 *                    const void *data, size_t datalen) noexcept:
*/

static void __pyx_f_7scamper__ctrl_cb(scamper_inst_t *__pyx_v_c_inst, uint8_t __pyx_v_cb_type, scamper_task_t *__pyx_v_c_task, void const *__pyx_v_data, size_t __pyx_v_datalen) {
  uint16_t __pyx_v_o_type;
  void *__pyx_v_o_data;
  scamper_ctrl_t *__pyx_v_c_ctrl;
  scamper_list_t *__pyx_v_c_list;
  scamper_cycle_t *__pyx_v_c_cycle;
  char const *__pyx_v_errstr;
  struct __pyx_obj_7scamper_ScamperInst *__pyx_v_inst = NULL;
  struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_ctrl = NULL;
  void *__pyx_v_c_task_param;
  PyObject *__pyx_v_obj = NULL;
  PyObject *__pyx_v_onion = NULL;
  PyObject *__pyx_v_e = NULL;
  PyObject *__pyx_v_excstr = NULL;
  PyObject *__pyx_v_task = NULL;
  __Pyx_RefNannyDeclarations
  void *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  int __pyx_t_14;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  Py_ssize_t __pyx_t_23;
  char const *__pyx_t_24;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_ctrl_cb", 0);

  /* "scamper.pyx":8735
 *                    const void *data, size_t datalen) noexcept:
 * 
 *     cdef uint16_t o_type = 0             # <<<<<<<<<<<<<<
 *     cdef void *o_data = NULL
 *     cdef clibscamperctrl.scamper_ctrl_t *c_ctrl
*/
  __pyx_v_o_type = 0;

  /* "scamper.pyx":8736
 * 
 *     cdef uint16_t o_type = 0
 *     cdef void *o_data = NULL             # <<<<<<<<<<<<<<
 *     cdef clibscamperctrl.scamper_ctrl_t *c_ctrl
 *     cdef cscamper_list.scamper_list_t *c_list
*/
  __pyx_v_o_data = NULL;

  /* "scamper.pyx":8742
 *     cdef const char *errstr
 * 
 *     inst = <ScamperInst> clibscamperctrl.scamper_inst_param_get(c_inst)             # <<<<<<<<<<<<<<
 *     c_ctrl = clibscamperctrl.scamper_inst_ctrl_get(c_inst)
 *     ctrl = <ScamperCtrl> clibscamperctrl.scamper_ctrl_param_get(c_ctrl)
*/
  __pyx_t_1 = scamper_inst_param_get(__pyx_v_c_inst);
  __pyx_t_2 = ((PyObject *)__pyx_t_1);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":8743
 * 
 *     inst = <ScamperInst> clibscamperctrl.scamper_inst_param_get(c_inst)
 *     c_ctrl = clibscamperctrl.scamper_inst_ctrl_get(c_inst)             # <<<<<<<<<<<<<<
 *     ctrl = <ScamperCtrl> clibscamperctrl.scamper_ctrl_param_get(c_ctrl)
 * 
*/
  __pyx_v_c_ctrl = scamper_inst_ctrl_get(__pyx_v_c_inst);

  /* "scamper.pyx":8744
 *     inst = <ScamperInst> clibscamperctrl.scamper_inst_param_get(c_inst)
 *     c_ctrl = clibscamperctrl.scamper_inst_ctrl_get(c_inst)
 *     ctrl = <ScamperCtrl> clibscamperctrl.scamper_ctrl_param_get(c_ctrl)             # <<<<<<<<<<<<<<
 * 
 *     if c_task != NULL:
*/
  __pyx_t_1 = scamper_ctrl_param_get(__pyx_v_c_ctrl);
  __pyx_t_2 = ((PyObject *)__pyx_t_1);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_v_ctrl = ((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":8746
 *     ctrl = <ScamperCtrl> clibscamperctrl.scamper_ctrl_param_get(c_ctrl)
 * 
 *     if c_task != NULL:             # <<<<<<<<<<<<<<
 *         c_task_param = clibscamperctrl.scamper_task_param_get(c_task)
 *         if c_task_param != NULL:
*/
  __pyx_t_3 = (__pyx_v_c_task != NULL);
  if (__pyx_t_3) {

    /* "scamper.pyx":8747
 * 
 *     if c_task != NULL:
 *         c_task_param = clibscamperctrl.scamper_task_param_get(c_task)             # <<<<<<<<<<<<<<
 *         if c_task_param != NULL:
 *             ctrl._tasks.remove(<ScamperTask>c_task_param)
*/
    __pyx_v_c_task_param = scamper_task_param_get(__pyx_v_c_task);

    /* "scamper.pyx":8748
 *     if c_task != NULL:
 *         c_task_param = clibscamperctrl.scamper_task_param_get(c_task)
 *         if c_task_param != NULL:             # <<<<<<<<<<<<<<
 *             ctrl._tasks.remove(<ScamperTask>c_task_param)
 *             inst._tasks.remove(<ScamperTask>c_task_param)
*/
    __pyx_t_3 = (__pyx_v_c_task_param != NULL);
    if (__pyx_t_3) {

      /* "scamper.pyx":8749
 *         c_task_param = clibscamperctrl.scamper_task_param_get(c_task)
 *         if c_task_param != NULL:
 *             ctrl._tasks.remove(<ScamperTask>c_task_param)             # <<<<<<<<<<<<<<
 *             inst._tasks.remove(<ScamperTask>c_task_param)
 * 
*/
      __pyx_t_4 = __pyx_v_ctrl->_tasks;
      __Pyx_INCREF(__pyx_t_4);
      __pyx_t_5 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_c_task_param)};
        __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_remove, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8749, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":8750
 *         if c_task_param != NULL:
 *             ctrl._tasks.remove(<ScamperTask>c_task_param)
 *             inst._tasks.remove(<ScamperTask>c_task_param)             # <<<<<<<<<<<<<<
 * 
 *     if cb_type == SCAMPER_CTRL_TYPE_DATA:
*/
      __pyx_t_4 = __pyx_v_inst->_tasks;
      __Pyx_INCREF(__pyx_t_4);
      __pyx_t_5 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, ((PyObject *)__pyx_v_c_task_param)};
        __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_remove, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8750, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":8748
 *     if c_task != NULL:
 *         c_task_param = clibscamperctrl.scamper_task_param_get(c_task)
 *         if c_task_param != NULL:             # <<<<<<<<<<<<<<
 *             ctrl._tasks.remove(<ScamperTask>c_task_param)
 *             inst._tasks.remove(<ScamperTask>c_task_param)
*/
    }

    /* "scamper.pyx":8746
 *     ctrl = <ScamperCtrl> clibscamperctrl.scamper_ctrl_param_get(c_ctrl)
 * 
 *     if c_task != NULL:             # <<<<<<<<<<<<<<
 *         c_task_param = clibscamperctrl.scamper_task_param_get(c_task)
 *         if c_task_param != NULL:
*/
  }

  /* "scamper.pyx":8752
 *             inst._tasks.remove(<ScamperTask>c_task_param)
 * 
 *     if cb_type == SCAMPER_CTRL_TYPE_DATA:             # <<<<<<<<<<<<<<
 * 
 *         # add the passed in data to the file input stream, and see if
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(__pyx_v_cb_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_CTRL_TYPE_DATA); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8752, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8752, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (__pyx_t_3) {

    /* "scamper.pyx":8756
 *         # add the passed in data to the file input stream, and see if
 *         # we got a complete object at the end of it
 *         cscamper_file.scamper_file_readbuf_add(inst._c_rb, data, datalen)             # <<<<<<<<<<<<<<
 *         cscamper_file.scamper_file_read(inst._c_f, NULL, &o_type, &o_data)
 *         if o_data == NULL:
*/
    (void)(scamper_file_readbuf_add(__pyx_v_inst->_c_rb, __pyx_v_data, __pyx_v_datalen));

    /* "scamper.pyx":8757
 *         # we got a complete object at the end of it
 *         cscamper_file.scamper_file_readbuf_add(inst._c_rb, data, datalen)
 *         cscamper_file.scamper_file_read(inst._c_f, NULL, &o_type, &o_data)             # <<<<<<<<<<<<<<
 *         if o_data == NULL:
 *             return
*/
    (void)(scamper_file_read(__pyx_v_inst->_c_f, NULL, (&__pyx_v_o_type), (&__pyx_v_o_data)));

    /* "scamper.pyx":8758
 *         cscamper_file.scamper_file_readbuf_add(inst._c_rb, data, datalen)
 *         cscamper_file.scamper_file_read(inst._c_f, NULL, &o_type, &o_data)
 *         if o_data == NULL:             # <<<<<<<<<<<<<<
 *             return
 * 
*/
    __pyx_t_3 = (__pyx_v_o_data == NULL);
    if (__pyx_t_3) {

      /* "scamper.pyx":8759
 *         cscamper_file.scamper_file_read(inst._c_f, NULL, &o_type, &o_data)
 *         if o_data == NULL:
 *             return             # <<<<<<<<<<<<<<
 * 
 *         # figure out what type of object we got, and create a wrapping
*/
      goto __pyx_L0;

      /* "scamper.pyx":8758
 *         cscamper_file.scamper_file_readbuf_add(inst._c_rb, data, datalen)
 *         cscamper_file.scamper_file_read(inst._c_f, NULL, &o_type, &o_data)
 *         if o_data == NULL:             # <<<<<<<<<<<<<<
 *             return
 * 
*/
    }

    /* "scamper.pyx":8763
 *         # figure out what type of object we got, and create a wrapping
 *         # object for it
 *         if o_type == SCAMPER_FILE_OBJ_LIST:             # <<<<<<<<<<<<<<
 *             c_list = <cscamper_list.scamper_list_t *>o_data
 *             obj = ScamperList.from_ptr(c_list)
*/
    __pyx_t_6 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8763, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_LIST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8763, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8763, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8763, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8764
 *         # object for it
 *         if o_type == SCAMPER_FILE_OBJ_LIST:
 *             c_list = <cscamper_list.scamper_list_t *>o_data             # <<<<<<<<<<<<<<
 *             obj = ScamperList.from_ptr(c_list)
 *             if obj is not None:
*/
      __pyx_v_c_list = ((scamper_list_t *)__pyx_v_o_data);

      /* "scamper.pyx":8765
 *         if o_type == SCAMPER_FILE_OBJ_LIST:
 *             c_list = <cscamper_list.scamper_list_t *>o_data
 *             obj = ScamperList.from_ptr(c_list)             # <<<<<<<<<<<<<<
 *             if obj is not None:
 *                 cscamper_list.scamper_list_free(c_list)
*/
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_11ScamperList_from_ptr(__pyx_v_c_list)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8765, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_obj = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "scamper.pyx":8766
 *             c_list = <cscamper_list.scamper_list_t *>o_data
 *             obj = ScamperList.from_ptr(c_list)
 *             if obj is not None:             # <<<<<<<<<<<<<<
 *                 cscamper_list.scamper_list_free(c_list)
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or
*/
      __pyx_t_3 = (__pyx_v_obj != Py_None);
      if (__pyx_t_3) {

        /* "scamper.pyx":8767
 *             obj = ScamperList.from_ptr(c_list)
 *             if obj is not None:
 *                 cscamper_list.scamper_list_free(c_list)             # <<<<<<<<<<<<<<
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
*/
        scamper_list_free(__pyx_v_c_list);

        /* "scamper.pyx":8766
 *             c_list = <cscamper_list.scamper_list_t *>o_data
 *             obj = ScamperList.from_ptr(c_list)
 *             if obj is not None:             # <<<<<<<<<<<<<<
 *                 cscamper_list.scamper_list_free(c_list)
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or
*/
      }

      /* "scamper.pyx":8763
 *         # figure out what type of object we got, and create a wrapping
 *         # object for it
 *         if o_type == SCAMPER_FILE_OBJ_LIST:             # <<<<<<<<<<<<<<
 *             c_list = <cscamper_list.scamper_list_t *>o_data
 *             obj = ScamperList.from_ptr(c_list)
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8768
 *             if obj is not None:
 *                 cscamper_list.scamper_list_free(c_list)
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or             # <<<<<<<<<<<<<<
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_START); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8768, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8768, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 8768, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (!__pyx_t_7) {
    } else {
      __pyx_t_3 = __pyx_t_7;
      goto __pyx_L9_bool_binop_done;
    }

    /* "scamper.pyx":8769
 *                 cscamper_list.scamper_list_free(c_list)
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or             # <<<<<<<<<<<<<<
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data
*/
    __pyx_t_6 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8769, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8769, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8769, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 8769, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (!__pyx_t_7) {
    } else {
      __pyx_t_3 = __pyx_t_7;
      goto __pyx_L9_bool_binop_done;
    }

    /* "scamper.pyx":8770
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):             # <<<<<<<<<<<<<<
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data
 *             obj = ScamperCycle.from_ptr(c_cycle, o_type)
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_STOP); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8770, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8770, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 8770, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_3 = __pyx_t_7;
    __pyx_L9_bool_binop_done:;

    /* "scamper.pyx":8768
 *             if obj is not None:
 *                 cscamper_list.scamper_list_free(c_list)
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or             # <<<<<<<<<<<<<<
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
*/
    if (__pyx_t_3) {

      /* "scamper.pyx":8771
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data             # <<<<<<<<<<<<<<
 *             obj = ScamperCycle.from_ptr(c_cycle, o_type)
 *             if obj is not None:
*/
      __pyx_v_c_cycle = ((scamper_cycle_t *)__pyx_v_o_data);

      /* "scamper.pyx":8772
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data
 *             obj = ScamperCycle.from_ptr(c_cycle, o_type)             # <<<<<<<<<<<<<<
 *             if obj is not None:
 *                 cscamper_list.scamper_cycle_free(c_cycle)
*/
      __pyx_t_6 = ((PyObject *)__pyx_f_7scamper_12ScamperCycle_from_ptr(__pyx_v_c_cycle, __pyx_v_o_type)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8772, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_v_obj = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "scamper.pyx":8773
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data
 *             obj = ScamperCycle.from_ptr(c_cycle, o_type)
 *             if obj is not None:             # <<<<<<<<<<<<<<
 *                 cscamper_list.scamper_cycle_free(c_cycle)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
*/
      __pyx_t_3 = (__pyx_v_obj != Py_None);
      if (__pyx_t_3) {

        /* "scamper.pyx":8774
 *             obj = ScamperCycle.from_ptr(c_cycle, o_type)
 *             if obj is not None:
 *                 cscamper_list.scamper_cycle_free(c_cycle)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
 *             obj = ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
*/
        scamper_cycle_free(__pyx_v_c_cycle);

        /* "scamper.pyx":8773
 *             c_cycle = <cscamper_list.scamper_cycle_t *>o_data
 *             obj = ScamperCycle.from_ptr(c_cycle, o_type)
 *             if obj is not None:             # <<<<<<<<<<<<<<
 *                 cscamper_list.scamper_cycle_free(c_cycle)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
*/
      }

      /* "scamper.pyx":8768
 *             if obj is not None:
 *                 cscamper_list.scamper_list_free(c_list)
 *         elif (o_type == SCAMPER_FILE_OBJ_CYCLE_START or             # <<<<<<<<<<<<<<
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_DEF or
 *               o_type == SCAMPER_FILE_OBJ_CYCLE_STOP):
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8775
 *             if obj is not None:
 *                 cscamper_list.scamper_cycle_free(c_cycle)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:             # <<<<<<<<<<<<<<
 *             obj = ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
*/
    __pyx_t_6 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TRACE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8775, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8775, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8776
 *                 cscamper_list.scamper_cycle_free(c_cycle)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
 *             obj = ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
 *             obj = ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
*/
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_12ScamperTrace_from_ptr(((scamper_trace_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8776, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_obj = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "scamper.pyx":8775
 *             if obj is not None:
 *                 cscamper_list.scamper_cycle_free(c_cycle)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:             # <<<<<<<<<<<<<<
 *             obj = ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8777
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
 *             obj = ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_PING:             # <<<<<<<<<<<<<<
 *             obj = ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8777, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_PING); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8777, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8777, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8777, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8778
 *             obj = ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
 *             obj = ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
 *             obj = ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
*/
      __pyx_t_6 = ((PyObject *)__pyx_f_7scamper_11ScamperPing_from_ptr(((scamper_ping_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8778, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_v_obj = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "scamper.pyx":8777
 *         elif o_type == SCAMPER_FILE_OBJ_TRACE:
 *             obj = ScamperTrace.from_ptr(<cscamper_trace.scamper_trace_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_PING:             # <<<<<<<<<<<<<<
 *             obj = ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8779
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
 *             obj = ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:             # <<<<<<<<<<<<<<
 *             obj = ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
*/
    __pyx_t_6 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8779, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TRACELB); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8779, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8779, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8779, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8780
 *             obj = ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
 *             obj = ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
 *             obj = ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
*/
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_14ScamperTracelb_from_ptr(((scamper_tracelb_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8780, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_obj = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "scamper.pyx":8779
 *         elif o_type == SCAMPER_FILE_OBJ_PING:
 *             obj = ScamperPing.from_ptr(<cscamper_ping.scamper_ping_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:             # <<<<<<<<<<<<<<
 *             obj = ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8781
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
 *             obj = ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:             # <<<<<<<<<<<<<<
 *             obj = ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8781, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_DEALIAS); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8781, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8781, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8781, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8782
 *             obj = ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
 *             obj = ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
 *             obj = ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
*/
      __pyx_t_6 = ((PyObject *)__pyx_f_7scamper_14ScamperDealias_from_ptr(((scamper_dealias_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8782, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_v_obj = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "scamper.pyx":8781
 *         elif o_type == SCAMPER_FILE_OBJ_TRACELB:
 *             obj = ScamperTracelb.from_ptr(<cscamper_tracelb.scamper_tracelb_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:             # <<<<<<<<<<<<<<
 *             obj = ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8783
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
 *             obj = ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:             # <<<<<<<<<<<<<<
 *             obj = ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
*/
    __pyx_t_6 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8783, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_NEIGHBOURDISC); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8783, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8783, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8783, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8784
 *             obj = ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
 *             obj = ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
 *             obj = ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
*/
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_20ScamperNeighbourdisc_from_ptr(((scamper_neighbourdisc_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8784, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_obj = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "scamper.pyx":8783
 *         elif o_type == SCAMPER_FILE_OBJ_DEALIAS:
 *             obj = ScamperDealias.from_ptr(<cscamper_dealias.scamper_dealias_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:             # <<<<<<<<<<<<<<
 *             obj = ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8785
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
 *             obj = ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:             # <<<<<<<<<<<<<<
 *             obj = ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8785, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TBIT); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8785, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8785, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8785, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8786
 *             obj = ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
 *             obj = ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
 *             obj = ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
*/
      __pyx_t_6 = ((PyObject *)__pyx_f_7scamper_11ScamperTbit_from_ptr(((scamper_tbit_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8786, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_v_obj = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "scamper.pyx":8785
 *         elif o_type == SCAMPER_FILE_OBJ_NEIGHBOURDISC:
 *             obj = ScamperNeighbourdisc.from_ptr(<cscamper_neighbourdisc.scamper_neighbourdisc_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:             # <<<<<<<<<<<<<<
 *             obj = ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8787
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
 *             obj = ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_STING:             # <<<<<<<<<<<<<<
 *             obj = ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
*/
    __pyx_t_6 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8787, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_STING); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8787, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8787, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8787, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8788
 *             obj = ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
 *             obj = ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
 *             obj = ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
*/
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_12ScamperSting_from_ptr(((scamper_sting_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8788, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_obj = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "scamper.pyx":8787
 *         elif o_type == SCAMPER_FILE_OBJ_TBIT:
 *             obj = ScamperTbit.from_ptr(<cscamper_tbit.scamper_tbit_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_STING:             # <<<<<<<<<<<<<<
 *             obj = ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8789
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
 *             obj = ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:             # <<<<<<<<<<<<<<
 *             obj = ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8789, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_SNIFF); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8789, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8789, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8789, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8790
 *             obj = ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
 *             obj = ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
 *             obj = ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
*/
      __pyx_t_6 = ((PyObject *)__pyx_f_7scamper_12ScamperSniff_from_ptr(((scamper_sniff_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8790, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_v_obj = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "scamper.pyx":8789
 *         elif o_type == SCAMPER_FILE_OBJ_STING:
 *             obj = ScamperSting.from_ptr(<cscamper_sting.scamper_sting_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:             # <<<<<<<<<<<<<<
 *             obj = ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8791
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
 *             obj = ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:             # <<<<<<<<<<<<<<
 *             obj = ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
*/
    __pyx_t_6 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8791, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_HOST); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8791, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8791, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8791, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8792
 *             obj = ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
 *             obj = ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
 *             obj = ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
*/
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_11ScamperHost_from_ptr(((scamper_host_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8792, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_obj = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "scamper.pyx":8791
 *         elif o_type == SCAMPER_FILE_OBJ_SNIFF:
 *             obj = ScamperSniff.from_ptr(<cscamper_sniff.scamper_sniff_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:             # <<<<<<<<<<<<<<
 *             obj = ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8793
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
 *             obj = ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:             # <<<<<<<<<<<<<<
 *             obj = ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:
*/
    __pyx_t_2 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8793, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_HTTP); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8793, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8793, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8793, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8794
 *             obj = ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
 *             obj = ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)             # <<<<<<<<<<<<<<
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:
 *             obj = ScamperUdpprobe.from_ptr(<cscamper_udpprobe.scamper_udpprobe_t *>o_data)
*/
      __pyx_t_6 = ((PyObject *)__pyx_f_7scamper_11ScamperHttp_from_ptr(((scamper_http_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8794, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_v_obj = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "scamper.pyx":8793
 *         elif o_type == SCAMPER_FILE_OBJ_HOST:
 *             obj = ScamperHost.from_ptr(<cscamper_host.scamper_host_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:             # <<<<<<<<<<<<<<
 *             obj = ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8795
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
 *             obj = ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:             # <<<<<<<<<<<<<<
 *             obj = ScamperUdpprobe.from_ptr(<cscamper_udpprobe.scamper_udpprobe_t *>o_data)
 *         else:
*/
    __pyx_t_6 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8795, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_UDPPROBE); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8795, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8795, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 8795, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":8796
 *             obj = ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:
 *             obj = ScamperUdpprobe.from_ptr(<cscamper_udpprobe.scamper_udpprobe_t *>o_data)             # <<<<<<<<<<<<<<
 *         else:
 *             obj = None
*/
      __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_15ScamperUdpprobe_from_ptr(((scamper_udpprobe_t *)__pyx_v_o_data))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8796, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_v_obj = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "scamper.pyx":8795
 *         elif o_type == SCAMPER_FILE_OBJ_HTTP:
 *             obj = ScamperHttp.from_ptr(<cscamper_http.scamper_http_t *>o_data)
 *         elif o_type == SCAMPER_FILE_OBJ_UDPPROBE:             # <<<<<<<<<<<<<<
 *             obj = ScamperUdpprobe.from_ptr(<cscamper_udpprobe.scamper_udpprobe_t *>o_data)
 *         else:
*/
      goto __pyx_L7;
    }

    /* "scamper.pyx":8798
 *             obj = ScamperUdpprobe.from_ptr(<cscamper_udpprobe.scamper_udpprobe_t *>o_data)
 *         else:
 *             obj = None             # <<<<<<<<<<<<<<
 * 
 *         # put the object on the queue, or queue an exception
*/
    /*else*/ {
      __Pyx_INCREF(Py_None);
      __pyx_v_obj = Py_None;
    }
    __pyx_L7:;

    /* "scamper.pyx":8801
 * 
 *         # put the object on the queue, or queue an exception
 *         if obj is None:             # <<<<<<<<<<<<<<
 *             ctrl._exceptions.append(RuntimeError("unexpected object type " +
 *                                                  o_type))
*/
    __pyx_t_3 = (__pyx_v_obj == Py_None);
    if (__pyx_t_3) {

      /* "scamper.pyx":8802
 *         # put the object on the queue, or queue an exception
 *         if obj is None:
 *             ctrl._exceptions.append(RuntimeError("unexpected object type " +             # <<<<<<<<<<<<<<
 *                                                  o_type))
 *         else:
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_6 = __pyx_builtin_RuntimeError; 

      /* "scamper.pyx":8803
 *         if obj is None:
 *             ctrl._exceptions.append(RuntimeError("unexpected object type " +
 *                                                  o_type))             # <<<<<<<<<<<<<<
 *         else:
 *             # if we've been passed an output file, write to it.
*/
      __pyx_t_8 = __Pyx_PyLong_From_uint16_t(__pyx_v_o_type); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8803, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);

      /* "scamper.pyx":8802
 *         # put the object on the queue, or queue an exception
 *         if obj is None:
 *             ctrl._exceptions.append(RuntimeError("unexpected object type " +             # <<<<<<<<<<<<<<
 *                                                  o_type))
 *         else:
*/
      __pyx_t_9 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_unexpected_object_type, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8802, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_9};
        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8802, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_ctrl->_exceptions, __pyx_t_2); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 8802, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

      /* "scamper.pyx":8801
 * 
 *         # put the object on the queue, or queue an exception
 *         if obj is None:             # <<<<<<<<<<<<<<
 *             ctrl._exceptions.append(RuntimeError("unexpected object type " +
 *                                                  o_type))
*/
      goto __pyx_L13;
    }

    /* "scamper.pyx":8806
 *         else:
 *             # if we've been passed an output file, write to it.
 *             if ctrl._outfile is not None:             # <<<<<<<<<<<<<<
 *                 try:
 *                     ctrl._outfile.write(obj)
*/
    /*else*/ {
      __pyx_t_3 = (__pyx_v_ctrl->_outfile != Py_None);
      if (__pyx_t_3) {

        /* "scamper.pyx":8807
 *             # if we've been passed an output file, write to it.
 *             if ctrl._outfile is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     ctrl._outfile.write(obj)
 *                 except Exception:
*/
        {
          __Pyx_PyThreadState_declare
          __Pyx_PyThreadState_assign
          __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
          __Pyx_XGOTREF(__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_12);
          __Pyx_XGOTREF(__pyx_t_13);
          /*try:*/ {

            /* "scamper.pyx":8808
 *             if ctrl._outfile is not None:
 *                 try:
 *                     ctrl._outfile.write(obj)             # <<<<<<<<<<<<<<
 *                 except Exception:
 *                     pass
*/
            __pyx_t_6 = __pyx_v_ctrl->_outfile;
            __Pyx_INCREF(__pyx_t_6);
            __pyx_t_5 = 0;
            {
              PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_obj};
              __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_write, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
              if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8808, __pyx_L15_error)
              __Pyx_GOTREF(__pyx_t_2);
            }
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

            /* "scamper.pyx":8807
 *             # if we've been passed an output file, write to it.
 *             if ctrl._outfile is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     ctrl._outfile.write(obj)
 *                 except Exception:
*/
          }
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
          __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
          goto __pyx_L20_try_end;
          __pyx_L15_error:;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

          /* "scamper.pyx":8809
 *                 try:
 *                     ctrl._outfile.write(obj)
 *                 except Exception:             # <<<<<<<<<<<<<<
 *                     pass
 *             if not isinstance(obj, (ScamperList, ScamperCycle)):
*/
          __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
          if (__pyx_t_14) {
            __Pyx_ErrRestore(0,0,0);
            goto __pyx_L16_exception_handled;
          }
          goto __pyx_L17_except_error;

          /* "scamper.pyx":8807
 *             # if we've been passed an output file, write to it.
 *             if ctrl._outfile is not None:
 *                 try:             # <<<<<<<<<<<<<<
 *                     ctrl._outfile.write(obj)
 *                 except Exception:
*/
          __pyx_L17_except_error:;
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
          goto __pyx_L1_error;
          __pyx_L16_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_XGIVEREF(__pyx_t_12);
          __Pyx_XGIVEREF(__pyx_t_13);
          __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
          __pyx_L20_try_end:;
        }

        /* "scamper.pyx":8806
 *         else:
 *             # if we've been passed an output file, write to it.
 *             if ctrl._outfile is not None:             # <<<<<<<<<<<<<<
 *                 try:
 *                     ctrl._outfile.write(obj)
*/
      }

      /* "scamper.pyx":8811
 *                 except Exception:
 *                     pass
 *             if not isinstance(obj, (ScamperList, ScamperCycle)):             # <<<<<<<<<<<<<<
 *                 obj._inst = inst
 *             onion = _ScamperInstData(inst, obj)
*/
      __pyx_t_7 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperList); 
      if (!__pyx_t_7) {
      } else {
        __pyx_t_3 = __pyx_t_7;
        goto __pyx_L24_bool_binop_done;
      }
      __pyx_t_7 = __Pyx_TypeCheck(__pyx_v_obj, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperCycle); 
      __pyx_t_3 = __pyx_t_7;
      __pyx_L24_bool_binop_done:;
      __pyx_t_7 = (!__pyx_t_3);
      if (__pyx_t_7) {

        /* "scamper.pyx":8812
 *                     pass
 *             if not isinstance(obj, (ScamperList, ScamperCycle)):
 *                 obj._inst = inst             # <<<<<<<<<<<<<<
 *             onion = _ScamperInstData(inst, obj)
 *             if ctrl._c_synctask != NULL and ctrl._c_synctask == c_task:
*/
        if (__Pyx_PyObject_SetAttrStr(__pyx_v_obj, __pyx_mstate_global->__pyx_n_u_inst_2, ((PyObject *)__pyx_v_inst)) < 0) __PYX_ERR(0, 8812, __pyx_L1_error)

        /* "scamper.pyx":8811
 *                 except Exception:
 *                     pass
 *             if not isinstance(obj, (ScamperList, ScamperCycle)):             # <<<<<<<<<<<<<<
 *                 obj._inst = inst
 *             onion = _ScamperInstData(inst, obj)
*/
      }

      /* "scamper.pyx":8813
 *             if not isinstance(obj, (ScamperList, ScamperCycle)):
 *                 obj._inst = inst
 *             onion = _ScamperInstData(inst, obj)             # <<<<<<<<<<<<<<
 *             if ctrl._c_synctask != NULL and ctrl._c_synctask == c_task:
 *                 ctrl._syncdata = onion
*/
      __pyx_t_6 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_ScamperInstData); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8813, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_9);
        assert(__pyx_t_6);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
        __pyx_t_5 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[3] = {__pyx_t_6, ((PyObject *)__pyx_v_inst), __pyx_v_obj};
        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8813, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __pyx_v_onion = __pyx_t_2;
      __pyx_t_2 = 0;

      /* "scamper.pyx":8814
 *                 obj._inst = inst
 *             onion = _ScamperInstData(inst, obj)
 *             if ctrl._c_synctask != NULL and ctrl._c_synctask == c_task:             # <<<<<<<<<<<<<<
 *                 ctrl._syncdata = onion
 *             else:
*/
      __pyx_t_3 = (__pyx_v_ctrl->_c_synctask != NULL);
      if (__pyx_t_3) {
      } else {
        __pyx_t_7 = __pyx_t_3;
        goto __pyx_L27_bool_binop_done;
      }
      __pyx_t_3 = (__pyx_v_ctrl->_c_synctask == __pyx_v_c_task);
      __pyx_t_7 = __pyx_t_3;
      __pyx_L27_bool_binop_done:;
      if (__pyx_t_7) {

        /* "scamper.pyx":8815
 *             onion = _ScamperInstData(inst, obj)
 *             if ctrl._c_synctask != NULL and ctrl._c_synctask == c_task:
 *                 ctrl._syncdata = onion             # <<<<<<<<<<<<<<
 *             else:
 *                 ctrl._objs.append(onion)
*/
        __Pyx_INCREF(__pyx_v_onion);
        __Pyx_GIVEREF(__pyx_v_onion);
        __Pyx_GOTREF(__pyx_v_ctrl->_syncdata);
        __Pyx_DECREF(__pyx_v_ctrl->_syncdata);
        __pyx_v_ctrl->_syncdata = __pyx_v_onion;

        /* "scamper.pyx":8814
 *                 obj._inst = inst
 *             onion = _ScamperInstData(inst, obj)
 *             if ctrl._c_synctask != NULL and ctrl._c_synctask == c_task:             # <<<<<<<<<<<<<<
 *                 ctrl._syncdata = onion
 *             else:
*/
        goto __pyx_L26;
      }

      /* "scamper.pyx":8817
 *                 ctrl._syncdata = onion
 *             else:
 *                 ctrl._objs.append(onion)             # <<<<<<<<<<<<<<
 *             inst._queued += 1
 * 
*/
      /*else*/ {
        __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_ctrl->_objs, __pyx_v_onion); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 8817, __pyx_L1_error)
      }
      __pyx_L26:;

      /* "scamper.pyx":8818
 *             else:
 *                 ctrl._objs.append(onion)
 *             inst._queued += 1             # <<<<<<<<<<<<<<
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_MORE:
*/
      __pyx_v_inst->_queued = (__pyx_v_inst->_queued + 1);
    }
    __pyx_L13:;

    /* "scamper.pyx":8752
 *             inst._tasks.remove(<ScamperTask>c_task_param)
 * 
 *     if cb_type == SCAMPER_CTRL_TYPE_DATA:             # <<<<<<<<<<<<<<
 * 
 *         # add the passed in data to the file input stream, and see if
*/
    goto __pyx_L5;
  }

  /* "scamper.pyx":8820
 *             inst._queued += 1
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_MORE:             # <<<<<<<<<<<<<<
 *         if ctrl._morecb is not None:
 *             try:
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(__pyx_v_cb_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8820, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_SCAMPER_CTRL_TYPE_MORE); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8820, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_6 = PyObject_RichCompare(__pyx_t_2, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8820, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 8820, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (__pyx_t_7) {

    /* "scamper.pyx":8821
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_MORE:
 *         if ctrl._morecb is not None:             # <<<<<<<<<<<<<<
 *             try:
 *                 ctrl._morecb(ctrl, inst, ctrl._param)
*/
    __pyx_t_7 = (__pyx_v_ctrl->_morecb != Py_None);
    if (__pyx_t_7) {

      /* "scamper.pyx":8822
 *     elif cb_type == SCAMPER_CTRL_TYPE_MORE:
 *         if ctrl._morecb is not None:
 *             try:             # <<<<<<<<<<<<<<
 *                 ctrl._morecb(ctrl, inst, ctrl._param)
 *             except Exception as e:
*/
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_13);
        __Pyx_XGOTREF(__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_11);
        /*try:*/ {

          /* "scamper.pyx":8823
 *         if ctrl._morecb is not None:
 *             try:
 *                 ctrl._morecb(ctrl, inst, ctrl._param)             # <<<<<<<<<<<<<<
 *             except Exception as e:
 *                 ctrl._exceptions.append(e)
*/
          __pyx_t_9 = NULL;
          __Pyx_INCREF(__pyx_v_ctrl->_morecb);
          __pyx_t_2 = __pyx_v_ctrl->_morecb; 
          __pyx_t_5 = 1;
          #if CYTHON_UNPACK_METHODS
          if (likely(PyMethod_Check(__pyx_t_2))) {
            __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_2);
            assert(__pyx_t_9);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_9);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
            __pyx_t_5 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[4] = {__pyx_t_9, ((PyObject *)__pyx_v_ctrl), ((PyObject *)__pyx_v_inst), __pyx_v_ctrl->_param};
            __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8823, __pyx_L30_error)
            __Pyx_GOTREF(__pyx_t_6);
          }
          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

          /* "scamper.pyx":8822
 *     elif cb_type == SCAMPER_CTRL_TYPE_MORE:
 *         if ctrl._morecb is not None:
 *             try:             # <<<<<<<<<<<<<<
 *                 ctrl._morecb(ctrl, inst, ctrl._param)
 *             except Exception as e:
*/
        }
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        goto __pyx_L35_try_end;
        __pyx_L30_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "scamper.pyx":8824
 *             try:
 *                 ctrl._morecb(ctrl, inst, ctrl._param)
 *             except Exception as e:             # <<<<<<<<<<<<<<
 *                 ctrl._exceptions.append(e)
 * 
*/
        __pyx_t_14 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
        if (__pyx_t_14) {
          __Pyx_AddTraceback("scamper._ctrl_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_2, &__pyx_t_9) < 0) __PYX_ERR(0, 8824, __pyx_L32_except_error)
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_INCREF(__pyx_t_2);
          __pyx_v_e = __pyx_t_2;
          /*try:*/ {

            /* "scamper.pyx":8825
 *                 ctrl._morecb(ctrl, inst, ctrl._param)
 *             except Exception as e:
 *                 ctrl._exceptions.append(e)             # <<<<<<<<<<<<<<
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_ERR:
*/
            __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_ctrl->_exceptions, __pyx_v_e); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 8825, __pyx_L41_error)
          }

          /* "scamper.pyx":8824
 *             try:
 *                 ctrl._morecb(ctrl, inst, ctrl._param)
 *             except Exception as e:             # <<<<<<<<<<<<<<
 *                 ctrl._exceptions.append(e)
 * 
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              goto __pyx_L42;
            }
            __pyx_L41_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
               __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
              if ( unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_17);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_20);
              __Pyx_XGOTREF(__pyx_t_21);
              __Pyx_XGOTREF(__pyx_t_22);
              __pyx_t_14 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              }
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
              __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
              __pyx_lineno = __pyx_t_14; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
              goto __pyx_L32_except_error;
            }
            __pyx_L42:;
          }
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          goto __pyx_L31_exception_handled;
        }
        goto __pyx_L32_except_error;

        /* "scamper.pyx":8822
 *     elif cb_type == SCAMPER_CTRL_TYPE_MORE:
 *         if ctrl._morecb is not None:
 *             try:             # <<<<<<<<<<<<<<
 *                 ctrl._morecb(ctrl, inst, ctrl._param)
 *             except Exception as e:
*/
        __pyx_L32_except_error:;
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
        goto __pyx_L1_error;
        __pyx_L31_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_12, __pyx_t_11);
        __pyx_L35_try_end:;
      }

      /* "scamper.pyx":8821
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_MORE:
 *         if ctrl._morecb is not None:             # <<<<<<<<<<<<<<
 *             try:
 *                 ctrl._morecb(ctrl, inst, ctrl._param)
*/
    }

    /* "scamper.pyx":8820
 *             inst._queued += 1
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_MORE:             # <<<<<<<<<<<<<<
 *         if ctrl._morecb is not None:
 *             try:
*/
    goto __pyx_L5;
  }

  /* "scamper.pyx":8827
 *                 ctrl._exceptions.append(e)
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_ERR:             # <<<<<<<<<<<<<<
 *         errstr = <const char *>data
 *         excstr = f"got err from {inst.name}"
*/
  __pyx_t_9 = __Pyx_PyLong_From_uint8_t(__pyx_v_cb_type); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SCAMPER_CTRL_TYPE_ERR); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8827, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_6 = PyObject_RichCompare(__pyx_t_9, __pyx_t_2, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8827, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 8827, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  if (__pyx_t_7) {

    /* "scamper.pyx":8828
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_ERR:
 *         errstr = <const char *>data             # <<<<<<<<<<<<<<
 *         excstr = f"got err from {inst.name}"
 *         if errstr != NULL and errstr[0] != ord('\0'):
*/
    __pyx_v_errstr = ((char const *)__pyx_v_data);

    /* "scamper.pyx":8829
 *     elif cb_type == SCAMPER_CTRL_TYPE_ERR:
 *         errstr = <const char *>data
 *         excstr = f"got err from {inst.name}"             # <<<<<<<<<<<<<<
 *         if errstr != NULL and errstr[0] != ord('\0'):
 *             excstr += ": " + errstr.decode('UTF-8', 'strict')
*/
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_inst), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8829, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8829, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_got_err_from, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8829, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_excstr = __pyx_t_6;
    __pyx_t_6 = 0;

    /* "scamper.pyx":8830
 *         errstr = <const char *>data
 *         excstr = f"got err from {inst.name}"
 *         if errstr != NULL and errstr[0] != ord('\0'):             # <<<<<<<<<<<<<<
 *             excstr += ": " + errstr.decode('UTF-8', 'strict')
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))
*/
    __pyx_t_3 = (__pyx_v_errstr != NULL);
    if (__pyx_t_3) {
    } else {
      __pyx_t_7 = __pyx_t_3;
      goto __pyx_L48_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_errstr[0]) != 0);
    __pyx_t_7 = __pyx_t_3;
    __pyx_L48_bool_binop_done:;
    if (__pyx_t_7) {

      /* "scamper.pyx":8831
 *         excstr = f"got err from {inst.name}"
 *         if errstr != NULL and errstr[0] != ord('\0'):
 *             excstr += ": " + errstr.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))
 * 
*/
      __pyx_t_23 = __Pyx_ssize_strlen(__pyx_v_errstr); if (unlikely(__pyx_t_23 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8831, __pyx_L1_error)
      __pyx_t_6 = __Pyx_decode_c_string(__pyx_v_errstr, 0, __pyx_t_23, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8831, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u__18, __pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8831, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyUnicode_ConcatInPlace(__pyx_v_excstr, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8831, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF_SET(__pyx_v_excstr, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "scamper.pyx":8830
 *         errstr = <const char *>data
 *         excstr = f"got err from {inst.name}"
 *         if errstr != NULL and errstr[0] != ord('\0'):             # <<<<<<<<<<<<<<
 *             excstr += ": " + errstr.decode('UTF-8', 'strict')
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))
*/
    }

    /* "scamper.pyx":8832
 *         if errstr != NULL and errstr[0] != ord('\0'):
 *             excstr += ": " + errstr.decode('UTF-8', 'strict')
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))             # <<<<<<<<<<<<<<
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_FATAL:
*/
    __pyx_t_2 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_ScamperInstError); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8832, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_9))) {
      __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_9);
      assert(__pyx_t_2);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
      __Pyx_INCREF(__pyx_t_2);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_2, __pyx_v_excstr, ((PyObject *)__pyx_v_inst)};
      __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8832, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_ctrl->_exceptions, __pyx_t_6); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 8832, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "scamper.pyx":8827
 *                 ctrl._exceptions.append(e)
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_ERR:             # <<<<<<<<<<<<<<
 *         errstr = <const char *>data
 *         excstr = f"got err from {inst.name}"
*/
    goto __pyx_L5;
  }

  /* "scamper.pyx":8834
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_FATAL:             # <<<<<<<<<<<<<<
 *         excstr = f"got fatal from {inst.name}"
 *         errstr = clibscamperctrl.scamper_ctrl_strerror(c_ctrl)
*/
  __pyx_t_6 = __Pyx_PyLong_From_uint8_t(__pyx_v_cb_type); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8834, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_SCAMPER_CTRL_TYPE_FATAL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8834, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_2 = PyObject_RichCompare(__pyx_t_6, __pyx_t_9, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8834, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 8834, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (__pyx_t_7) {

    /* "scamper.pyx":8835
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_FATAL:
 *         excstr = f"got fatal from {inst.name}"             # <<<<<<<<<<<<<<
 *         errstr = clibscamperctrl.scamper_ctrl_strerror(c_ctrl)
 *         if errstr != NULL and errstr[0] != ord('\0'):
*/
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_inst), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8835, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8835, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_got_fatal_from, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8835, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_v_excstr = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "scamper.pyx":8836
 *     elif cb_type == SCAMPER_CTRL_TYPE_FATAL:
 *         excstr = f"got fatal from {inst.name}"
 *         errstr = clibscamperctrl.scamper_ctrl_strerror(c_ctrl)             # <<<<<<<<<<<<<<
 *         if errstr != NULL and errstr[0] != ord('\0'):
 *             excstr += ": " + errstr.decode('UTF-8', 'strict')
*/
    __pyx_v_errstr = scamper_ctrl_strerror(__pyx_v_c_ctrl);

    /* "scamper.pyx":8837
 *         excstr = f"got fatal from {inst.name}"
 *         errstr = clibscamperctrl.scamper_ctrl_strerror(c_ctrl)
 *         if errstr != NULL and errstr[0] != ord('\0'):             # <<<<<<<<<<<<<<
 *             excstr += ": " + errstr.decode('UTF-8', 'strict')
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))
*/
    __pyx_t_3 = (__pyx_v_errstr != NULL);
    if (__pyx_t_3) {
    } else {
      __pyx_t_7 = __pyx_t_3;
      goto __pyx_L51_bool_binop_done;
    }
    __pyx_t_3 = ((__pyx_v_errstr[0]) != 0);
    __pyx_t_7 = __pyx_t_3;
    __pyx_L51_bool_binop_done:;
    if (__pyx_t_7) {

      /* "scamper.pyx":8838
 *         errstr = clibscamperctrl.scamper_ctrl_strerror(c_ctrl)
 *         if errstr != NULL and errstr[0] != ord('\0'):
 *             excstr += ": " + errstr.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))
 * 
*/
      __pyx_t_23 = __Pyx_ssize_strlen(__pyx_v_errstr); if (unlikely(__pyx_t_23 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8838, __pyx_L1_error)
      __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_errstr, 0, __pyx_t_23, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8838, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u__18, __pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8838, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyUnicode_ConcatInPlace(__pyx_v_excstr, __pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8838, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF_SET(__pyx_v_excstr, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "scamper.pyx":8837
 *         excstr = f"got fatal from {inst.name}"
 *         errstr = clibscamperctrl.scamper_ctrl_strerror(c_ctrl)
 *         if errstr != NULL and errstr[0] != ord('\0'):             # <<<<<<<<<<<<<<
 *             excstr += ": " + errstr.decode('UTF-8', 'strict')
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))
*/
    }

    /* "scamper.pyx":8839
 *         if errstr != NULL and errstr[0] != ord('\0'):
 *             excstr += ": " + errstr.decode('UTF-8', 'strict')
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))             # <<<<<<<<<<<<<<
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_EOF:
*/
    __pyx_t_9 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_ScamperInstError); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8839, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_9 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_9);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_9);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_9, __pyx_v_excstr, ((PyObject *)__pyx_v_inst)};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_5, (3-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8839, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_ctrl->_exceptions, __pyx_t_2); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 8839, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":8834
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_FATAL:             # <<<<<<<<<<<<<<
 *         excstr = f"got fatal from {inst.name}"
 *         errstr = clibscamperctrl.scamper_ctrl_strerror(c_ctrl)
*/
    goto __pyx_L5;
  }

  /* "scamper.pyx":8841
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_EOF:             # <<<<<<<<<<<<<<
 *         # got an eof on an instance.  remove the references to the tasks
 *         # managed by inst from both the inst and ctrl objects.
*/
  __pyx_t_2 = __Pyx_PyLong_From_uint8_t(__pyx_v_cb_type); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_SCAMPER_CTRL_TYPE_EOF); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_9 = PyObject_RichCompare(__pyx_t_2, __pyx_t_6, Py_EQ); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8841, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 8841, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  if (__pyx_t_7) {

    /* "scamper.pyx":8844
 *         # got an eof on an instance.  remove the references to the tasks
 *         # managed by inst from both the inst and ctrl objects.
 *         while len(inst._tasks) > 0:             # <<<<<<<<<<<<<<
 *             task = inst._tasks.pop(0)
 *             ctrl._tasks.remove(task)
*/
    while (1) {
      __pyx_t_9 = __pyx_v_inst->_tasks;
      __Pyx_INCREF(__pyx_t_9);
      __pyx_t_23 = PyObject_Length(__pyx_t_9); if (unlikely(__pyx_t_23 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8844, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_7 = (__pyx_t_23 > 0);
      if (!__pyx_t_7) break;

      /* "scamper.pyx":8845
 *         # managed by inst from both the inst and ctrl objects.
 *         while len(inst._tasks) > 0:
 *             task = inst._tasks.pop(0)             # <<<<<<<<<<<<<<
 *             ctrl._tasks.remove(task)
 * 
*/
      __pyx_t_9 = __Pyx_PyObject_PopIndex(__pyx_v_inst->_tasks, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8845, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_XDECREF_SET(__pyx_v_task, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "scamper.pyx":8846
 *         while len(inst._tasks) > 0:
 *             task = inst._tasks.pop(0)
 *             ctrl._tasks.remove(task)             # <<<<<<<<<<<<<<
 * 
 *         # mark the inst as having reached eof incase holder attempts to
*/
      __pyx_t_6 = __pyx_v_ctrl->_tasks;
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_5 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_task};
        __pyx_t_9 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_remove, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8846, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
      }
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    }

    /* "scamper.pyx":8850
 *         # mark the inst as having reached eof incase holder attempts to
 *         # use the instance again.
 *         inst._eof = True             # <<<<<<<<<<<<<<
 * 
 *         # remove the instance from the set of instances managed by ctrl
*/
    __pyx_v_inst->_eof = 1;

    /* "scamper.pyx":8854
 *         # remove the instance from the set of instances managed by ctrl
 *         # and call the eofcb if one provided by the user.
 *         ctrl._insts.remove(inst)             # <<<<<<<<<<<<<<
 *         if ctrl._eofcb is not None and inst._queued == 0:
 *             try:
*/
    __pyx_t_6 = __pyx_v_ctrl->_insts;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, ((PyObject *)__pyx_v_inst)};
      __pyx_t_9 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_remove, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8854, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
    }
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":8855
 *         # and call the eofcb if one provided by the user.
 *         ctrl._insts.remove(inst)
 *         if ctrl._eofcb is not None and inst._queued == 0:             # <<<<<<<<<<<<<<
 *             try:
 *                 ctrl._eofcb(ctrl, inst, ctrl._param)
*/
    __pyx_t_3 = (__pyx_v_ctrl->_eofcb != Py_None);
    if (__pyx_t_3) {
    } else {
      __pyx_t_7 = __pyx_t_3;
      goto __pyx_L56_bool_binop_done;
    }
    __pyx_t_3 = (__pyx_v_inst->_queued == 0);
    __pyx_t_7 = __pyx_t_3;
    __pyx_L56_bool_binop_done:;
    if (__pyx_t_7) {

      /* "scamper.pyx":8856
 *         ctrl._insts.remove(inst)
 *         if ctrl._eofcb is not None and inst._queued == 0:
 *             try:             # <<<<<<<<<<<<<<
 *                 ctrl._eofcb(ctrl, inst, ctrl._param)
 *             except Exception as e:
*/
      {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_ExceptionSave(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
        __Pyx_XGOTREF(__pyx_t_11);
        __Pyx_XGOTREF(__pyx_t_12);
        __Pyx_XGOTREF(__pyx_t_13);
        /*try:*/ {

          /* "scamper.pyx":8857
 *         if ctrl._eofcb is not None and inst._queued == 0:
 *             try:
 *                 ctrl._eofcb(ctrl, inst, ctrl._param)             # <<<<<<<<<<<<<<
 *             except Exception as e:
 *                 ctrl._exceptions.append(e)
*/
          __pyx_t_6 = NULL;
          __Pyx_INCREF(__pyx_v_ctrl->_eofcb);
          __pyx_t_2 = __pyx_v_ctrl->_eofcb; 
          __pyx_t_5 = 1;
          #if CYTHON_UNPACK_METHODS
          if (likely(PyMethod_Check(__pyx_t_2))) {
            __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
            assert(__pyx_t_6);
            PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_2);
            __Pyx_INCREF(__pyx_t_6);
            __Pyx_INCREF(__pyx__function);
            __Pyx_DECREF_SET(__pyx_t_2, __pyx__function);
            __pyx_t_5 = 0;
          }
          #endif
          {
            PyObject *__pyx_callargs[4] = {__pyx_t_6, ((PyObject *)__pyx_v_ctrl), ((PyObject *)__pyx_v_inst), __pyx_v_ctrl->_param};
            __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_2, __pyx_callargs+__pyx_t_5, (4-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
            __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
            if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 8857, __pyx_L58_error)
            __Pyx_GOTREF(__pyx_t_9);
          }
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

          /* "scamper.pyx":8856
 *         ctrl._insts.remove(inst)
 *         if ctrl._eofcb is not None and inst._queued == 0:
 *             try:             # <<<<<<<<<<<<<<
 *                 ctrl._eofcb(ctrl, inst, ctrl._param)
 *             except Exception as e:
*/
        }
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_XDECREF(__pyx_t_12); __pyx_t_12 = 0;
        __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
        goto __pyx_L63_try_end;
        __pyx_L58_error:;
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "scamper.pyx":8858
 *             try:
 *                 ctrl._eofcb(ctrl, inst, ctrl._param)
 *             except Exception as e:             # <<<<<<<<<<<<<<
 *                 ctrl._exceptions.append(e)
 * 
*/
        __pyx_t_15 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
        if (__pyx_t_15) {
          __Pyx_AddTraceback("scamper._ctrl_cb", __pyx_clineno, __pyx_lineno, __pyx_filename);
          if (__Pyx_GetException(&__pyx_t_9, &__pyx_t_2, &__pyx_t_6) < 0) __PYX_ERR(0, 8858, __pyx_L60_except_error)
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_2);
          __Pyx_XGOTREF(__pyx_t_6);
          __Pyx_INCREF(__pyx_t_2);
          __pyx_v_e = __pyx_t_2;
          /*try:*/ {

            /* "scamper.pyx":8859
 *                 ctrl._eofcb(ctrl, inst, ctrl._param)
 *             except Exception as e:
 *                 ctrl._exceptions.append(e)             # <<<<<<<<<<<<<<
 * 
 *     return
*/
            __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_ctrl->_exceptions, __pyx_v_e); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 8859, __pyx_L69_error)
          }

          /* "scamper.pyx":8858
 *             try:
 *                 ctrl._eofcb(ctrl, inst, ctrl._param)
 *             except Exception as e:             # <<<<<<<<<<<<<<
 *                 ctrl._exceptions.append(e)
 * 
*/
          /*finally:*/ {
            /*normal exit:*/{
              __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              goto __pyx_L70;
            }
            __pyx_L69_error:;
            /*exception exit:*/{
              __Pyx_PyThreadState_declare
              __Pyx_PyThreadState_assign
              __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
              __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
              __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
               __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_18, &__pyx_t_17);
              if ( unlikely(__Pyx_GetException(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20) < 0)) __Pyx_ErrFetch(&__pyx_t_22, &__pyx_t_21, &__pyx_t_20);
              __Pyx_XGOTREF(__pyx_t_22);
              __Pyx_XGOTREF(__pyx_t_21);
              __Pyx_XGOTREF(__pyx_t_20);
              __Pyx_XGOTREF(__pyx_t_19);
              __Pyx_XGOTREF(__pyx_t_18);
              __Pyx_XGOTREF(__pyx_t_17);
              __pyx_t_15 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_24 = __pyx_filename;
              {
                __Pyx_DECREF(__pyx_v_e); __pyx_v_e = 0;
              }
              __Pyx_XGIVEREF(__pyx_t_19);
              __Pyx_XGIVEREF(__pyx_t_18);
              __Pyx_XGIVEREF(__pyx_t_17);
              __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_18, __pyx_t_17);
              __Pyx_XGIVEREF(__pyx_t_22);
              __Pyx_XGIVEREF(__pyx_t_21);
              __Pyx_XGIVEREF(__pyx_t_20);
              __Pyx_ErrRestore(__pyx_t_22, __pyx_t_21, __pyx_t_20);
              __pyx_t_22 = 0; __pyx_t_21 = 0; __pyx_t_20 = 0; __pyx_t_19 = 0; __pyx_t_18 = 0; __pyx_t_17 = 0;
              __pyx_lineno = __pyx_t_15; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_24;
              goto __pyx_L60_except_error;
            }
            __pyx_L70:;
          }
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
          __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
          goto __pyx_L59_exception_handled;
        }
        goto __pyx_L60_except_error;

        /* "scamper.pyx":8856
 *         ctrl._insts.remove(inst)
 *         if ctrl._eofcb is not None and inst._queued == 0:
 *             try:             # <<<<<<<<<<<<<<
 *                 ctrl._eofcb(ctrl, inst, ctrl._param)
 *             except Exception as e:
*/
        __pyx_L60_except_error:;
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        goto __pyx_L1_error;
        __pyx_L59_exception_handled:;
        __Pyx_XGIVEREF(__pyx_t_11);
        __Pyx_XGIVEREF(__pyx_t_12);
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_ExceptionReset(__pyx_t_11, __pyx_t_12, __pyx_t_13);
        __pyx_L63_try_end:;
      }

      /* "scamper.pyx":8855
 *         # and call the eofcb if one provided by the user.
 *         ctrl._insts.remove(inst)
 *         if ctrl._eofcb is not None and inst._queued == 0:             # <<<<<<<<<<<<<<
 *             try:
 *                 ctrl._eofcb(ctrl, inst, ctrl._param)
*/
    }

    /* "scamper.pyx":8841
 *         ctrl._exceptions.append(ScamperInstError(excstr, inst))
 * 
 *     elif cb_type == SCAMPER_CTRL_TYPE_EOF:             # <<<<<<<<<<<<<<
 *         # got an eof on an instance.  remove the references to the tasks
 *         # managed by inst from both the inst and ctrl objects.
*/
  }
  __pyx_L5:;

  /* "scamper.pyx":8861
 *                 ctrl._exceptions.append(e)
 * 
 *     return             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperCtrl:
*/
  goto __pyx_L0;

  /* "scamper.pyx":8731
 *         self._data = data
 * 
 * cdef void _ctrl_cb(clibscamperctrl.scamper_inst_t *c_inst,             # <<<<<<<<<<<<<<
 *                    uint8_t cb_type, clibscamperctrl.scamper_task_t *c_task,
 *                    const void *data, size_t datalen) noexcept:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_WriteUnraisable("scamper._ctrl_cb", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_inst);
  __Pyx_XDECREF((PyObject *)__pyx_v_ctrl);
  __Pyx_XDECREF(__pyx_v_obj);
  __Pyx_XDECREF(__pyx_v_onion);
  __Pyx_XDECREF(__pyx_v_e);
  __Pyx_XDECREF(__pyx_v_excstr);
  __Pyx_XDECREF(__pyx_v_task);
  __Pyx_RefNannyFinishContext();
}

/* "scamper.pyx":8907
 *     cdef object _muxs # = []
 * 
 *     def __init__(self, meta=False, morecb=None, eofcb=None, param=None,             # <<<<<<<<<<<<<<
 *                  unix=None, remote=None, remote_dir=None, mux=None,
 *                  outfile=None):
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_meta = 0;
  PyObject *__pyx_v_morecb = 0;
  PyObject *__pyx_v_eofcb = 0;
  PyObject *__pyx_v_param = 0;
  PyObject *__pyx_v_unix = 0;
  PyObject *__pyx_v_remote = 0;
  PyObject *__pyx_v_remote_dir = 0;
  PyObject *__pyx_v_mux = 0;
  PyObject *__pyx_v_outfile = 0;
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_meta,&__pyx_mstate_global->__pyx_n_u_morecb,&__pyx_mstate_global->__pyx_n_u_eofcb,&__pyx_mstate_global->__pyx_n_u_param,&__pyx_mstate_global->__pyx_n_u_unix,&__pyx_mstate_global->__pyx_n_u_remote,&__pyx_mstate_global->__pyx_n_u_remote_dir,&__pyx_mstate_global->__pyx_n_u_mux,&__pyx_mstate_global->__pyx_n_u_outfile,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8907, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  9:
        values[8] = __Pyx_ArgRef_VARARGS(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__init__", 0) < 0) __PYX_ERR(0, 8907, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":8908
 * 
 *     def __init__(self, meta=False, morecb=None, eofcb=None, param=None,
 *                  unix=None, remote=None, remote_dir=None, mux=None,             # <<<<<<<<<<<<<<
 *                  outfile=None):
 *         if outfile is not None:
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":8909
 *     def __init__(self, meta=False, morecb=None, eofcb=None, param=None,
 *                  unix=None, remote=None, remote_dir=None, mux=None,
 *                  outfile=None):             # <<<<<<<<<<<<<<
 *         if outfile is not None:
 *             if not isinstance(outfile, ScamperFile):
*/
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  9:
        values[8] = __Pyx_ArgRef_VARARGS(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_VARARGS(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_VARARGS(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_VARARGS(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_VARARGS(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_VARARGS(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_VARARGS(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_VARARGS(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_VARARGS(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8907, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":8907
 *     cdef object _muxs # = []
 * 
 *     def __init__(self, meta=False, morecb=None, eofcb=None, param=None,             # <<<<<<<<<<<<<<
 *                  unix=None, remote=None, remote_dir=None, mux=None,
 *                  outfile=None):
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":8908
 * 
 *     def __init__(self, meta=False, morecb=None, eofcb=None, param=None,
 *                  unix=None, remote=None, remote_dir=None, mux=None,             # <<<<<<<<<<<<<<
 *                  outfile=None):
 *         if outfile is not None:
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":8909
 *     def __init__(self, meta=False, morecb=None, eofcb=None, param=None,
 *                  unix=None, remote=None, remote_dir=None, mux=None,
 *                  outfile=None):             # <<<<<<<<<<<<<<
 *         if outfile is not None:
 *             if not isinstance(outfile, ScamperFile):
*/
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_meta = values[0];
    __pyx_v_morecb = values[1];
    __pyx_v_eofcb = values[2];
    __pyx_v_param = values[3];
    __pyx_v_unix = values[4];
    __pyx_v_remote = values[5];
    __pyx_v_remote_dir = values[6];
    __pyx_v_mux = values[7];
    __pyx_v_outfile = values[8];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 9, __pyx_nargs); __PYX_ERR(0, 8907, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl___init__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_meta, __pyx_v_morecb, __pyx_v_eofcb, __pyx_v_param, __pyx_v_unix, __pyx_v_remote, __pyx_v_remote_dir, __pyx_v_mux, __pyx_v_outfile);

  /* "scamper.pyx":8907
 *     cdef object _muxs # = []
 * 
 *     def __init__(self, meta=False, morecb=None, eofcb=None, param=None,             # <<<<<<<<<<<<<<
 *                  unix=None, remote=None, remote_dir=None, mux=None,
 *                  outfile=None):
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl___init__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_meta, PyObject *__pyx_v_morecb, PyObject *__pyx_v_eofcb, PyObject *__pyx_v_param, PyObject *__pyx_v_unix, PyObject *__pyx_v_remote, PyObject *__pyx_v_remote_dir, PyObject *__pyx_v_mux, PyObject *__pyx_v_outfile) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":8910
 *                  unix=None, remote=None, remote_dir=None, mux=None,
 *                  outfile=None):
 *         if outfile is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(outfile, ScamperFile):
 *                 raise ValueError("outfile not ScamperFile")
*/
  __pyx_t_1 = (__pyx_v_outfile != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8911
 *                  outfile=None):
 *         if outfile is not None:
 *             if not isinstance(outfile, ScamperFile):             # <<<<<<<<<<<<<<
 *                 raise ValueError("outfile not ScamperFile")
 *             if not outfile.is_write():
*/
    __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_outfile, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperFile); 
    __pyx_t_2 = (!__pyx_t_1);
    if (unlikely(__pyx_t_2)) {

      /* "scamper.pyx":8912
 *         if outfile is not None:
 *             if not isinstance(outfile, ScamperFile):
 *                 raise ValueError("outfile not ScamperFile")             # <<<<<<<<<<<<<<
 *             if not outfile.is_write():
 *                 raise RuntimeError("outfile not opened in write mode")
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_5 = __pyx_builtin_ValueError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_outfile_not_ScamperFile};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8912, __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_ERR(0, 8912, __pyx_L1_error)

      /* "scamper.pyx":8911
 *                  outfile=None):
 *         if outfile is not None:
 *             if not isinstance(outfile, ScamperFile):             # <<<<<<<<<<<<<<
 *                 raise ValueError("outfile not ScamperFile")
 *             if not outfile.is_write():
*/
    }

    /* "scamper.pyx":8913
 *             if not isinstance(outfile, ScamperFile):
 *                 raise ValueError("outfile not ScamperFile")
 *             if not outfile.is_write():             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("outfile not opened in write mode")
 * 
*/
    __pyx_t_5 = __pyx_v_outfile;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_is_write, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8913, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 8913, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = (!__pyx_t_2);
    if (unlikely(__pyx_t_1)) {

      /* "scamper.pyx":8914
 *                 raise ValueError("outfile not ScamperFile")
 *             if not outfile.is_write():
 *                 raise RuntimeError("outfile not opened in write mode")             # <<<<<<<<<<<<<<
 * 
 *         self._c = clibscamperctrl.scamper_ctrl_alloc(_ctrl_cb)
*/
      __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_4 = __pyx_builtin_RuntimeError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_outfile_not_opened_in_write_mode};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8914, __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_ERR(0, 8914, __pyx_L1_error)

      /* "scamper.pyx":8913
 *             if not isinstance(outfile, ScamperFile):
 *                 raise ValueError("outfile not ScamperFile")
 *             if not outfile.is_write():             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("outfile not opened in write mode")
 * 
*/
    }

    /* "scamper.pyx":8910
 *                  unix=None, remote=None, remote_dir=None, mux=None,
 *                  outfile=None):
 *         if outfile is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(outfile, ScamperFile):
 *                 raise ValueError("outfile not ScamperFile")
*/
  }

  /* "scamper.pyx":8916
 *                 raise RuntimeError("outfile not opened in write mode")
 * 
 *         self._c = clibscamperctrl.scamper_ctrl_alloc(_ctrl_cb)             # <<<<<<<<<<<<<<
 *         clibscamperctrl.scamper_ctrl_param_set(self._c, <PyObject *>self)
 *         self._meta = meta
*/
  __pyx_v_self->_c = scamper_ctrl_alloc(__pyx_f_7scamper__ctrl_cb);

  /* "scamper.pyx":8917
 * 
 *         self._c = clibscamperctrl.scamper_ctrl_alloc(_ctrl_cb)
 *         clibscamperctrl.scamper_ctrl_param_set(self._c, <PyObject *>self)             # <<<<<<<<<<<<<<
 *         self._meta = meta
 *         self._morecb = morecb
*/
  scamper_ctrl_param_set(__pyx_v_self->_c, ((PyObject *)__pyx_v_self));

  /* "scamper.pyx":8918
 *         self._c = clibscamperctrl.scamper_ctrl_alloc(_ctrl_cb)
 *         clibscamperctrl.scamper_ctrl_param_set(self._c, <PyObject *>self)
 *         self._meta = meta             # <<<<<<<<<<<<<<
 *         self._morecb = morecb
 *         self._eofcb = eofcb
*/
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_meta); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 8918, __pyx_L1_error)
  __pyx_v_self->_meta = __pyx_t_1;

  /* "scamper.pyx":8919
 *         clibscamperctrl.scamper_ctrl_param_set(self._c, <PyObject *>self)
 *         self._meta = meta
 *         self._morecb = morecb             # <<<<<<<<<<<<<<
 *         self._eofcb = eofcb
 *         self._outfile = outfile
*/
  __Pyx_INCREF(__pyx_v_morecb);
  __Pyx_GIVEREF(__pyx_v_morecb);
  __Pyx_GOTREF(__pyx_v_self->_morecb);
  __Pyx_DECREF(__pyx_v_self->_morecb);
  __pyx_v_self->_morecb = __pyx_v_morecb;

  /* "scamper.pyx":8920
 *         self._meta = meta
 *         self._morecb = morecb
 *         self._eofcb = eofcb             # <<<<<<<<<<<<<<
 *         self._outfile = outfile
 *         self._param = param
*/
  __Pyx_INCREF(__pyx_v_eofcb);
  __Pyx_GIVEREF(__pyx_v_eofcb);
  __Pyx_GOTREF(__pyx_v_self->_eofcb);
  __Pyx_DECREF(__pyx_v_self->_eofcb);
  __pyx_v_self->_eofcb = __pyx_v_eofcb;

  /* "scamper.pyx":8921
 *         self._morecb = morecb
 *         self._eofcb = eofcb
 *         self._outfile = outfile             # <<<<<<<<<<<<<<
 *         self._param = param
 *         self._objs = []
*/
  __Pyx_INCREF(__pyx_v_outfile);
  __Pyx_GIVEREF(__pyx_v_outfile);
  __Pyx_GOTREF(__pyx_v_self->_outfile);
  __Pyx_DECREF(__pyx_v_self->_outfile);
  __pyx_v_self->_outfile = __pyx_v_outfile;

  /* "scamper.pyx":8922
 *         self._eofcb = eofcb
 *         self._outfile = outfile
 *         self._param = param             # <<<<<<<<<<<<<<
 *         self._objs = []
 *         self._exceptions = []
*/
  __Pyx_INCREF(__pyx_v_param);
  __Pyx_GIVEREF(__pyx_v_param);
  __Pyx_GOTREF(__pyx_v_self->_param);
  __Pyx_DECREF(__pyx_v_self->_param);
  __pyx_v_self->_param = __pyx_v_param;

  /* "scamper.pyx":8923
 *         self._outfile = outfile
 *         self._param = param
 *         self._objs = []             # <<<<<<<<<<<<<<
 *         self._exceptions = []
 *         self._insts = []
*/
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_objs);
  __Pyx_DECREF(__pyx_v_self->_objs);
  __pyx_v_self->_objs = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":8924
 *         self._param = param
 *         self._objs = []
 *         self._exceptions = []             # <<<<<<<<<<<<<<
 *         self._insts = []
 *         self._tasks = []
*/
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8924, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_exceptions);
  __Pyx_DECREF(__pyx_v_self->_exceptions);
  __pyx_v_self->_exceptions = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":8925
 *         self._objs = []
 *         self._exceptions = []
 *         self._insts = []             # <<<<<<<<<<<<<<
 *         self._tasks = []
 *         self._muxs = []
*/
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8925, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_insts);
  __Pyx_DECREF(__pyx_v_self->_insts);
  __pyx_v_self->_insts = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":8926
 *         self._exceptions = []
 *         self._insts = []
 *         self._tasks = []             # <<<<<<<<<<<<<<
 *         self._muxs = []
 * 
*/
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8926, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_tasks);
  __Pyx_DECREF(__pyx_v_self->_tasks);
  __pyx_v_self->_tasks = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":8927
 *         self._insts = []
 *         self._tasks = []
 *         self._muxs = []             # <<<<<<<<<<<<<<
 * 
 *         if unix is not None:
*/
  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8927, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_GOTREF(__pyx_v_self->_muxs);
  __Pyx_DECREF(__pyx_v_self->_muxs);
  __pyx_v_self->_muxs = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":8929
 *         self._muxs = []
 * 
 *         if unix is not None:             # <<<<<<<<<<<<<<
 *             self.add_unix(unix)
 *         if remote is not None:
*/
  __pyx_t_1 = (__pyx_v_unix != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8930
 * 
 *         if unix is not None:
 *             self.add_unix(unix)             # <<<<<<<<<<<<<<
 *         if remote is not None:
 *             self.add_remote(remote)
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_unix};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_add_unix, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8930, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":8929
 *         self._muxs = []
 * 
 *         if unix is not None:             # <<<<<<<<<<<<<<
 *             self.add_unix(unix)
 *         if remote is not None:
*/
  }

  /* "scamper.pyx":8931
 *         if unix is not None:
 *             self.add_unix(unix)
 *         if remote is not None:             # <<<<<<<<<<<<<<
 *             self.add_remote(remote)
 *         if remote_dir is not None:
*/
  __pyx_t_1 = (__pyx_v_remote != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8932
 *             self.add_unix(unix)
 *         if remote is not None:
 *             self.add_remote(remote)             # <<<<<<<<<<<<<<
 *         if remote_dir is not None:
 *             self.add_remote_dir(remote_dir)
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_remote};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_add_remote, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8932, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":8931
 *         if unix is not None:
 *             self.add_unix(unix)
 *         if remote is not None:             # <<<<<<<<<<<<<<
 *             self.add_remote(remote)
 *         if remote_dir is not None:
*/
  }

  /* "scamper.pyx":8933
 *         if remote is not None:
 *             self.add_remote(remote)
 *         if remote_dir is not None:             # <<<<<<<<<<<<<<
 *             self.add_remote_dir(remote_dir)
 *         if mux is not None:
*/
  __pyx_t_1 = (__pyx_v_remote_dir != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8934
 *             self.add_remote(remote)
 *         if remote_dir is not None:
 *             self.add_remote_dir(remote_dir)             # <<<<<<<<<<<<<<
 *         if mux is not None:
 *             self.add_mux(mux)
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_remote_dir};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_add_remote_dir, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8934, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":8933
 *         if remote is not None:
 *             self.add_remote(remote)
 *         if remote_dir is not None:             # <<<<<<<<<<<<<<
 *             self.add_remote_dir(remote_dir)
 *         if mux is not None:
*/
  }

  /* "scamper.pyx":8935
 *         if remote_dir is not None:
 *             self.add_remote_dir(remote_dir)
 *         if mux is not None:             # <<<<<<<<<<<<<<
 *             self.add_mux(mux)
 * 
*/
  __pyx_t_1 = (__pyx_v_mux != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8936
 *             self.add_remote_dir(remote_dir)
 *         if mux is not None:
 *             self.add_mux(mux)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_v_mux};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_add_mux, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8936, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":8935
 *         if remote_dir is not None:
 *             self.add_remote_dir(remote_dir)
 *         if mux is not None:             # <<<<<<<<<<<<<<
 *             self.add_mux(mux)
 * 
*/
  }

  /* "scamper.pyx":8907
 *     cdef object _muxs # = []
 * 
 *     def __init__(self, meta=False, morecb=None, eofcb=None, param=None,             # <<<<<<<<<<<<<<
 *                  unix=None, remote=None, remote_dir=None, mux=None,
 *                  outfile=None):
*/

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperCtrl.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8938
 *             self.add_mux(mux)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         # cython does not seem to empty lists on dealloc, so explicitly empty
 *         if self._insts is not None:
*/

/* Python wrapper */
static void __pyx_pw_7scamper_11ScamperCtrl_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_11ScamperCtrl_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_11ScamperCtrl_2__dealloc__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_11ScamperCtrl_2__dealloc__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "scamper.pyx":8940
 *     def __dealloc__(self):
 *         # cython does not seem to empty lists on dealloc, so explicitly empty
 *         if self._insts is not None:             # <<<<<<<<<<<<<<
 *             while len(self._insts) > 0:
 *                 self._insts.pop(0)
*/
  __pyx_t_1 = (__pyx_v_self->_insts != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8941
 *         # cython does not seem to empty lists on dealloc, so explicitly empty
 *         if self._insts is not None:
 *             while len(self._insts) > 0:             # <<<<<<<<<<<<<<
 *                 self._insts.pop(0)
 *         if self._objs is not None:
*/
    while (1) {
      __pyx_t_2 = __pyx_v_self->_insts;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8941, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_1 = (__pyx_t_3 > 0);
      if (!__pyx_t_1) break;

      /* "scamper.pyx":8942
 *         if self._insts is not None:
 *             while len(self._insts) > 0:
 *                 self._insts.pop(0)             # <<<<<<<<<<<<<<
 *         if self._objs is not None:
 *             while len(self._objs) > 0:
*/
      __pyx_t_2 = __Pyx_PyObject_PopIndex(__pyx_v_self->_insts, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8942, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }

    /* "scamper.pyx":8940
 *     def __dealloc__(self):
 *         # cython does not seem to empty lists on dealloc, so explicitly empty
 *         if self._insts is not None:             # <<<<<<<<<<<<<<
 *             while len(self._insts) > 0:
 *                 self._insts.pop(0)
*/
  }

  /* "scamper.pyx":8943
 *             while len(self._insts) > 0:
 *                 self._insts.pop(0)
 *         if self._objs is not None:             # <<<<<<<<<<<<<<
 *             while len(self._objs) > 0:
 *                 self._objs.pop(0)
*/
  __pyx_t_1 = (__pyx_v_self->_objs != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8944
 *                 self._insts.pop(0)
 *         if self._objs is not None:
 *             while len(self._objs) > 0:             # <<<<<<<<<<<<<<
 *                 self._objs.pop(0)
 *         if self._exceptions is not None:
*/
    while (1) {
      __pyx_t_2 = __pyx_v_self->_objs;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8944, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_1 = (__pyx_t_3 > 0);
      if (!__pyx_t_1) break;

      /* "scamper.pyx":8945
 *         if self._objs is not None:
 *             while len(self._objs) > 0:
 *                 self._objs.pop(0)             # <<<<<<<<<<<<<<
 *         if self._exceptions is not None:
 *             while len(self._exceptions) > 0:
*/
      __pyx_t_2 = __Pyx_PyObject_PopIndex(__pyx_v_self->_objs, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8945, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }

    /* "scamper.pyx":8943
 *             while len(self._insts) > 0:
 *                 self._insts.pop(0)
 *         if self._objs is not None:             # <<<<<<<<<<<<<<
 *             while len(self._objs) > 0:
 *                 self._objs.pop(0)
*/
  }

  /* "scamper.pyx":8946
 *             while len(self._objs) > 0:
 *                 self._objs.pop(0)
 *         if self._exceptions is not None:             # <<<<<<<<<<<<<<
 *             while len(self._exceptions) > 0:
 *                 self._exceptions.pop(0)
*/
  __pyx_t_1 = (__pyx_v_self->_exceptions != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8947
 *                 self._objs.pop(0)
 *         if self._exceptions is not None:
 *             while len(self._exceptions) > 0:             # <<<<<<<<<<<<<<
 *                 self._exceptions.pop(0)
 *         if self._tasks is not None:
*/
    while (1) {
      __pyx_t_2 = __pyx_v_self->_exceptions;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8947, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_1 = (__pyx_t_3 > 0);
      if (!__pyx_t_1) break;

      /* "scamper.pyx":8948
 *         if self._exceptions is not None:
 *             while len(self._exceptions) > 0:
 *                 self._exceptions.pop(0)             # <<<<<<<<<<<<<<
 *         if self._tasks is not None:
 *             while len(self._tasks) > 0:
*/
      __pyx_t_2 = __Pyx_PyObject_PopIndex(__pyx_v_self->_exceptions, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8948, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }

    /* "scamper.pyx":8946
 *             while len(self._objs) > 0:
 *                 self._objs.pop(0)
 *         if self._exceptions is not None:             # <<<<<<<<<<<<<<
 *             while len(self._exceptions) > 0:
 *                 self._exceptions.pop(0)
*/
  }

  /* "scamper.pyx":8949
 *             while len(self._exceptions) > 0:
 *                 self._exceptions.pop(0)
 *         if self._tasks is not None:             # <<<<<<<<<<<<<<
 *             while len(self._tasks) > 0:
 *                 self._tasks.pop(0)
*/
  __pyx_t_1 = (__pyx_v_self->_tasks != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8950
 *                 self._exceptions.pop(0)
 *         if self._tasks is not None:
 *             while len(self._tasks) > 0:             # <<<<<<<<<<<<<<
 *                 self._tasks.pop(0)
 *         if self._muxs is not None:
*/
    while (1) {
      __pyx_t_2 = __pyx_v_self->_tasks;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8950, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_1 = (__pyx_t_3 > 0);
      if (!__pyx_t_1) break;

      /* "scamper.pyx":8951
 *         if self._tasks is not None:
 *             while len(self._tasks) > 0:
 *                 self._tasks.pop(0)             # <<<<<<<<<<<<<<
 *         if self._muxs is not None:
 *             while len(self._muxs) > 0:
*/
      __pyx_t_2 = __Pyx_PyObject_PopIndex(__pyx_v_self->_tasks, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8951, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }

    /* "scamper.pyx":8949
 *             while len(self._exceptions) > 0:
 *                 self._exceptions.pop(0)
 *         if self._tasks is not None:             # <<<<<<<<<<<<<<
 *             while len(self._tasks) > 0:
 *                 self._tasks.pop(0)
*/
  }

  /* "scamper.pyx":8952
 *             while len(self._tasks) > 0:
 *                 self._tasks.pop(0)
 *         if self._muxs is not None:             # <<<<<<<<<<<<<<
 *             while len(self._muxs) > 0:
 *                 self._muxs.pop(0)
*/
  __pyx_t_1 = (__pyx_v_self->_muxs != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":8953
 *                 self._tasks.pop(0)
 *         if self._muxs is not None:
 *             while len(self._muxs) > 0:             # <<<<<<<<<<<<<<
 *                 self._muxs.pop(0)
 * 
*/
    while (1) {
      __pyx_t_2 = __pyx_v_self->_muxs;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8953, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_1 = (__pyx_t_3 > 0);
      if (!__pyx_t_1) break;

      /* "scamper.pyx":8954
 *         if self._muxs is not None:
 *             while len(self._muxs) > 0:
 *                 self._muxs.pop(0)             # <<<<<<<<<<<<<<
 * 
 *         # free the control structure
*/
      __pyx_t_2 = __Pyx_PyObject_PopIndex(__pyx_v_self->_muxs, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8954, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }

    /* "scamper.pyx":8952
 *             while len(self._tasks) > 0:
 *                 self._tasks.pop(0)
 *         if self._muxs is not None:             # <<<<<<<<<<<<<<
 *             while len(self._muxs) > 0:
 *                 self._muxs.pop(0)
*/
  }

  /* "scamper.pyx":8957
 * 
 *         # free the control structure
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             clibscamperctrl.scamper_ctrl_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":8958
 *         # free the control structure
 *         if self._c != NULL:
 *             clibscamperctrl.scamper_ctrl_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __enter__(self):
*/
    scamper_ctrl_free(__pyx_v_self->_c);

    /* "scamper.pyx":8957
 * 
 *         # free the control structure
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             clibscamperctrl.scamper_ctrl_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":8938
 *             self.add_mux(mux)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         # cython does not seem to empty lists on dealloc, so explicitly empty
 *         if self._insts is not None:
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("scamper.ScamperCtrl.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "scamper.pyx":8960
 *             clibscamperctrl.scamper_ctrl_free(self._c)
 * 
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_5__enter__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_5__enter__ = {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_5__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_5__enter__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__enter__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__enter__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__enter__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_4__enter__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_4__enter__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__enter__", 0);

  /* "scamper.pyx":8961
 * 
 *     def __enter__(self):
 *         return self             # <<<<<<<<<<<<<<
 * 
 *     def __exit__(self, exc_type, exc_val, exc_tb):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_self);
  __pyx_r = ((PyObject *)__pyx_v_self);
  goto __pyx_L0;

  /* "scamper.pyx":8960
 *             clibscamperctrl.scamper_ctrl_free(self._c)
 * 
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8963
 *         return self
 * 
 *     def __exit__(self, exc_type, exc_val, exc_tb):             # <<<<<<<<<<<<<<
 *         pass
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_7__exit__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_7__exit__ = {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_7__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_7__exit__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v_exc_type = 0;
  CYTHON_UNUSED PyObject *__pyx_v_exc_val = 0;
  CYTHON_UNUSED PyObject *__pyx_v_exc_tb = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__exit__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_exc_type,&__pyx_mstate_global->__pyx_n_u_exc_val,&__pyx_mstate_global->__pyx_n_u_exc_tb,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8963, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8963, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8963, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8963, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__exit__", 0) < 0) __PYX_ERR(0, 8963, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, i); __PYX_ERR(0, 8963, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8963, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8963, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 8963, __pyx_L3_error)
    }
    __pyx_v_exc_type = values[0];
    __pyx_v_exc_val = values[1];
    __pyx_v_exc_tb = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__exit__", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 8963, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.__exit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_6__exit__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_exc_type, __pyx_v_exc_val, __pyx_v_exc_tb);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_6__exit__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v_exc_type, CYTHON_UNUSED PyObject *__pyx_v_exc_val, CYTHON_UNUSED PyObject *__pyx_v_exc_tb) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__exit__", 0);

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8966
 *         pass
 * 
 *     def add_unix(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_unix(path)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_9add_unix(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_8add_unix, "\n        add_unix(path)\n        add a :class:`ScamperInst` connected to a specified unix domain\n        socket on the local system.\n        This method will raise a :py:exc:`RuntimeError` if it could not\n        connect to the local scamper instance at the local unix domain socket.\n\n        :param string path: the unix domain socket\n        :returns: the scamper instance\n        :rtype: ScamperInst\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_9add_unix = {"add_unix", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_9add_unix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_8add_unix};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_9add_unix(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_unix (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_path,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8966, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8966, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "add_unix", 0) < 0) __PYX_ERR(0, 8966, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("add_unix", 1, 1, 1, i); __PYX_ERR(0, 8966, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8966, __pyx_L3_error)
    }
    __pyx_v_path = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_unix", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 8966, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_unix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_8add_unix(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_path);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_8add_unix(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_path) {
  scamper_inst_t *__pyx_v_c;
  char const *__pyx_v_err;
  struct __pyx_obj_7scamper_ScamperInst *__pyx_v_inst = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  char const *__pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_unix", 0);

  /* "scamper.pyx":8979
 *         """
 *         c = clibscamperctrl.scamper_inst_unix(self._c, NULL,
 *                                               path.encode('UTF-8'))             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
*/
  __pyx_t_2 = __pyx_v_path;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_UTF_8};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8979, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 8979, __pyx_L1_error)

  /* "scamper.pyx":8978
 *         :rtype: ScamperInst
 *         """
 *         c = clibscamperctrl.scamper_inst_unix(self._c, NULL,             # <<<<<<<<<<<<<<
 *                                               path.encode('UTF-8'))
 *         if c == NULL:
*/
  __pyx_v_c = scamper_inst_unix(__pyx_v_self->_c, NULL, __pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":8980
 *         c = clibscamperctrl.scamper_inst_unix(self._c, NULL,
 *                                               path.encode('UTF-8'))
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
*/
  __pyx_t_5 = (__pyx_v_c == NULL);
  if (__pyx_t_5) {

    /* "scamper.pyx":8981
 *                                               path.encode('UTF-8'))
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)             # <<<<<<<<<<<<<<
 *             if err != NULL:
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
*/
    __pyx_v_err = scamper_ctrl_strerror(__pyx_v_self->_c);

    /* "scamper.pyx":8982
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
*/
    __pyx_t_5 = (__pyx_v_err != NULL);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":8983
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *             else:
 *                 raise RuntimeError("could not connect to " + path)
*/
      __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_6 = __pyx_builtin_RuntimeError; 
      __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_err); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 8983, __pyx_L1_error)
      __pyx_t_8 = __Pyx_decode_c_string(__pyx_v_err, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 8983, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_8};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8983, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 8983, __pyx_L1_error)

      /* "scamper.pyx":8982
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
*/
    }

    /* "scamper.pyx":8985
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
 *                 raise RuntimeError("could not connect to " + path)             # <<<<<<<<<<<<<<
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)
*/
    /*else*/ {
      __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_8 = __pyx_builtin_RuntimeError; 
      __pyx_t_2 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_could_not_connect_to, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8985, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8985, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 8985, __pyx_L1_error)
    }

    /* "scamper.pyx":8980
 *         c = clibscamperctrl.scamper_inst_unix(self._c, NULL,
 *                                               path.encode('UTF-8'))
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
*/
  }

  /* "scamper.pyx":8986
 *             else:
 *                 raise RuntimeError("could not connect to " + path)
 *         inst = ScamperInst.from_ptr(c)             # <<<<<<<<<<<<<<
 *         self._insts.append(inst)
 *         return inst
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperInst_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 8986, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":8987
 *                 raise RuntimeError("could not connect to " + path)
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)             # <<<<<<<<<<<<<<
 *         return inst
 * 
*/
  __pyx_t_9 = __Pyx_PyObject_Append(__pyx_v_self->_insts, ((PyObject *)__pyx_v_inst)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 8987, __pyx_L1_error)

  /* "scamper.pyx":8988
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)
 *         return inst             # <<<<<<<<<<<<<<
 * 
 *     def add_inet(self, port, addr=None):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_inst);
  __pyx_r = ((PyObject *)__pyx_v_inst);
  goto __pyx_L0;

  /* "scamper.pyx":8966
 *         pass
 * 
 *     def add_unix(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_unix(path)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_unix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8990
 *         return inst
 * 
 *     def add_inet(self, port, addr=None):             # <<<<<<<<<<<<<<
 *         """
 *         add_inet(port, addr=None)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_11add_inet(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_10add_inet, "\n        add_inet(port, addr=None)\n        add a :class:`ScamperInst` connected to a specified port on the local\n        system, if the addr parameter is not set.  This method will\n        raise a :py:exc:`RuntimeError` if it could not connect to the\n        scamper instance at the given port.\n\n        :param int port: the port to connect to\n        :param string addr: the address to connect to, if not loopback\n        :returns: the scamper instance\n        :rtype: ScamperInst\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_11add_inet = {"add_inet", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_11add_inet, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_10add_inet};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_11add_inet(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_port = 0;
  PyObject *__pyx_v_addr = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_inet (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_port,&__pyx_mstate_global->__pyx_n_u_addr,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 8990, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8990, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8990, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "add_inet", 0) < 0) __PYX_ERR(0, 8990, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("add_inet", 0, 1, 2, i); __PYX_ERR(0, 8990, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 8990, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 8990, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_port = values[0];
    __pyx_v_addr = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_inet", 0, 1, 2, __pyx_nargs); __PYX_ERR(0, 8990, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_inet", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_10add_inet(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_port, __pyx_v_addr);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_10add_inet(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_port, PyObject *__pyx_v_addr) {
  scamper_inst_t *__pyx_v_c;
  PyObject *__pyx_v_a = NULL;
  char const *__pyx_v_err;
  PyObject *__pyx_v_msg = NULL;
  struct __pyx_obj_7scamper_ScamperInst *__pyx_v_inst = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  uint16_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  char const *__pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_inet", 0);

  /* "scamper.pyx":9003
 *         :rtype: ScamperInst
 *         """
 *         if addr is None:             # <<<<<<<<<<<<<<
 *             c = clibscamperctrl.scamper_inst_inet(self._c, NULL, NULL, port)
 *         else:
*/
  __pyx_t_1 = (__pyx_v_addr == Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":9004
 *         """
 *         if addr is None:
 *             c = clibscamperctrl.scamper_inst_inet(self._c, NULL, NULL, port)             # <<<<<<<<<<<<<<
 *         else:
 *             a = addr.encode('UTF-8')
*/
    __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_v_port); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9004, __pyx_L1_error)
    __pyx_v_c = scamper_inst_inet(__pyx_v_self->_c, NULL, NULL, __pyx_t_2);

    /* "scamper.pyx":9003
 *         :rtype: ScamperInst
 *         """
 *         if addr is None:             # <<<<<<<<<<<<<<
 *             c = clibscamperctrl.scamper_inst_inet(self._c, NULL, NULL, port)
 *         else:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":9006
 *             c = clibscamperctrl.scamper_inst_inet(self._c, NULL, NULL, port)
 *         else:
 *             a = addr.encode('UTF-8')             # <<<<<<<<<<<<<<
 *             c = clibscamperctrl.scamper_inst_inet(self._c, NULL, a, port)
 *         if c == NULL:
*/
  /*else*/ {
    __pyx_t_4 = __pyx_v_addr;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_UTF_8};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9006, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_a = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":9007
 *         else:
 *             a = addr.encode('UTF-8')
 *             c = clibscamperctrl.scamper_inst_inet(self._c, NULL, a, port)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
*/
    __pyx_t_6 = __Pyx_PyObject_AsString(__pyx_v_a); if (unlikely((!__pyx_t_6) && PyErr_Occurred())) __PYX_ERR(0, 9007, __pyx_L1_error)
    __pyx_t_2 = __Pyx_PyLong_As_uint16_t(__pyx_v_port); if (unlikely((__pyx_t_2 == ((uint16_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9007, __pyx_L1_error)
    __pyx_v_c = scamper_inst_inet(__pyx_v_self->_c, NULL, __pyx_t_6, __pyx_t_2);
  }
  __pyx_L3:;

  /* "scamper.pyx":9008
 *             a = addr.encode('UTF-8')
 *             c = clibscamperctrl.scamper_inst_inet(self._c, NULL, a, port)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":9009
 *             c = clibscamperctrl.scamper_inst_inet(self._c, NULL, a, port)
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)             # <<<<<<<<<<<<<<
 *             if err != NULL:
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
*/
    __pyx_v_err = scamper_ctrl_strerror(__pyx_v_self->_c);

    /* "scamper.pyx":9010
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
*/
    __pyx_t_1 = (__pyx_v_err != NULL);
    if (unlikely(__pyx_t_1)) {

      /* "scamper.pyx":9011
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *             else:
 *                 msg = (a + ":" if a is not None else "") + str(port)
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_7 = __pyx_builtin_RuntimeError; 
      __pyx_t_8 = __Pyx_ssize_strlen(__pyx_v_err); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9011, __pyx_L1_error)
      __pyx_t_9 = __Pyx_decode_c_string(__pyx_v_err, 0, __pyx_t_8, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9011, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_9};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9011, __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_ERR(0, 9011, __pyx_L1_error)

      /* "scamper.pyx":9010
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
*/
    }

    /* "scamper.pyx":9013
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
 *                 msg = (a + ":" if a is not None else "") + str(port)             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("could not connect to " + msg)
 *         inst = ScamperInst.from_ptr(c)
*/
    /*else*/ {
      if (unlikely(!__pyx_v_a)) { __Pyx_RaiseUnboundLocalError("a"); __PYX_ERR(0, 9013, __pyx_L1_error) }
      __pyx_t_1 = (__pyx_v_a != Py_None);
      if (__pyx_t_1) {
        if (unlikely(!__pyx_v_a)) { __Pyx_RaiseUnboundLocalError("a"); __PYX_ERR(0, 9013, __pyx_L1_error) }
        __pyx_t_7 = PyNumber_Add(__pyx_v_a, __pyx_mstate_global->__pyx_kp_u__12); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9013, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_3 = __pyx_t_7;
        __pyx_t_7 = 0;
      } else {
        __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u__4);
        __pyx_t_3 = __pyx_mstate_global->__pyx_kp_u__4;
      }
      __pyx_t_7 = __Pyx_PyObject_Unicode(__pyx_v_port); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9013, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_9 = PyNumber_Add(__pyx_t_3, __pyx_t_7); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9013, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_v_msg = __pyx_t_9;
      __pyx_t_9 = 0;

      /* "scamper.pyx":9014
 *             else:
 *                 msg = (a + ":" if a is not None else "") + str(port)
 *                 raise RuntimeError("could not connect to " + msg)             # <<<<<<<<<<<<<<
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)
*/
      __pyx_t_7 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_3 = __pyx_builtin_RuntimeError; 
      __pyx_t_4 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_could_not_connect_to, __pyx_v_msg); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9014, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_5 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_4};
        __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9014, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
      }
      __Pyx_Raise(__pyx_t_9, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __PYX_ERR(0, 9014, __pyx_L1_error)
    }

    /* "scamper.pyx":9008
 *             a = addr.encode('UTF-8')
 *             c = clibscamperctrl.scamper_inst_inet(self._c, NULL, a, port)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
*/
  }

  /* "scamper.pyx":9015
 *                 msg = (a + ":" if a is not None else "") + str(port)
 *                 raise RuntimeError("could not connect to " + msg)
 *         inst = ScamperInst.from_ptr(c)             # <<<<<<<<<<<<<<
 *         self._insts.append(inst)
 *         return inst
*/
  __pyx_t_9 = ((PyObject *)__pyx_f_7scamper_11ScamperInst_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9015, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_v_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_9);
  __pyx_t_9 = 0;

  /* "scamper.pyx":9016
 *                 raise RuntimeError("could not connect to " + msg)
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)             # <<<<<<<<<<<<<<
 *         return inst
 * 
*/
  __pyx_t_10 = __Pyx_PyObject_Append(__pyx_v_self->_insts, ((PyObject *)__pyx_v_inst)); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 9016, __pyx_L1_error)

  /* "scamper.pyx":9017
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)
 *         return inst             # <<<<<<<<<<<<<<
 * 
 *     def add_remote(self, path):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_inst);
  __pyx_r = ((PyObject *)__pyx_v_inst);
  goto __pyx_L0;

  /* "scamper.pyx":8990
 *         return inst
 * 
 *     def add_inet(self, port, addr=None):             # <<<<<<<<<<<<<<
 *         """
 *         add_inet(port, addr=None)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_inet", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XDECREF(__pyx_v_msg);
  __Pyx_XDECREF((PyObject *)__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9019
 *         return inst
 * 
 *     def add_remote(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_remote(path)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_13add_remote(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_12add_remote, "\n        add_remote(path)\n        add a :class:`ScamperInst` connected to a specified remote system\n        available on the specified unix domain socket.  This method will\n        raise a :py:exc:`RuntimeError` if it could not connect to the\n        remote scamper instance at the local unix domain socket.\n\n        :param string path: the unix domain socket\n        :returns: the scamper instance\n        :rtype: ScamperInst\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_13add_remote = {"add_remote", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_13add_remote, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_12add_remote};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_13add_remote(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_remote (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_path,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9019, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9019, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "add_remote", 0) < 0) __PYX_ERR(0, 9019, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("add_remote", 1, 1, 1, i); __PYX_ERR(0, 9019, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9019, __pyx_L3_error)
    }
    __pyx_v_path = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_remote", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 9019, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_remote", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_12add_remote(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_path);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_12add_remote(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_path) {
  scamper_inst_t *__pyx_v_c;
  char const *__pyx_v_err;
  struct __pyx_obj_7scamper_ScamperInst *__pyx_v_inst = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  char const *__pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_remote", 0);

  /* "scamper.pyx":9031
 *         :rtype: ScamperInst
 *         """
 *         c = clibscamperctrl.scamper_inst_remote(self._c, path.encode('UTF-8'))             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
*/
  __pyx_t_2 = __pyx_v_path;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_UTF_8};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9031, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 9031, __pyx_L1_error)
  __pyx_v_c = scamper_inst_remote(__pyx_v_self->_c, __pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":9032
 *         """
 *         c = clibscamperctrl.scamper_inst_remote(self._c, path.encode('UTF-8'))
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
*/
  __pyx_t_5 = (__pyx_v_c == NULL);
  if (__pyx_t_5) {

    /* "scamper.pyx":9033
 *         c = clibscamperctrl.scamper_inst_remote(self._c, path.encode('UTF-8'))
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)             # <<<<<<<<<<<<<<
 *             if err != NULL:
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
*/
    __pyx_v_err = scamper_ctrl_strerror(__pyx_v_self->_c);

    /* "scamper.pyx":9034
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
*/
    __pyx_t_5 = (__pyx_v_err != NULL);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":9035
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *             else:
 *                 raise RuntimeError("could not connect to " + path)
*/
      __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_6 = __pyx_builtin_RuntimeError; 
      __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_err); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9035, __pyx_L1_error)
      __pyx_t_8 = __Pyx_decode_c_string(__pyx_v_err, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9035, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_8};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9035, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9035, __pyx_L1_error)

      /* "scamper.pyx":9034
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
*/
    }

    /* "scamper.pyx":9037
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
 *                 raise RuntimeError("could not connect to " + path)             # <<<<<<<<<<<<<<
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)
*/
    /*else*/ {
      __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_8 = __pyx_builtin_RuntimeError; 
      __pyx_t_2 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_could_not_connect_to, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9037, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9037, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9037, __pyx_L1_error)
    }

    /* "scamper.pyx":9032
 *         """
 *         c = clibscamperctrl.scamper_inst_remote(self._c, path.encode('UTF-8'))
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
*/
  }

  /* "scamper.pyx":9038
 *             else:
 *                 raise RuntimeError("could not connect to " + path)
 *         inst = ScamperInst.from_ptr(c)             # <<<<<<<<<<<<<<
 *         self._insts.append(inst)
 *         return inst
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_11ScamperInst_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9038, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9039
 *                 raise RuntimeError("could not connect to " + path)
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)             # <<<<<<<<<<<<<<
 *         return inst
 * 
*/
  __pyx_t_9 = __Pyx_PyObject_Append(__pyx_v_self->_insts, ((PyObject *)__pyx_v_inst)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 9039, __pyx_L1_error)

  /* "scamper.pyx":9040
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)
 *         return inst             # <<<<<<<<<<<<<<
 * 
 *     def add_remote_dir(self, path):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_inst);
  __pyx_r = ((PyObject *)__pyx_v_inst);
  goto __pyx_L0;

  /* "scamper.pyx":9019
 *         return inst
 * 
 *     def add_remote(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_remote(path)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_remote", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9042
 *         return inst
 * 
 *     def add_remote_dir(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_remote_dir(path)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_15add_remote_dir(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_14add_remote_dir, "\n        add_remote_dir(path)\n        add a :class:`ScamperInst` connected to each remote system available\n        on the unix domain sockets.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_15add_remote_dir = {"add_remote_dir", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_15add_remote_dir, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_14add_remote_dir};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_15add_remote_dir(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_remote_dir (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_path,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9042, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9042, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "add_remote_dir", 0) < 0) __PYX_ERR(0, 9042, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("add_remote_dir", 1, 1, 1, i); __PYX_ERR(0, 9042, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9042, __pyx_L3_error)
    }
    __pyx_v_path = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_remote_dir", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 9042, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_remote_dir", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_14add_remote_dir(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_path);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_14add_remote_dir(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_path) {
  PyObject *__pyx_v_filename = NULL;
  PyObject *__pyx_v_pf = NULL;
  PyObject *__pyx_v_o = NULL;
  scamper_inst_t *__pyx_v_c;
  struct __pyx_obj_7scamper_ScamperInst *__pyx_v_inst = 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;
  size_t __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_t_10;
  char const *__pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_remote_dir", 0);

  /* "scamper.pyx":9048
 *         on the unix domain sockets.
 *         """
 *         for filename in os.listdir(path):             # <<<<<<<<<<<<<<
 *             pf = path + "/" + filename
 *             o = os.stat(pf)
*/
  __pyx_t_2 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_listdir); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9048, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_5 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_4))) {
    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_4);
    assert(__pyx_t_2);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
    __pyx_t_5 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_v_path};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9048, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
    __pyx_t_4 = __pyx_t_1; __Pyx_INCREF(__pyx_t_4);
    __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9048, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_7 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9048, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  for (;;) {
    if (likely(!__pyx_t_7)) {
      if (likely(PyList_CheckExact(__pyx_t_4))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9048, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRef(__pyx_t_4, __pyx_t_6);
        ++__pyx_t_6;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_4);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9048, __pyx_L1_error)
          #endif
          if (__pyx_t_6 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_6));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_4, __pyx_t_6);
        #endif
        ++__pyx_t_6;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9048, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_7(__pyx_t_4);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 9048, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_filename, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":9049
 *         """
 *         for filename in os.listdir(path):
 *             pf = path + "/" + filename             # <<<<<<<<<<<<<<
 *             o = os.stat(pf)
 *             if not stat.S_ISSOCK(o.st_mode):
*/
    __pyx_t_1 = PyNumber_Add(__pyx_v_path, __pyx_mstate_global->__pyx_kp_u__19); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9049, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_v_filename); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9049, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_pf, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "scamper.pyx":9050
 *         for filename in os.listdir(path):
 *             pf = path + "/" + filename
 *             o = os.stat(pf)             # <<<<<<<<<<<<<<
 *             if not stat.S_ISSOCK(o.st_mode):
 *                 continue
*/
    __pyx_t_1 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_os); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_stat); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_8))) {
      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
      assert(__pyx_t_1);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_v_pf};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9050, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XDECREF_SET(__pyx_v_o, __pyx_t_2);
    __pyx_t_2 = 0;

    /* "scamper.pyx":9051
 *             pf = path + "/" + filename
 *             o = os.stat(pf)
 *             if not stat.S_ISSOCK(o.st_mode):             # <<<<<<<<<<<<<<
 *                 continue
 *             c = clibscamperctrl.scamper_inst_remote(self._c, pf.encode('UTF-8'))
*/
    __pyx_t_8 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_stat); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_S_ISSOCK); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_o, __pyx_mstate_global->__pyx_n_u_st_mode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9051, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_5 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_t_1};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9051, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_9 < 0))) __PYX_ERR(0, 9051, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_10 = (!__pyx_t_9);
    if (__pyx_t_10) {

      /* "scamper.pyx":9052
 *             o = os.stat(pf)
 *             if not stat.S_ISSOCK(o.st_mode):
 *                 continue             # <<<<<<<<<<<<<<
 *             c = clibscamperctrl.scamper_inst_remote(self._c, pf.encode('UTF-8'))
 *             if c == NULL:
*/
      goto __pyx_L3_continue;

      /* "scamper.pyx":9051
 *             pf = path + "/" + filename
 *             o = os.stat(pf)
 *             if not stat.S_ISSOCK(o.st_mode):             # <<<<<<<<<<<<<<
 *                 continue
 *             c = clibscamperctrl.scamper_inst_remote(self._c, pf.encode('UTF-8'))
*/
    }

    /* "scamper.pyx":9053
 *             if not stat.S_ISSOCK(o.st_mode):
 *                 continue
 *             c = clibscamperctrl.scamper_inst_remote(self._c, pf.encode('UTF-8'))             # <<<<<<<<<<<<<<
 *             if c == NULL:
 *                 continue
*/
    __pyx_t_3 = __pyx_v_pf;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_UTF_8};
      __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9053, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
    }
    __pyx_t_11 = __Pyx_PyObject_AsString(__pyx_t_2); if (unlikely((!__pyx_t_11) && PyErr_Occurred())) __PYX_ERR(0, 9053, __pyx_L1_error)
    __pyx_v_c = scamper_inst_remote(__pyx_v_self->_c, __pyx_t_11);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":9054
 *                 continue
 *             c = clibscamperctrl.scamper_inst_remote(self._c, pf.encode('UTF-8'))
 *             if c == NULL:             # <<<<<<<<<<<<<<
 *                 continue
 *             inst = ScamperInst.from_ptr(c)
*/
    __pyx_t_10 = (__pyx_v_c == NULL);
    if (__pyx_t_10) {

      /* "scamper.pyx":9055
 *             c = clibscamperctrl.scamper_inst_remote(self._c, pf.encode('UTF-8'))
 *             if c == NULL:
 *                 continue             # <<<<<<<<<<<<<<
 *             inst = ScamperInst.from_ptr(c)
 *             self._insts.append(inst)
*/
      goto __pyx_L3_continue;

      /* "scamper.pyx":9054
 *                 continue
 *             c = clibscamperctrl.scamper_inst_remote(self._c, pf.encode('UTF-8'))
 *             if c == NULL:             # <<<<<<<<<<<<<<
 *                 continue
 *             inst = ScamperInst.from_ptr(c)
*/
    }

    /* "scamper.pyx":9056
 *             if c == NULL:
 *                 continue
 *             inst = ScamperInst.from_ptr(c)             # <<<<<<<<<<<<<<
 *             self._insts.append(inst)
 * 
*/
    __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_11ScamperInst_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9056, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_XDECREF_SET(__pyx_v_inst, ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_2));
    __pyx_t_2 = 0;

    /* "scamper.pyx":9057
 *                 continue
 *             inst = ScamperInst.from_ptr(c)
 *             self._insts.append(inst)             # <<<<<<<<<<<<<<
 * 
 *     def add_mux(self, path):
*/
    __pyx_t_12 = __Pyx_PyObject_Append(__pyx_v_self->_insts, ((PyObject *)__pyx_v_inst)); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 9057, __pyx_L1_error)

    /* "scamper.pyx":9048
 *         on the unix domain sockets.
 *         """
 *         for filename in os.listdir(path):             # <<<<<<<<<<<<<<
 *             pf = path + "/" + filename
 *             o = os.stat(pf)
*/
    __pyx_L3_continue:;
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "scamper.pyx":9042
 *         return inst
 * 
 *     def add_remote_dir(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_remote_dir(path)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  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);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_remote_dir", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_filename);
  __Pyx_XDECREF(__pyx_v_pf);
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF((PyObject *)__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9059
 *             self._insts.append(inst)
 * 
 *     def add_mux(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_mux(path)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_17add_mux(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_16add_mux, "\n        add_mux(path)\n        add a multiplexor interface that provides access to many\n        scamper VPs via a single socket.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_17add_mux = {"add_mux", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_17add_mux, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_16add_mux};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_17add_mux(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_path = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_mux (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_path,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9059, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9059, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "add_mux", 0) < 0) __PYX_ERR(0, 9059, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("add_mux", 1, 1, 1, i); __PYX_ERR(0, 9059, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9059, __pyx_L3_error)
    }
    __pyx_v_path = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_mux", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 9059, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_mux", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_16add_mux(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_path);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_16add_mux(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_path) {
  scamper_mux_t *__pyx_v_c;
  char const *__pyx_v_err;
  struct __pyx_obj_7scamper_ScamperMux *__pyx_v_mux = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  char const *__pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_mux", 0);

  /* "scamper.pyx":9065
 *         scamper VPs via a single socket.
 *         """
 *         c = clibscamperctrl.scamper_mux_add(self._c, path.encode('UTF-8'))             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
*/
  __pyx_t_2 = __pyx_v_path;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_UTF_8};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9065, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_t_4 = __Pyx_PyObject_AsString(__pyx_t_1); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(0, 9065, __pyx_L1_error)
  __pyx_v_c = scamper_mux_add(__pyx_v_self->_c, __pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":9066
 *         """
 *         c = clibscamperctrl.scamper_mux_add(self._c, path.encode('UTF-8'))
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
*/
  __pyx_t_5 = (__pyx_v_c == NULL);
  if (__pyx_t_5) {

    /* "scamper.pyx":9067
 *         c = clibscamperctrl.scamper_mux_add(self._c, path.encode('UTF-8'))
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)             # <<<<<<<<<<<<<<
 *             if err != NULL:
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
*/
    __pyx_v_err = scamper_ctrl_strerror(__pyx_v_self->_c);

    /* "scamper.pyx":9068
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
*/
    __pyx_t_5 = (__pyx_v_err != NULL);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":9069
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *             else:
 *                 raise RuntimeError("could not connect to " + path)
*/
      __pyx_t_2 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_6 = __pyx_builtin_RuntimeError; 
      __pyx_t_7 = __Pyx_ssize_strlen(__pyx_v_err); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9069, __pyx_L1_error)
      __pyx_t_8 = __Pyx_decode_c_string(__pyx_v_err, 0, __pyx_t_7, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9069, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_3 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_t_8};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9069, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9069, __pyx_L1_error)

      /* "scamper.pyx":9068
 *         if c == NULL:
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
*/
    }

    /* "scamper.pyx":9071
 *                 raise RuntimeError(err.decode('UTF-8', 'strict'))
 *             else:
 *                 raise RuntimeError("could not connect to " + path)             # <<<<<<<<<<<<<<
 *         mux = ScamperMux.from_ptr(c)
 *         self._muxs.append(mux)
*/
    /*else*/ {
      __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_8 = __pyx_builtin_RuntimeError; 
      __pyx_t_2 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_could_not_connect_to, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9071, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_2};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9071, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9071, __pyx_L1_error)
    }

    /* "scamper.pyx":9066
 *         """
 *         c = clibscamperctrl.scamper_mux_add(self._c, path.encode('UTF-8'))
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             err = clibscamperctrl.scamper_ctrl_strerror(self._c)
 *             if err != NULL:
*/
  }

  /* "scamper.pyx":9072
 *             else:
 *                 raise RuntimeError("could not connect to " + path)
 *         mux = ScamperMux.from_ptr(c)             # <<<<<<<<<<<<<<
 *         self._muxs.append(mux)
 * 
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_10ScamperMux_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9072, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_mux = ((struct __pyx_obj_7scamper_ScamperMux *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9073
 *                 raise RuntimeError("could not connect to " + path)
 *         mux = ScamperMux.from_ptr(c)
 *         self._muxs.append(mux)             # <<<<<<<<<<<<<<
 * 
 *     def _add_vp(self, vp):
*/
  __pyx_t_9 = __Pyx_PyObject_Append(__pyx_v_self->_muxs, ((PyObject *)__pyx_v_mux)); if (unlikely(__pyx_t_9 == ((int)-1))) __PYX_ERR(0, 9073, __pyx_L1_error)

  /* "scamper.pyx":9059
 *             self._insts.append(inst)
 * 
 *     def add_mux(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_mux(path)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_mux", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_mux);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9075
 *         self._muxs.append(mux)
 * 
 *     def _add_vp(self, vp):             # <<<<<<<<<<<<<<
 *         c = clibscamperctrl.scamper_inst_vp(self._c, (<ScamperVp>vp)._c)
 *         if c == NULL:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_19_add_vp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_19_add_vp = {"_add_vp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_19_add_vp, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_19_add_vp(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_vp = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_add_vp (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_vp,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9075, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9075, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_add_vp", 0) < 0) __PYX_ERR(0, 9075, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_add_vp", 1, 1, 1, i); __PYX_ERR(0, 9075, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9075, __pyx_L3_error)
    }
    __pyx_v_vp = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_add_vp", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 9075, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl._add_vp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_18_add_vp(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_vp);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_18_add_vp(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_vp) {
  scamper_inst_t *__pyx_v_c;
  struct __pyx_obj_7scamper_ScamperInst *__pyx_v_inst = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_add_vp", 0);

  /* "scamper.pyx":9076
 * 
 *     def _add_vp(self, vp):
 *         c = clibscamperctrl.scamper_inst_vp(self._c, (<ScamperVp>vp)._c)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             return
*/
  __pyx_v_c = scamper_inst_vp(__pyx_v_self->_c, ((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_vp)->_c);

  /* "scamper.pyx":9077
 *     def _add_vp(self, vp):
 *         c = clibscamperctrl.scamper_inst_vp(self._c, (<ScamperVp>vp)._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return
 *         inst = ScamperInst.from_ptr(c)
*/
  __pyx_t_1 = (__pyx_v_c == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":9078
 *         c = clibscamperctrl.scamper_inst_vp(self._c, (<ScamperVp>vp)._c)
 *         if c == NULL:
 *             return             # <<<<<<<<<<<<<<
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":9077
 *     def _add_vp(self, vp):
 *         c = clibscamperctrl.scamper_inst_vp(self._c, (<ScamperVp>vp)._c)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             return
 *         inst = ScamperInst.from_ptr(c)
*/
  }

  /* "scamper.pyx":9079
 *         if c == NULL:
 *             return
 *         inst = ScamperInst.from_ptr(c)             # <<<<<<<<<<<<<<
 *         self._insts.append(inst)
 *         return inst
*/
  __pyx_t_2 = ((PyObject *)__pyx_f_7scamper_11ScamperInst_from_ptr(__pyx_v_c)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9079, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":9080
 *             return
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)             # <<<<<<<<<<<<<<
 *         return inst
 * 
*/
  __pyx_t_3 = __Pyx_PyObject_Append(__pyx_v_self->_insts, ((PyObject *)__pyx_v_inst)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 9080, __pyx_L1_error)

  /* "scamper.pyx":9081
 *         inst = ScamperInst.from_ptr(c)
 *         self._insts.append(inst)
 *         return inst             # <<<<<<<<<<<<<<
 * 
 *     def add_vps(self, vps):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_inst);
  __pyx_r = ((PyObject *)__pyx_v_inst);
  goto __pyx_L0;

  /* "scamper.pyx":9075
 *         self._muxs.append(mux)
 * 
 *     def _add_vp(self, vp):             # <<<<<<<<<<<<<<
 *         c = clibscamperctrl.scamper_inst_vp(self._c, (<ScamperVp>vp)._c)
 *         if c == NULL:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperCtrl._add_vp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9083
 *         return inst
 * 
 *     def add_vps(self, vps):             # <<<<<<<<<<<<<<
 *         insts = []
 *         if isinstance(vps, list):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_21add_vps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_21add_vps = {"add_vps", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_21add_vps, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_21add_vps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_vps = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_vps (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_vps,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9083, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9083, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "add_vps", 0) < 0) __PYX_ERR(0, 9083, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("add_vps", 1, 1, 1, i); __PYX_ERR(0, 9083, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9083, __pyx_L3_error)
    }
    __pyx_v_vps = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_vps", 1, 1, 1, __pyx_nargs); __PYX_ERR(0, 9083, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_vps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_20add_vps(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_vps);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_20add_vps(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_vps) {
  PyObject *__pyx_v_insts = NULL;
  PyObject *__pyx_v_vp = NULL;
  PyObject *__pyx_v_inst = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  size_t __pyx_t_9;
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_vps", 0);

  /* "scamper.pyx":9084
 * 
 *     def add_vps(self, vps):
 *         insts = []             # <<<<<<<<<<<<<<
 *         if isinstance(vps, list):
 *             for vp in vps:
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9084, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_insts = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9085
 *     def add_vps(self, vps):
 *         insts = []
 *         if isinstance(vps, list):             # <<<<<<<<<<<<<<
 *             for vp in vps:
 *                 if not isinstance(vp, ScamperVp):
*/
  __pyx_t_2 = PyList_Check(__pyx_v_vps); 
  if (__pyx_t_2) {

    /* "scamper.pyx":9086
 *         insts = []
 *         if isinstance(vps, list):
 *             for vp in vps:             # <<<<<<<<<<<<<<
 *                 if not isinstance(vp, ScamperVp):
 *                     raise TypeError("vps list containts non ScamperVp")
*/
    if (likely(PyList_CheckExact(__pyx_v_vps)) || PyTuple_CheckExact(__pyx_v_vps)) {
      __pyx_t_1 = __pyx_v_vps; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_3 = 0;
      __pyx_t_4 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_vps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9086, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9086, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_4)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9086, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          __pyx_t_5 = __Pyx_PyList_GetItemRef(__pyx_t_1, __pyx_t_3);
          ++__pyx_t_3;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9086, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3));
          #else
          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3);
          #endif
          ++__pyx_t_3;
        }
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9086, __pyx_L1_error)
      } else {
        __pyx_t_5 = __pyx_t_4(__pyx_t_1);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 9086, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XDECREF_SET(__pyx_v_vp, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":9087
 *         if isinstance(vps, list):
 *             for vp in vps:
 *                 if not isinstance(vp, ScamperVp):             # <<<<<<<<<<<<<<
 *                     raise TypeError("vps list containts non ScamperVp")
 *             for vp in vps:
*/
      __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_vp, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperVp); 
      __pyx_t_6 = (!__pyx_t_2);
      if (unlikely(__pyx_t_6)) {

        /* "scamper.pyx":9088
 *             for vp in vps:
 *                 if not isinstance(vp, ScamperVp):
 *                     raise TypeError("vps list containts non ScamperVp")             # <<<<<<<<<<<<<<
 *             for vp in vps:
 *                 inst = self._add_vp(vp)
*/
        __pyx_t_7 = NULL;
        __Pyx_INCREF(__pyx_builtin_TypeError);
        __pyx_t_8 = __pyx_builtin_TypeError; 
        __pyx_t_9 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_vps_list_containts_non_ScamperVp};
          __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
          __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
          if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9088, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_5);
        }
        __Pyx_Raise(__pyx_t_5, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __PYX_ERR(0, 9088, __pyx_L1_error)

        /* "scamper.pyx":9087
 *         if isinstance(vps, list):
 *             for vp in vps:
 *                 if not isinstance(vp, ScamperVp):             # <<<<<<<<<<<<<<
 *                     raise TypeError("vps list containts non ScamperVp")
 *             for vp in vps:
*/
      }

      /* "scamper.pyx":9086
 *         insts = []
 *         if isinstance(vps, list):
 *             for vp in vps:             # <<<<<<<<<<<<<<
 *                 if not isinstance(vp, ScamperVp):
 *                     raise TypeError("vps list containts non ScamperVp")
*/
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9089
 *                 if not isinstance(vp, ScamperVp):
 *                     raise TypeError("vps list containts non ScamperVp")
 *             for vp in vps:             # <<<<<<<<<<<<<<
 *                 inst = self._add_vp(vp)
 *                 if inst is not None:
*/
    if (likely(PyList_CheckExact(__pyx_v_vps)) || PyTuple_CheckExact(__pyx_v_vps)) {
      __pyx_t_1 = __pyx_v_vps; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_3 = 0;
      __pyx_t_4 = NULL;
    } else {
      __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_vps); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9089, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9089, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_4)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9089, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          __pyx_t_5 = __Pyx_PyList_GetItemRef(__pyx_t_1, __pyx_t_3);
          ++__pyx_t_3;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9089, __pyx_L1_error)
            #endif
            if (__pyx_t_3 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3));
          #else
          __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_3);
          #endif
          ++__pyx_t_3;
        }
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9089, __pyx_L1_error)
      } else {
        __pyx_t_5 = __pyx_t_4(__pyx_t_1);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 9089, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XDECREF_SET(__pyx_v_vp, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":9090
 *                     raise TypeError("vps list containts non ScamperVp")
 *             for vp in vps:
 *                 inst = self._add_vp(vp)             # <<<<<<<<<<<<<<
 *                 if inst is not None:
 *                     insts.append(inst)
*/
      __pyx_t_8 = ((PyObject *)__pyx_v_self);
      __Pyx_INCREF(__pyx_t_8);
      __pyx_t_9 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_v_vp};
        __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_add_vp, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9090, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_XDECREF_SET(__pyx_v_inst, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":9091
 *             for vp in vps:
 *                 inst = self._add_vp(vp)
 *                 if inst is not None:             # <<<<<<<<<<<<<<
 *                     insts.append(inst)
 *         elif isinstance(vps, ScamperVp):
*/
      __pyx_t_6 = (__pyx_v_inst != Py_None);
      if (__pyx_t_6) {

        /* "scamper.pyx":9092
 *                 inst = self._add_vp(vp)
 *                 if inst is not None:
 *                     insts.append(inst)             # <<<<<<<<<<<<<<
 *         elif isinstance(vps, ScamperVp):
 *             inst = self._add_vp(vps)
*/
        __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_insts, __pyx_v_inst); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 9092, __pyx_L1_error)

        /* "scamper.pyx":9091
 *             for vp in vps:
 *                 inst = self._add_vp(vp)
 *                 if inst is not None:             # <<<<<<<<<<<<<<
 *                     insts.append(inst)
 *         elif isinstance(vps, ScamperVp):
*/
      }

      /* "scamper.pyx":9089
 *                 if not isinstance(vp, ScamperVp):
 *                     raise TypeError("vps list containts non ScamperVp")
 *             for vp in vps:             # <<<<<<<<<<<<<<
 *                 inst = self._add_vp(vp)
 *                 if inst is not None:
*/
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9085
 *     def add_vps(self, vps):
 *         insts = []
 *         if isinstance(vps, list):             # <<<<<<<<<<<<<<
 *             for vp in vps:
 *                 if not isinstance(vp, ScamperVp):
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":9093
 *                 if inst is not None:
 *                     insts.append(inst)
 *         elif isinstance(vps, ScamperVp):             # <<<<<<<<<<<<<<
 *             inst = self._add_vp(vps)
 *             if inst is not None:
*/
  __pyx_t_6 = __Pyx_TypeCheck(__pyx_v_vps, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperVp); 
  if (likely(__pyx_t_6)) {

    /* "scamper.pyx":9094
 *                     insts.append(inst)
 *         elif isinstance(vps, ScamperVp):
 *             inst = self._add_vp(vps)             # <<<<<<<<<<<<<<
 *             if inst is not None:
 *                 insts.append(inst)
*/
    __pyx_t_5 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_9 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_v_vps};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_add_vp, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9094, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_v_inst = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "scamper.pyx":9095
 *         elif isinstance(vps, ScamperVp):
 *             inst = self._add_vp(vps)
 *             if inst is not None:             # <<<<<<<<<<<<<<
 *                 insts.append(inst)
 *         else:
*/
    __pyx_t_6 = (__pyx_v_inst != Py_None);
    if (__pyx_t_6) {

      /* "scamper.pyx":9096
 *             inst = self._add_vp(vps)
 *             if inst is not None:
 *                 insts.append(inst)             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError("vps containts non ScamperVp")
*/
      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_insts, __pyx_v_inst); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 9096, __pyx_L1_error)

      /* "scamper.pyx":9095
 *         elif isinstance(vps, ScamperVp):
 *             inst = self._add_vp(vps)
 *             if inst is not None:             # <<<<<<<<<<<<<<
 *                 insts.append(inst)
 *         else:
*/
    }

    /* "scamper.pyx":9093
 *                 if inst is not None:
 *                     insts.append(inst)
 *         elif isinstance(vps, ScamperVp):             # <<<<<<<<<<<<<<
 *             inst = self._add_vp(vps)
 *             if inst is not None:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":9098
 *                 insts.append(inst)
 *         else:
 *             raise TypeError("vps containts non ScamperVp")             # <<<<<<<<<<<<<<
 *         return insts
 * 
*/
  /*else*/ {
    __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_builtin_TypeError);
    __pyx_t_8 = __pyx_builtin_TypeError; 
    __pyx_t_9 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_vps_containts_non_ScamperVp};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_9, (2-__pyx_t_9) | (__pyx_t_9*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9098, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 9098, __pyx_L1_error)
  }
  __pyx_L3:;

  /* "scamper.pyx":9099
 *         else:
 *             raise TypeError("vps containts non ScamperVp")
 *         return insts             # <<<<<<<<<<<<<<
 * 
 *     def exceptions(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_insts);
  __pyx_r = __pyx_v_insts;
  goto __pyx_L0;

  /* "scamper.pyx":9083
 *         return inst
 * 
 *     def add_vps(self, vps):             # <<<<<<<<<<<<<<
 *         insts = []
 *         if isinstance(vps, list):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.add_vps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_insts);
  __Pyx_XDECREF(__pyx_v_vp);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7scamper_11ScamperCtrl_24generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "scamper.pyx":9101
 *         return insts
 * 
 *     def exceptions(self):             # <<<<<<<<<<<<<<
 *         """
 *         exceptions()
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_23exceptions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_22exceptions, "\n        exceptions()\n        a generator that returns queued exceptions reporting errors\n        from a :class:`ScamperInst`.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_23exceptions = {"exceptions", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_23exceptions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_22exceptions};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_23exceptions(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exceptions (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("exceptions", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("exceptions", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_22exceptions(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_22exceptions(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("exceptions", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *)__pyx_tp_new_7scamper___pyx_scope_struct_1_exceptions(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9101, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7scamper_11ScamperCtrl_24generator1, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_exceptions, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_exceptions, __pyx_mstate_global->__pyx_n_u_scamper); if (unlikely(!gen)) __PYX_ERR(0, 9101, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCtrl.exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7scamper_11ScamperCtrl_24generator1(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *__pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exceptions", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 9101, __pyx_L1_error)
  }

  /* "scamper.pyx":9107
 *         from a :class:`ScamperInst`.
 *         """
 *         while len(self._exceptions) > 0:             # <<<<<<<<<<<<<<
 *             yield self._exceptions.pop(0)
 * 
*/
  while (1) {
    __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_exceptions;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9107, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_3 = (__pyx_t_2 > 0);
    if (!__pyx_t_3) break;

    /* "scamper.pyx":9108
 *         """
 *         while len(self._exceptions) > 0:
 *             yield self._exceptions.pop(0)             # <<<<<<<<<<<<<<
 * 
 *     def responses(self, timeout=None, until=None):
*/
    __pyx_t_1 = __Pyx_PyObject_PopIndex(__pyx_cur_scope->__pyx_v_self->_exceptions, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9108, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9108, __pyx_L1_error)
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "scamper.pyx":9101
 *         return insts
 * 
 *     def exceptions(self):             # <<<<<<<<<<<<<<
 *         """
 *         exceptions()
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("exceptions", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7scamper_11ScamperCtrl_27generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "scamper.pyx":9110
 *             yield self._exceptions.pop(0)
 * 
 *     def responses(self, timeout=None, until=None):             # <<<<<<<<<<<<<<
 *         """
 *         responses(timeout=None, until=None)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_26responses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_25responses, "\n        responses(timeout=None, until=None)\n        a generator that returns the objects for all issued measurements.\n        this method will not return until all issued measurements have\n        completed, or the timeout provided is reached.\n\n        :param timedelta timeout: the maximum length of time to wait before\n            returning\n        :param datetime until: wait no longer than this timestamp before\n            returning\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_26responses = {"responses", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_26responses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_25responses};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_26responses(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_timeout = 0;
  PyObject *__pyx_v_until = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("responses (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_timeout,&__pyx_mstate_global->__pyx_n_u_until,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9110, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9110, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9110, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "responses", 0) < 0) __PYX_ERR(0, 9110, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9110, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9110, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_timeout = values[0];
    __pyx_v_until = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("responses", 0, 0, 2, __pyx_nargs); __PYX_ERR(0, 9110, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.responses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_25responses(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_timeout, __pyx_v_until);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_25responses(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_timeout, PyObject *__pyx_v_until) {
  struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("responses", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *)__pyx_tp_new_7scamper___pyx_scope_struct_2_responses(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_2_responses, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9110, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_v_self = __pyx_v_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_v_self);
  __pyx_cur_scope->__pyx_v_timeout = __pyx_v_timeout;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_timeout);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_timeout);
  __pyx_cur_scope->__pyx_v_until = __pyx_v_until;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_until);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_until);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7scamper_11ScamperCtrl_27generator2, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_responses, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_responses, __pyx_mstate_global->__pyx_n_u_scamper); if (unlikely(!gen)) __PYX_ERR(0, 9110, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCtrl.responses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7scamper_11ScamperCtrl_27generator2(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *__pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  Py_ssize_t __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  int __pyx_t_12;
  int __pyx_t_13;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_t_22;
  time_t __pyx_t_23;
  suseconds_t __pyx_t_24;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("responses", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L42_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(__pyx_sent_value != Py_None)) {
    if (unlikely(__pyx_sent_value)) PyErr_SetString(PyExc_TypeError, "can't send non-None value to a just-started generator");
    __PYX_ERR(0, 9110, __pyx_L1_error)
  }

  /* "scamper.pyx":9123
 *         """
 *         cdef timeval tv
 *         cdef timeval *tv_ptr = NULL             # <<<<<<<<<<<<<<
 * 
 *         # process the timeout/until parameters, if provided.
*/
  __pyx_cur_scope->__pyx_v_tv_ptr = NULL;

  /* "scamper.pyx":9128
 *         # if a timeout parameter is supplied, then calculate when the
 *         # method needs to complete by.
 *         if timeout is not None and until is not None:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot provide both timeout and until parameters")
 *         if timeout is not None:
*/
  __pyx_t_2 = (__pyx_cur_scope->__pyx_v_timeout != Py_None);
  if (__pyx_t_2) {
  } else {
    __pyx_t_1 = __pyx_t_2;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_2 = (__pyx_cur_scope->__pyx_v_until != Py_None);
  __pyx_t_1 = __pyx_t_2;
  __pyx_L5_bool_binop_done:;
  if (unlikely(__pyx_t_1)) {

    /* "scamper.pyx":9129
 *         # method needs to complete by.
 *         if timeout is not None and until is not None:
 *             raise ValueError("cannot provide both timeout and until parameters")             # <<<<<<<<<<<<<<
 *         if timeout is not None:
 *             if not isinstance(timeout, datetime.timedelta):
*/
    __pyx_t_4 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_5 = __pyx_builtin_ValueError; 
    __pyx_t_6 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_cannot_provide_both_timeout_and};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9129, __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_ERR(0, 9129, __pyx_L1_error)

    /* "scamper.pyx":9128
 *         # if a timeout parameter is supplied, then calculate when the
 *         # method needs to complete by.
 *         if timeout is not None and until is not None:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot provide both timeout and until parameters")
 *         if timeout is not None:
*/
  }

  /* "scamper.pyx":9130
 *         if timeout is not None and until is not None:
 *             raise ValueError("cannot provide both timeout and until parameters")
 *         if timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(timeout, datetime.timedelta):
 *                 timeout = datetime.timedelta(seconds=timeout)
*/
  __pyx_t_1 = (__pyx_cur_scope->__pyx_v_timeout != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":9131
 *             raise ValueError("cannot provide both timeout and until parameters")
 *         if timeout is not None:
 *             if not isinstance(timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 timeout = datetime.timedelta(seconds=timeout)
 *             u = datetime.datetime.now() + timeout
*/
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9131, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = PyObject_IsInstance(__pyx_cur_scope->__pyx_v_timeout, __pyx_t_5); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 9131, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_2 = (!__pyx_t_1);
    if (__pyx_t_2) {

      /* "scamper.pyx":9132
 *         if timeout is not None:
 *             if not isinstance(timeout, datetime.timedelta):
 *                 timeout = datetime.timedelta(seconds=timeout)             # <<<<<<<<<<<<<<
 *             u = datetime.datetime.now() + timeout
 *             tv_ptr = &tv
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9132, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9132, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_6 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_7);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
        __pyx_t_6 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, NULL};
        __pyx_t_4 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9132, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_cur_scope->__pyx_v_timeout, __pyx_t_4, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9132, __pyx_L1_error)
        __pyx_t_5 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_7, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_4);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9132, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_timeout);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_timeout, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":9131
 *             raise ValueError("cannot provide both timeout and until parameters")
 *         if timeout is not None:
 *             if not isinstance(timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 timeout = datetime.timedelta(seconds=timeout)
 *             u = datetime.datetime.now() + timeout
*/
    }

    /* "scamper.pyx":9133
 *             if not isinstance(timeout, datetime.timedelta):
 *                 timeout = datetime.timedelta(seconds=timeout)
 *             u = datetime.datetime.now() + timeout             # <<<<<<<<<<<<<<
 *             tv_ptr = &tv
 *         elif until is not None:
*/
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_7 = __pyx_t_3;
    __Pyx_INCREF(__pyx_t_7);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, NULL};
      __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_now, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9133, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_cur_scope->__pyx_v_timeout); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9133, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_cur_scope->__pyx_v_u = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":9134
 *                 timeout = datetime.timedelta(seconds=timeout)
 *             u = datetime.datetime.now() + timeout
 *             tv_ptr = &tv             # <<<<<<<<<<<<<<
 *         elif until is not None:
 *             if not isinstance(until, datetime.datetime):
*/
    __pyx_cur_scope->__pyx_v_tv_ptr = (&__pyx_cur_scope->__pyx_v_tv);

    /* "scamper.pyx":9130
 *         if timeout is not None and until is not None:
 *             raise ValueError("cannot provide both timeout and until parameters")
 *         if timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(timeout, datetime.timedelta):
 *                 timeout = datetime.timedelta(seconds=timeout)
*/
    goto __pyx_L7;
  }

  /* "scamper.pyx":9135
 *             u = datetime.datetime.now() + timeout
 *             tv_ptr = &tv
 *         elif until is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(until, datetime.datetime):
 *                 raise TypeError("until is not a datetime")
*/
  __pyx_t_2 = (__pyx_cur_scope->__pyx_v_until != Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":9136
 *             tv_ptr = &tv
 *         elif until is not None:
 *             if not isinstance(until, datetime.datetime):             # <<<<<<<<<<<<<<
 *                 raise TypeError("until is not a datetime")
 *             u = until
*/
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9136, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = PyObject_IsInstance(__pyx_cur_scope->__pyx_v_until, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9136, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_1 = (!__pyx_t_2);
    if (unlikely(__pyx_t_1)) {

      /* "scamper.pyx":9137
 *         elif until is not None:
 *             if not isinstance(until, datetime.datetime):
 *                 raise TypeError("until is not a datetime")             # <<<<<<<<<<<<<<
 *             u = until
 *             tv_ptr = &tv
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_TypeError);
      __pyx_t_7 = __pyx_builtin_TypeError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_until_is_not_a_datetime};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9137, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 9137, __pyx_L1_error)

      /* "scamper.pyx":9136
 *             tv_ptr = &tv
 *         elif until is not None:
 *             if not isinstance(until, datetime.datetime):             # <<<<<<<<<<<<<<
 *                 raise TypeError("until is not a datetime")
 *             u = until
*/
    }

    /* "scamper.pyx":9138
 *             if not isinstance(until, datetime.datetime):
 *                 raise TypeError("until is not a datetime")
 *             u = until             # <<<<<<<<<<<<<<
 *             tv_ptr = &tv
 *         else:
*/
    __Pyx_INCREF(__pyx_cur_scope->__pyx_v_until);
    __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_until);
    __pyx_cur_scope->__pyx_v_u = __pyx_cur_scope->__pyx_v_until;

    /* "scamper.pyx":9139
 *                 raise TypeError("until is not a datetime")
 *             u = until
 *             tv_ptr = &tv             # <<<<<<<<<<<<<<
 *         else:
 *             u = None
*/
    __pyx_cur_scope->__pyx_v_tv_ptr = (&__pyx_cur_scope->__pyx_v_tv);

    /* "scamper.pyx":9135
 *             u = datetime.datetime.now() + timeout
 *             tv_ptr = &tv
 *         elif until is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(until, datetime.datetime):
 *                 raise TypeError("until is not a datetime")
*/
    goto __pyx_L7;
  }

  /* "scamper.pyx":9141
 *             tv_ptr = &tv
 *         else:
 *             u = None             # <<<<<<<<<<<<<<
 * 
 *         while 1:
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_cur_scope->__pyx_v_u = Py_None;
  }
  __pyx_L7:;

  /* "scamper.pyx":9143
 *             u = None
 * 
 *         while 1:             # <<<<<<<<<<<<<<
 *             # process queued data as follows:
 *             # - return all objects in the queue
*/
  while (1) {

    /* "scamper.pyx":9147
 *             # - return all objects in the queue
 *             # - exit when there are no outstanding tasks left
 *             while len(self._objs) > 0:             # <<<<<<<<<<<<<<
 *                 onion = self._objs.pop(0)
 *                 inst = onion._inst
*/
    while (1) {
      __pyx_t_5 = __pyx_cur_scope->__pyx_v_self->_objs;
      __Pyx_INCREF(__pyx_t_5);
      __pyx_t_8 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9147, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_1 = (__pyx_t_8 > 0);
      if (!__pyx_t_1) break;

      /* "scamper.pyx":9148
 *             # - exit when there are no outstanding tasks left
 *             while len(self._objs) > 0:
 *                 onion = self._objs.pop(0)             # <<<<<<<<<<<<<<
 *                 inst = onion._inst
 *                 o = onion._data
*/
      __pyx_t_5 = __Pyx_PyObject_PopIndex(__pyx_cur_scope->__pyx_v_self->_objs, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9148, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_onion);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_onion, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":9149
 *             while len(self._objs) > 0:
 *                 onion = self._objs.pop(0)
 *                 inst = onion._inst             # <<<<<<<<<<<<<<
 *                 o = onion._data
 * 
*/
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_onion, __pyx_mstate_global->__pyx_n_u_inst_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9149, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_inst);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_inst, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":9150
 *                 onion = self._objs.pop(0)
 *                 inst = onion._inst
 *                 o = onion._data             # <<<<<<<<<<<<<<
 * 
 *                 inst._queued -= 1
*/
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_onion, __pyx_mstate_global->__pyx_n_u_data_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9150, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_o);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_o, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":9152
 *                 o = onion._data
 * 
 *                 inst._queued -= 1             # <<<<<<<<<<<<<<
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:
 *                     try:
*/
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_queued); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = __Pyx_PyLong_SubtractObjC(__pyx_t_5, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9152, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__Pyx_PyObject_SetAttrStr(__pyx_cur_scope->__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_queued, __pyx_t_7) < 0) __PYX_ERR(0, 9152, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

      /* "scamper.pyx":9153
 * 
 *                 inst._queued -= 1
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:             # <<<<<<<<<<<<<<
 *                     try:
 *                         self._eofcb(self, inst, self._param)
*/
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_eof); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 9153, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L15_bool_binop_done;
      }
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_queued); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_7, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_2 < 0))) __PYX_ERR(0, 9153, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (__pyx_t_2) {
      } else {
        __pyx_t_1 = __pyx_t_2;
        goto __pyx_L15_bool_binop_done;
      }
      __pyx_t_2 = (__pyx_cur_scope->__pyx_v_self->_eofcb != Py_None);
      __pyx_t_1 = __pyx_t_2;
      __pyx_L15_bool_binop_done:;
      if (__pyx_t_1) {

        /* "scamper.pyx":9154
 *                 inst._queued -= 1
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:
 *                     try:             # <<<<<<<<<<<<<<
 *                         self._eofcb(self, inst, self._param)
 *                     except Exception as e:
*/
        {
          __Pyx_ExceptionSave(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
          __Pyx_XGOTREF(__pyx_t_9);
          __Pyx_XGOTREF(__pyx_t_10);
          __Pyx_XGOTREF(__pyx_t_11);
          /*try:*/ {

            /* "scamper.pyx":9155
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:
 *                     try:
 *                         self._eofcb(self, inst, self._param)             # <<<<<<<<<<<<<<
 *                     except Exception as e:
 *                         self._exceptions.append(e)
*/
            __pyx_t_5 = NULL;
            __Pyx_INCREF(__pyx_cur_scope->__pyx_v_self->_eofcb);
            __pyx_t_3 = __pyx_cur_scope->__pyx_v_self->_eofcb; 
            __pyx_t_6 = 1;
            #if CYTHON_UNPACK_METHODS
            if (likely(PyMethod_Check(__pyx_t_3))) {
              __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_3);
              assert(__pyx_t_5);
              PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
              __Pyx_INCREF(__pyx_t_5);
              __Pyx_INCREF(__pyx__function);
              __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
              __pyx_t_6 = 0;
            }
            #endif
            {
              PyObject *__pyx_callargs[4] = {__pyx_t_5, ((PyObject *)__pyx_cur_scope->__pyx_v_self), __pyx_cur_scope->__pyx_v_inst, __pyx_cur_scope->__pyx_v_self->_param};
              __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_6, (4-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
              __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
              __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
              if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9155, __pyx_L18_error)
              __Pyx_GOTREF(__pyx_t_7);
            }
            __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

            /* "scamper.pyx":9154
 *                 inst._queued -= 1
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:
 *                     try:             # <<<<<<<<<<<<<<
 *                         self._eofcb(self, inst, self._param)
 *                     except Exception as e:
*/
          }
          __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
          __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
          goto __pyx_L25_try_end;
          __pyx_L18_error:;
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;

          /* "scamper.pyx":9156
 *                     try:
 *                         self._eofcb(self, inst, self._param)
 *                     except Exception as e:             # <<<<<<<<<<<<<<
 *                         self._exceptions.append(e)
 * 
*/
          __pyx_t_12 = __Pyx_PyErr_ExceptionMatches(((PyObject *)(((PyTypeObject*)PyExc_Exception))));
          if (__pyx_t_12) {
            __Pyx_AddTraceback("scamper.ScamperCtrl.responses", __pyx_clineno, __pyx_lineno, __pyx_filename);
            if (__Pyx_GetException(&__pyx_t_7, &__pyx_t_3, &__pyx_t_5) < 0) __PYX_ERR(0, 9156, __pyx_L20_except_error)
            __Pyx_XGOTREF(__pyx_t_7);
            __Pyx_XGOTREF(__pyx_t_3);
            __Pyx_XGOTREF(__pyx_t_5);
            __Pyx_INCREF(__pyx_t_3);
            __Pyx_GIVEREF(__pyx_t_3);
            __pyx_cur_scope->__pyx_v_e = __pyx_t_3;
            /*try:*/ {

              /* "scamper.pyx":9157
 *                         self._eofcb(self, inst, self._param)
 *                     except Exception as e:
 *                         self._exceptions.append(e)             # <<<<<<<<<<<<<<
 * 
 *                 if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):
*/
              __pyx_t_13 = __Pyx_PyObject_Append(__pyx_cur_scope->__pyx_v_self->_exceptions, __pyx_cur_scope->__pyx_v_e); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(0, 9157, __pyx_L31_error)
            }

            /* "scamper.pyx":9156
 *                     try:
 *                         self._eofcb(self, inst, self._param)
 *                     except Exception as e:             # <<<<<<<<<<<<<<
 *                         self._exceptions.append(e)
 * 
*/
            /*finally:*/ {
              /*normal exit:*/{
                __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e);
                __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0;
                goto __pyx_L32;
              }
              __pyx_L31_error:;
              /*exception exit:*/{
                __Pyx_PyThreadState_assign
                __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
                __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
                 __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
                if ( unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
                __Pyx_XGOTREF(__pyx_t_16);
                __Pyx_XGOTREF(__pyx_t_17);
                __Pyx_XGOTREF(__pyx_t_18);
                __Pyx_XGOTREF(__pyx_t_19);
                __Pyx_XGOTREF(__pyx_t_20);
                __Pyx_XGOTREF(__pyx_t_21);
                __pyx_t_12 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
                {
                  __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_e);
                  __Pyx_DECREF(__pyx_cur_scope->__pyx_v_e); __pyx_cur_scope->__pyx_v_e = 0;
                }
                __Pyx_XGIVEREF(__pyx_t_19);
                __Pyx_XGIVEREF(__pyx_t_20);
                __Pyx_XGIVEREF(__pyx_t_21);
                __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
                __Pyx_XGIVEREF(__pyx_t_16);
                __Pyx_XGIVEREF(__pyx_t_17);
                __Pyx_XGIVEREF(__pyx_t_18);
                __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
                __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
                __pyx_lineno = __pyx_t_12; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
                goto __pyx_L20_except_error;
              }
              __pyx_L32:;
            }
            __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
            __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            goto __pyx_L19_exception_handled;
          }
          goto __pyx_L20_except_error;

          /* "scamper.pyx":9154
 *                 inst._queued -= 1
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:
 *                     try:             # <<<<<<<<<<<<<<
 *                         self._eofcb(self, inst, self._param)
 *                     except Exception as e:
*/
          __pyx_L20_except_error:;
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
          goto __pyx_L1_error;
          __pyx_L19_exception_handled:;
          __Pyx_XGIVEREF(__pyx_t_9);
          __Pyx_XGIVEREF(__pyx_t_10);
          __Pyx_XGIVEREF(__pyx_t_11);
          __Pyx_ExceptionReset(__pyx_t_9, __pyx_t_10, __pyx_t_11);
          __pyx_L25_try_end:;
        }

        /* "scamper.pyx":9153
 * 
 *                 inst._queued -= 1
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:             # <<<<<<<<<<<<<<
 *                     try:
 *                         self._eofcb(self, inst, self._param)
*/
      }

      /* "scamper.pyx":9159
 *                         self._exceptions.append(e)
 * 
 *                 if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):             # <<<<<<<<<<<<<<
 *                     yield o
 * 
*/
      if (!__pyx_cur_scope->__pyx_v_self->_meta) {
      } else {
        __pyx_t_1 = __pyx_cur_scope->__pyx_v_self->_meta;
        goto __pyx_L38_bool_binop_done;
      }
      __pyx_t_22 = __Pyx_TypeCheck(__pyx_cur_scope->__pyx_v_o, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperList); 
      if (!__pyx_t_22) {
      } else {
        __pyx_t_2 = __pyx_t_22;
        goto __pyx_L40_bool_binop_done;
      }
      __pyx_t_22 = __Pyx_TypeCheck(__pyx_cur_scope->__pyx_v_o, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperCycle); 
      __pyx_t_2 = __pyx_t_22;
      __pyx_L40_bool_binop_done:;
      __pyx_t_22 = (!__pyx_t_2);
      __pyx_t_1 = __pyx_t_22;
      __pyx_L38_bool_binop_done:;
      if (__pyx_t_1) {

        /* "scamper.pyx":9160
 * 
 *                 if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):
 *                     yield o             # <<<<<<<<<<<<<<
 * 
 *             if len(self._tasks) == 0:
*/
        __Pyx_INCREF(__pyx_cur_scope->__pyx_v_o);
        __pyx_r = __pyx_cur_scope->__pyx_v_o;
        __Pyx_XGIVEREF(__pyx_r);
        __Pyx_RefNannyFinishContext();
        __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
        /* return from generator, yielding value */
        __pyx_generator->resume_label = 1;
        return __pyx_r;
        __pyx_L42_resume_from_yield:;
        if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9160, __pyx_L1_error)

        /* "scamper.pyx":9159
 *                         self._exceptions.append(e)
 * 
 *                 if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):             # <<<<<<<<<<<<<<
 *                     yield o
 * 
*/
      }
    }

    /* "scamper.pyx":9162
 *                     yield o
 * 
 *             if len(self._tasks) == 0:             # <<<<<<<<<<<<<<
 *                 break
 * 
*/
    __pyx_t_5 = __pyx_cur_scope->__pyx_v_self->_tasks;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_8 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_8 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9162, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_1 = (__pyx_t_8 == 0);
    if (__pyx_t_1) {

      /* "scamper.pyx":9163
 * 
 *             if len(self._tasks) == 0:
 *                 break             # <<<<<<<<<<<<<<
 * 
 *             # handle any signals (e.g. KeyboardInterrupt)
*/
      goto __pyx_L11_break;

      /* "scamper.pyx":9162
 *                     yield o
 * 
 *             if len(self._tasks) == 0:             # <<<<<<<<<<<<<<
 *                 break
 * 
*/
    }

    /* "scamper.pyx":9166
 * 
 *             # handle any signals (e.g. KeyboardInterrupt)
 *             PyErr_CheckSignals()             # <<<<<<<<<<<<<<
 * 
 *             # set a timeout based on when the responses generator is
*/
    __pyx_t_14 = PyErr_CheckSignals(); if (unlikely(__pyx_t_14 == ((int)-1))) __PYX_ERR(0, 9166, __pyx_L1_error)

    /* "scamper.pyx":9170
 *             # set a timeout based on when the responses generator is
 *             # expected to be finished by.
 *             if u is not None:             # <<<<<<<<<<<<<<
 *                 now = datetime.datetime.now()
 *                 if u < now:
*/
    __pyx_t_1 = (__pyx_cur_scope->__pyx_v_u != Py_None);
    if (__pyx_t_1) {

      /* "scamper.pyx":9171
 *             # expected to be finished by.
 *             if u is not None:
 *                 now = datetime.datetime.now()             # <<<<<<<<<<<<<<
 *                 if u < now:
 *                     break
*/
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9171, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9171, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_3 = __pyx_t_4;
      __Pyx_INCREF(__pyx_t_3);
      __pyx_t_6 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
        __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_now, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9171, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_now);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_now, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":9172
 *             if u is not None:
 *                 now = datetime.datetime.now()
 *                 if u < now:             # <<<<<<<<<<<<<<
 *                     break
 *                 diff = u - now
*/
      __pyx_t_5 = PyObject_RichCompare(__pyx_cur_scope->__pyx_v_u, __pyx_cur_scope->__pyx_v_now, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9172, __pyx_L1_error)
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 9172, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (__pyx_t_1) {

        /* "scamper.pyx":9173
 *                 now = datetime.datetime.now()
 *                 if u < now:
 *                     break             # <<<<<<<<<<<<<<
 *                 diff = u - now
 *                 tv.tv_sec = diff.seconds
*/
        goto __pyx_L11_break;

        /* "scamper.pyx":9172
 *             if u is not None:
 *                 now = datetime.datetime.now()
 *                 if u < now:             # <<<<<<<<<<<<<<
 *                     break
 *                 diff = u - now
*/
      }

      /* "scamper.pyx":9174
 *                 if u < now:
 *                     break
 *                 diff = u - now             # <<<<<<<<<<<<<<
 *                 tv.tv_sec = diff.seconds
 *                 tv.tv_usec = diff.microseconds
*/
      __pyx_t_5 = PyNumber_Subtract(__pyx_cur_scope->__pyx_v_u, __pyx_cur_scope->__pyx_v_now); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9174, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_diff);
      __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_diff, __pyx_t_5);
      __Pyx_GIVEREF(__pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":9175
 *                     break
 *                 diff = u - now
 *                 tv.tv_sec = diff.seconds             # <<<<<<<<<<<<<<
 *                 tv.tv_usec = diff.microseconds
 * 
*/
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_diff, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9175, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_23 = __Pyx_PyLong_As_time_t(__pyx_t_5); if (unlikely((__pyx_t_23 == ((time_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9175, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_cur_scope->__pyx_v_tv.tv_sec = __pyx_t_23;

      /* "scamper.pyx":9176
 *                 diff = u - now
 *                 tv.tv_sec = diff.seconds
 *                 tv.tv_usec = diff.microseconds             # <<<<<<<<<<<<<<
 * 
 *             clibscamperctrl.scamper_ctrl_wait(self._c, tv_ptr)
*/
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_diff, __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9176, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_24 = __Pyx_PyLong_As_suseconds_t(__pyx_t_5); if (unlikely((__pyx_t_24 == ((suseconds_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9176, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_cur_scope->__pyx_v_tv.tv_usec = __pyx_t_24;

      /* "scamper.pyx":9170
 *             # set a timeout based on when the responses generator is
 *             # expected to be finished by.
 *             if u is not None:             # <<<<<<<<<<<<<<
 *                 now = datetime.datetime.now()
 *                 if u < now:
*/
    }

    /* "scamper.pyx":9178
 *                 tv.tv_usec = diff.microseconds
 * 
 *             clibscamperctrl.scamper_ctrl_wait(self._c, tv_ptr)             # <<<<<<<<<<<<<<
 * 
 *     def poll(self, timeout=None, until=None):
*/
    (void)(scamper_ctrl_wait(__pyx_cur_scope->__pyx_v_self->_c, __pyx_cur_scope->__pyx_v_tv_ptr));
  }
  __pyx_L11_break:;
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* "scamper.pyx":9110
 *             yield self._exceptions.pop(0)
 * 
 *     def responses(self, timeout=None, until=None):             # <<<<<<<<<<<<<<
 *         """
 *         responses(timeout=None, until=None)
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("responses", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9180
 *             clibscamperctrl.scamper_ctrl_wait(self._c, tv_ptr)
 * 
 *     def poll(self, timeout=None, until=None):             # <<<<<<<<<<<<<<
 *         """
 *         poll(timeout=None, until=None)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_29poll(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_28poll, "\n        poll(timeout=None, until=None)\n        wait for a scamper object to become available from one of the\n        :class:`ScamperInst` under management.  This method can raise\n        exceptions collected by the :class:`ScamperCtrl` object.  These\n        will be :py:exc:`RuntimeError` exceptions if scamper encountered\n        a problem, as well as any of the exceptions that any user-provided\n        callback function raises.\n\n        :param timedelta timeout: the maximum length of time to wait before\n            returning\n        :param datetime until: wait no longer than this timestamp before\n            returning\n        :returns: a scamper object, or None if none are available.\n        :rtype: a scamper object.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_29poll = {"poll", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_29poll, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_28poll};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_29poll(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_timeout = 0;
  PyObject *__pyx_v_until = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[2] = {0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("poll (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_timeout,&__pyx_mstate_global->__pyx_n_u_until,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9180, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9180, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9180, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "poll", 0) < 0) __PYX_ERR(0, 9180, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    } else {
      switch (__pyx_nargs) {
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9180, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9180, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
    }
    __pyx_v_timeout = values[0];
    __pyx_v_until = values[1];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("poll", 0, 0, 2, __pyx_nargs); __PYX_ERR(0, 9180, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.poll", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_28poll(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_timeout, __pyx_v_until);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_28poll(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_timeout, PyObject *__pyx_v_until) {
  struct timeval __pyx_v_tv;
  struct timeval *__pyx_v_tv_ptr;
  PyObject *__pyx_v_onion = NULL;
  PyObject *__pyx_v_inst = NULL;
  PyObject *__pyx_v_o = NULL;
  PyObject *__pyx_v_u = NULL;
  PyObject *__pyx_v_now = NULL;
  PyObject *__pyx_v_diff = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  time_t __pyx_t_11;
  suseconds_t __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("poll", 0);
  __Pyx_INCREF(__pyx_v_timeout);

  /* "scamper.pyx":9198
 *         """
 *         cdef timeval tv
 *         cdef timeval *tv_ptr = NULL             # <<<<<<<<<<<<<<
 * 
 *         if len(self._exceptions) > 0:
*/
  __pyx_v_tv_ptr = NULL;

  /* "scamper.pyx":9200
 *         cdef timeval *tv_ptr = NULL
 * 
 *         if len(self._exceptions) > 0:             # <<<<<<<<<<<<<<
 *             raise self._exceptions.pop(0)
 *         while len(self._objs) > 0:
*/
  __pyx_t_1 = __pyx_v_self->_exceptions;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 > 0);
  if (unlikely(__pyx_t_3)) {

    /* "scamper.pyx":9201
 * 
 *         if len(self._exceptions) > 0:
 *             raise self._exceptions.pop(0)             # <<<<<<<<<<<<<<
 *         while len(self._objs) > 0:
 *             onion = self._objs.pop(0)
*/
    __pyx_t_1 = __Pyx_PyObject_PopIndex(__pyx_v_self->_exceptions, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9201, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 9201, __pyx_L1_error)

    /* "scamper.pyx":9200
 *         cdef timeval *tv_ptr = NULL
 * 
 *         if len(self._exceptions) > 0:             # <<<<<<<<<<<<<<
 *             raise self._exceptions.pop(0)
 *         while len(self._objs) > 0:
*/
  }

  /* "scamper.pyx":9202
 *         if len(self._exceptions) > 0:
 *             raise self._exceptions.pop(0)
 *         while len(self._objs) > 0:             # <<<<<<<<<<<<<<
 *             onion = self._objs.pop(0)
 * 
*/
  while (1) {
    __pyx_t_1 = __pyx_v_self->_objs;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9202, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_3 = (__pyx_t_2 > 0);
    if (!__pyx_t_3) break;

    /* "scamper.pyx":9203
 *             raise self._exceptions.pop(0)
 *         while len(self._objs) > 0:
 *             onion = self._objs.pop(0)             # <<<<<<<<<<<<<<
 * 
 *             inst = onion._inst
*/
    __pyx_t_1 = __Pyx_PyObject_PopIndex(__pyx_v_self->_objs, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9203, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_onion, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":9205
 *             onion = self._objs.pop(0)
 * 
 *             inst = onion._inst             # <<<<<<<<<<<<<<
 *             o = onion._data
 *             inst._queued -= 1
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_onion, __pyx_mstate_global->__pyx_n_u_inst_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9205, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_inst, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":9206
 * 
 *             inst = onion._inst
 *             o = onion._data             # <<<<<<<<<<<<<<
 *             inst._queued -= 1
 *             if inst._eof and inst._queued == 0 and self._eofcb is not None:
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_onion, __pyx_mstate_global->__pyx_n_u_data_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9206, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_o, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":9207
 *             inst = onion._inst
 *             o = onion._data
 *             inst._queued -= 1             # <<<<<<<<<<<<<<
 *             if inst._eof and inst._queued == 0 and self._eofcb is not None:
 *                 self._eofcb(self, inst, self._param)
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_queued); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = __Pyx_PyLong_SubtractObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9207, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__Pyx_PyObject_SetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_queued, __pyx_t_4) < 0) __PYX_ERR(0, 9207, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "scamper.pyx":9208
 *             o = onion._data
 *             inst._queued -= 1
 *             if inst._eof and inst._queued == 0 and self._eofcb is not None:             # <<<<<<<<<<<<<<
 *                 self._eofcb(self, inst, self._param)
 * 
*/
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_eof); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 9208, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_5) {
    } else {
      __pyx_t_3 = __pyx_t_5;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_queued); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9208, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_5 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_4, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 9208, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (__pyx_t_5) {
    } else {
      __pyx_t_3 = __pyx_t_5;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_5 = (__pyx_v_self->_eofcb != Py_None);
    __pyx_t_3 = __pyx_t_5;
    __pyx_L7_bool_binop_done:;
    if (__pyx_t_3) {

      /* "scamper.pyx":9209
 *             inst._queued -= 1
 *             if inst._eof and inst._queued == 0 and self._eofcb is not None:
 *                 self._eofcb(self, inst, self._param)             # <<<<<<<<<<<<<<
 * 
 *             if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_v_self->_eofcb);
      __pyx_t_6 = __pyx_v_self->_eofcb; 
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (likely(PyMethod_Check(__pyx_t_6))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_6);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[4] = {__pyx_t_1, ((PyObject *)__pyx_v_self), __pyx_v_inst, __pyx_v_self->_param};
        __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (4-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9209, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
      }
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

      /* "scamper.pyx":9208
 *             o = onion._data
 *             inst._queued -= 1
 *             if inst._eof and inst._queued == 0 and self._eofcb is not None:             # <<<<<<<<<<<<<<
 *                 self._eofcb(self, inst, self._param)
 * 
*/
    }

    /* "scamper.pyx":9211
 *                 self._eofcb(self, inst, self._param)
 * 
 *             if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):             # <<<<<<<<<<<<<<
 *                 return o
 * 
*/
    if (!__pyx_v_self->_meta) {
    } else {
      __pyx_t_3 = __pyx_v_self->_meta;
      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_8 = __Pyx_TypeCheck(__pyx_v_o, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperList); 
    if (!__pyx_t_8) {
    } else {
      __pyx_t_5 = __pyx_t_8;
      goto __pyx_L13_bool_binop_done;
    }
    __pyx_t_8 = __Pyx_TypeCheck(__pyx_v_o, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperCycle); 
    __pyx_t_5 = __pyx_t_8;
    __pyx_L13_bool_binop_done:;
    __pyx_t_8 = (!__pyx_t_5);
    __pyx_t_3 = __pyx_t_8;
    __pyx_L11_bool_binop_done:;
    if (__pyx_t_3) {

      /* "scamper.pyx":9212
 * 
 *             if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):
 *                 return o             # <<<<<<<<<<<<<<
 * 
 *         if timeout is not None and until is not None:
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_o);
      __pyx_r = __pyx_v_o;
      goto __pyx_L0;

      /* "scamper.pyx":9211
 *                 self._eofcb(self, inst, self._param)
 * 
 *             if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):             # <<<<<<<<<<<<<<
 *                 return o
 * 
*/
    }
  }

  /* "scamper.pyx":9214
 *                 return o
 * 
 *         if timeout is not None and until is not None:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot provide both timeout and until parameters")
 * 
*/
  __pyx_t_8 = (__pyx_v_timeout != Py_None);
  if (__pyx_t_8) {
  } else {
    __pyx_t_3 = __pyx_t_8;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_8 = (__pyx_v_until != Py_None);
  __pyx_t_3 = __pyx_t_8;
  __pyx_L16_bool_binop_done:;
  if (unlikely(__pyx_t_3)) {

    /* "scamper.pyx":9215
 * 
 *         if timeout is not None and until is not None:
 *             raise ValueError("cannot provide both timeout and until parameters")             # <<<<<<<<<<<<<<
 * 
 *         if timeout is not None:
*/
    __pyx_t_6 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_1 = __pyx_builtin_ValueError; 
    __pyx_t_7 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_cannot_provide_both_timeout_and};
      __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9215, __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_ERR(0, 9215, __pyx_L1_error)

    /* "scamper.pyx":9214
 *                 return o
 * 
 *         if timeout is not None and until is not None:             # <<<<<<<<<<<<<<
 *             raise ValueError("cannot provide both timeout and until parameters")
 * 
*/
  }

  /* "scamper.pyx":9217
 *             raise ValueError("cannot provide both timeout and until parameters")
 * 
 *         if timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(timeout, datetime.timedelta):
 *                 timeout = datetime.timedelta(seconds=timeout)
*/
  __pyx_t_3 = (__pyx_v_timeout != Py_None);
  if (__pyx_t_3) {

    /* "scamper.pyx":9218
 * 
 *         if timeout is not None:
 *             if not isinstance(timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 timeout = datetime.timedelta(seconds=timeout)
 *             u = datetime.datetime.now() + timeout
*/
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9218, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_3 = PyObject_IsInstance(__pyx_v_timeout, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 9218, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = (!__pyx_t_3);
    if (__pyx_t_8) {

      /* "scamper.pyx":9219
 *         if timeout is not None:
 *             if not isinstance(timeout, datetime.timedelta):
 *                 timeout = datetime.timedelta(seconds=timeout)             # <<<<<<<<<<<<<<
 *             u = datetime.datetime.now() + timeout
 *             tv_ptr = &tv
*/
      __pyx_t_4 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9219, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9219, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_9))) {
        __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_9);
        assert(__pyx_t_4);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_9);
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_9, __pyx__function);
        __pyx_t_7 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, NULL};
        __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9219, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_timeout, __pyx_t_6, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9219, __pyx_L1_error)
        __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_9, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9219, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF_SET(__pyx_v_timeout, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "scamper.pyx":9218
 * 
 *         if timeout is not None:
 *             if not isinstance(timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 timeout = datetime.timedelta(seconds=timeout)
 *             u = datetime.datetime.now() + timeout
*/
    }

    /* "scamper.pyx":9220
 *             if not isinstance(timeout, datetime.timedelta):
 *                 timeout = datetime.timedelta(seconds=timeout)
 *             u = datetime.datetime.now() + timeout             # <<<<<<<<<<<<<<
 *             tv_ptr = &tv
 *         elif until is not None:
*/
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_9 = __pyx_t_4;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_now, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9220, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_v_timeout); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9220, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_u = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "scamper.pyx":9221
 *                 timeout = datetime.timedelta(seconds=timeout)
 *             u = datetime.datetime.now() + timeout
 *             tv_ptr = &tv             # <<<<<<<<<<<<<<
 *         elif until is not None:
 *             if not isinstance(until, datetime.datetime):
*/
    __pyx_v_tv_ptr = (&__pyx_v_tv);

    /* "scamper.pyx":9217
 *             raise ValueError("cannot provide both timeout and until parameters")
 * 
 *         if timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(timeout, datetime.timedelta):
 *                 timeout = datetime.timedelta(seconds=timeout)
*/
    goto __pyx_L18;
  }

  /* "scamper.pyx":9222
 *             u = datetime.datetime.now() + timeout
 *             tv_ptr = &tv
 *         elif until is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(until, datetime.datetime):
 *                 raise TypeError("until is not a datetime")
*/
  __pyx_t_8 = (__pyx_v_until != Py_None);
  if (__pyx_t_8) {

    /* "scamper.pyx":9223
 *             tv_ptr = &tv
 *         elif until is not None:
 *             if not isinstance(until, datetime.datetime):             # <<<<<<<<<<<<<<
 *                 raise TypeError("until is not a datetime")
 *             u = until
*/
    __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9223, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_8 = PyObject_IsInstance(__pyx_v_until, __pyx_t_1); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 9223, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_3 = (!__pyx_t_8);
    if (unlikely(__pyx_t_3)) {

      /* "scamper.pyx":9224
 *         elif until is not None:
 *             if not isinstance(until, datetime.datetime):
 *                 raise TypeError("until is not a datetime")             # <<<<<<<<<<<<<<
 *             u = until
 *             tv_ptr = &tv
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_TypeError);
      __pyx_t_9 = __pyx_builtin_TypeError; 
      __pyx_t_7 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_until_is_not_a_datetime};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9224, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9224, __pyx_L1_error)

      /* "scamper.pyx":9223
 *             tv_ptr = &tv
 *         elif until is not None:
 *             if not isinstance(until, datetime.datetime):             # <<<<<<<<<<<<<<
 *                 raise TypeError("until is not a datetime")
 *             u = until
*/
    }

    /* "scamper.pyx":9225
 *             if not isinstance(until, datetime.datetime):
 *                 raise TypeError("until is not a datetime")
 *             u = until             # <<<<<<<<<<<<<<
 *             tv_ptr = &tv
 *         else:
*/
    __Pyx_INCREF(__pyx_v_until);
    __pyx_v_u = __pyx_v_until;

    /* "scamper.pyx":9226
 *                 raise TypeError("until is not a datetime")
 *             u = until
 *             tv_ptr = &tv             # <<<<<<<<<<<<<<
 *         else:
 *             u = None
*/
    __pyx_v_tv_ptr = (&__pyx_v_tv);

    /* "scamper.pyx":9222
 *             u = datetime.datetime.now() + timeout
 *             tv_ptr = &tv
 *         elif until is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(until, datetime.datetime):
 *                 raise TypeError("until is not a datetime")
*/
    goto __pyx_L18;
  }

  /* "scamper.pyx":9228
 *             tv_ptr = &tv
 *         else:
 *             u = None             # <<<<<<<<<<<<<<
 * 
 *         while 1:
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __pyx_v_u = Py_None;
  }
  __pyx_L18:;

  /* "scamper.pyx":9230
 *             u = None
 * 
 *         while 1:             # <<<<<<<<<<<<<<
 *             if len(self._exceptions) > 0:
 *                 raise self._exceptions.pop(0)
*/
  while (1) {

    /* "scamper.pyx":9231
 * 
 *         while 1:
 *             if len(self._exceptions) > 0:             # <<<<<<<<<<<<<<
 *                 raise self._exceptions.pop(0)
 *             while len(self._objs) > 0:
*/
    __pyx_t_1 = __pyx_v_self->_exceptions;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9231, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_3 = (__pyx_t_2 > 0);
    if (unlikely(__pyx_t_3)) {

      /* "scamper.pyx":9232
 *         while 1:
 *             if len(self._exceptions) > 0:
 *                 raise self._exceptions.pop(0)             # <<<<<<<<<<<<<<
 *             while len(self._objs) > 0:
 *                 onion = self._objs.pop(0)
*/
      __pyx_t_1 = __Pyx_PyObject_PopIndex(__pyx_v_self->_exceptions, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9232, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9232, __pyx_L1_error)

      /* "scamper.pyx":9231
 * 
 *         while 1:
 *             if len(self._exceptions) > 0:             # <<<<<<<<<<<<<<
 *                 raise self._exceptions.pop(0)
 *             while len(self._objs) > 0:
*/
    }

    /* "scamper.pyx":9233
 *             if len(self._exceptions) > 0:
 *                 raise self._exceptions.pop(0)
 *             while len(self._objs) > 0:             # <<<<<<<<<<<<<<
 *                 onion = self._objs.pop(0)
 *                 inst = onion._inst
*/
    while (1) {
      __pyx_t_1 = __pyx_v_self->_objs;
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9233, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_3 = (__pyx_t_2 > 0);
      if (!__pyx_t_3) break;

      /* "scamper.pyx":9234
 *                 raise self._exceptions.pop(0)
 *             while len(self._objs) > 0:
 *                 onion = self._objs.pop(0)             # <<<<<<<<<<<<<<
 *                 inst = onion._inst
 *                 o = onion._data
*/
      __pyx_t_1 = __Pyx_PyObject_PopIndex(__pyx_v_self->_objs, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9234, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_onion, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "scamper.pyx":9235
 *             while len(self._objs) > 0:
 *                 onion = self._objs.pop(0)
 *                 inst = onion._inst             # <<<<<<<<<<<<<<
 *                 o = onion._data
 *                 inst._queued -= 1
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_onion, __pyx_mstate_global->__pyx_n_u_inst_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9235, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_inst, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "scamper.pyx":9236
 *                 onion = self._objs.pop(0)
 *                 inst = onion._inst
 *                 o = onion._data             # <<<<<<<<<<<<<<
 *                 inst._queued -= 1
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_onion, __pyx_mstate_global->__pyx_n_u_data_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9236, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_XDECREF_SET(__pyx_v_o, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "scamper.pyx":9237
 *                 inst = onion._inst
 *                 o = onion._data
 *                 inst._queued -= 1             # <<<<<<<<<<<<<<
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:
 *                     self._eofcb(self, inst, self._param)
*/
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_queued); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = __Pyx_PyLong_SubtractObjC(__pyx_t_1, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9237, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (__Pyx_PyObject_SetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_queued, __pyx_t_9) < 0) __PYX_ERR(0, 9237, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "scamper.pyx":9238
 *                 o = onion._data
 *                 inst._queued -= 1
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:             # <<<<<<<<<<<<<<
 *                     self._eofcb(self, inst, self._param)
 * 
*/
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_eof); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9238, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 9238, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (__pyx_t_8) {
      } else {
        __pyx_t_3 = __pyx_t_8;
        goto __pyx_L27_bool_binop_done;
      }
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_queued); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9238, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_8 = (__Pyx_PyLong_BoolEqObjC(__pyx_t_9, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 9238, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (__pyx_t_8) {
      } else {
        __pyx_t_3 = __pyx_t_8;
        goto __pyx_L27_bool_binop_done;
      }
      __pyx_t_8 = (__pyx_v_self->_eofcb != Py_None);
      __pyx_t_3 = __pyx_t_8;
      __pyx_L27_bool_binop_done:;
      if (__pyx_t_3) {

        /* "scamper.pyx":9239
 *                 inst._queued -= 1
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:
 *                     self._eofcb(self, inst, self._param)             # <<<<<<<<<<<<<<
 * 
 *                 if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):
*/
        __pyx_t_1 = NULL;
        __Pyx_INCREF(__pyx_v_self->_eofcb);
        __pyx_t_4 = __pyx_v_self->_eofcb; 
        __pyx_t_7 = 1;
        #if CYTHON_UNPACK_METHODS
        if (likely(PyMethod_Check(__pyx_t_4))) {
          __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_4);
          assert(__pyx_t_1);
          PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_4);
          __Pyx_INCREF(__pyx_t_1);
          __Pyx_INCREF(__pyx__function);
          __Pyx_DECREF_SET(__pyx_t_4, __pyx__function);
          __pyx_t_7 = 0;
        }
        #endif
        {
          PyObject *__pyx_callargs[4] = {__pyx_t_1, ((PyObject *)__pyx_v_self), __pyx_v_inst, __pyx_v_self->_param};
          __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_7, (4-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9239, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_9);
        }
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

        /* "scamper.pyx":9238
 *                 o = onion._data
 *                 inst._queued -= 1
 *                 if inst._eof and inst._queued == 0 and self._eofcb is not None:             # <<<<<<<<<<<<<<
 *                     self._eofcb(self, inst, self._param)
 * 
*/
      }

      /* "scamper.pyx":9241
 *                     self._eofcb(self, inst, self._param)
 * 
 *                 if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):             # <<<<<<<<<<<<<<
 *                     return o
 * 
*/
      if (!__pyx_v_self->_meta) {
      } else {
        __pyx_t_3 = __pyx_v_self->_meta;
        goto __pyx_L31_bool_binop_done;
      }
      __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_o, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperList); 
      if (!__pyx_t_5) {
      } else {
        __pyx_t_8 = __pyx_t_5;
        goto __pyx_L33_bool_binop_done;
      }
      __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_o, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperCycle); 
      __pyx_t_8 = __pyx_t_5;
      __pyx_L33_bool_binop_done:;
      __pyx_t_5 = (!__pyx_t_8);
      __pyx_t_3 = __pyx_t_5;
      __pyx_L31_bool_binop_done:;
      if (__pyx_t_3) {

        /* "scamper.pyx":9242
 * 
 *                 if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):
 *                     return o             # <<<<<<<<<<<<<<
 * 
 *             # handle any signals (e.g. KeyboardInterrupt)
*/
        __Pyx_XDECREF(__pyx_r);
        __Pyx_INCREF(__pyx_v_o);
        __pyx_r = __pyx_v_o;
        goto __pyx_L0;

        /* "scamper.pyx":9241
 *                     self._eofcb(self, inst, self._param)
 * 
 *                 if self._meta or not isinstance(o, (ScamperList, ScamperCycle)):             # <<<<<<<<<<<<<<
 *                     return o
 * 
*/
      }
    }

    /* "scamper.pyx":9245
 * 
 *             # handle any signals (e.g. KeyboardInterrupt)
 *             PyErr_CheckSignals()             # <<<<<<<<<<<<<<
 * 
 *             if self.is_done():
*/
    __pyx_t_10 = PyErr_CheckSignals(); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 9245, __pyx_L1_error)

    /* "scamper.pyx":9247
 *             PyErr_CheckSignals()
 * 
 *             if self.is_done():             # <<<<<<<<<<<<<<
 *                 return None
 * 
*/
    __pyx_t_4 = ((PyObject *)__pyx_v_self);
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_7 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
      __pyx_t_9 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_is_done, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9247, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
    }
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 9247, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (__pyx_t_3) {

      /* "scamper.pyx":9248
 * 
 *             if self.is_done():
 *                 return None             # <<<<<<<<<<<<<<
 * 
 *             # set a timeout based on when the wait is expected to return
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_r = Py_None; __Pyx_INCREF(Py_None);
      goto __pyx_L0;

      /* "scamper.pyx":9247
 *             PyErr_CheckSignals()
 * 
 *             if self.is_done():             # <<<<<<<<<<<<<<
 *                 return None
 * 
*/
    }

    /* "scamper.pyx":9251
 * 
 *             # set a timeout based on when the wait is expected to return
 *             if u is not None:             # <<<<<<<<<<<<<<
 *                 now = datetime.datetime.now()
 *                 if u < now:
*/
    __pyx_t_3 = (__pyx_v_u != Py_None);
    if (__pyx_t_3) {

      /* "scamper.pyx":9252
 *             # set a timeout based on when the wait is expected to return
 *             if u is not None:
 *                 now = datetime.datetime.now()             # <<<<<<<<<<<<<<
 *                 if u < now:
 *                     break
*/
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9252, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9252, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = __pyx_t_6;
      __Pyx_INCREF(__pyx_t_4);
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
        __pyx_t_9 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_now, __pyx_callargs+__pyx_t_7, (1-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9252, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
      }
      __Pyx_XDECREF_SET(__pyx_v_now, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "scamper.pyx":9253
 *             if u is not None:
 *                 now = datetime.datetime.now()
 *                 if u < now:             # <<<<<<<<<<<<<<
 *                     break
 *                 diff = u - now
*/
      __pyx_t_9 = PyObject_RichCompare(__pyx_v_u, __pyx_v_now, Py_LT); __Pyx_XGOTREF(__pyx_t_9); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9253, __pyx_L1_error)
      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely((__pyx_t_3 < 0))) __PYX_ERR(0, 9253, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (__pyx_t_3) {

        /* "scamper.pyx":9254
 *                 now = datetime.datetime.now()
 *                 if u < now:
 *                     break             # <<<<<<<<<<<<<<
 *                 diff = u - now
 *                 tv.tv_sec = diff.seconds
*/
        goto __pyx_L22_break;

        /* "scamper.pyx":9253
 *             if u is not None:
 *                 now = datetime.datetime.now()
 *                 if u < now:             # <<<<<<<<<<<<<<
 *                     break
 *                 diff = u - now
*/
      }

      /* "scamper.pyx":9255
 *                 if u < now:
 *                     break
 *                 diff = u - now             # <<<<<<<<<<<<<<
 *                 tv.tv_sec = diff.seconds
 *                 tv.tv_usec = diff.microseconds
*/
      __pyx_t_9 = PyNumber_Subtract(__pyx_v_u, __pyx_v_now); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9255, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_XDECREF_SET(__pyx_v_diff, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "scamper.pyx":9256
 *                     break
 *                 diff = u - now
 *                 tv.tv_sec = diff.seconds             # <<<<<<<<<<<<<<
 *                 tv.tv_usec = diff.microseconds
 * 
*/
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_diff, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9256, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_11 = __Pyx_PyLong_As_time_t(__pyx_t_9); if (unlikely((__pyx_t_11 == ((time_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9256, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_v_tv.tv_sec = __pyx_t_11;

      /* "scamper.pyx":9257
 *                 diff = u - now
 *                 tv.tv_sec = diff.seconds
 *                 tv.tv_usec = diff.microseconds             # <<<<<<<<<<<<<<
 * 
 *             clibscamperctrl.scamper_ctrl_wait(self._c, tv_ptr)
*/
      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_diff, __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9257, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_12 = __Pyx_PyLong_As_suseconds_t(__pyx_t_9); if (unlikely((__pyx_t_12 == ((suseconds_t)-1)) && PyErr_Occurred())) __PYX_ERR(0, 9257, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_v_tv.tv_usec = __pyx_t_12;

      /* "scamper.pyx":9251
 * 
 *             # set a timeout based on when the wait is expected to return
 *             if u is not None:             # <<<<<<<<<<<<<<
 *                 now = datetime.datetime.now()
 *                 if u < now:
*/
    }

    /* "scamper.pyx":9259
 *                 tv.tv_usec = diff.microseconds
 * 
 *             clibscamperctrl.scamper_ctrl_wait(self._c, tv_ptr)             # <<<<<<<<<<<<<<
 * 
 *         return None
*/
    (void)(scamper_ctrl_wait(__pyx_v_self->_c, __pyx_v_tv_ptr));
  }
  __pyx_L22_break:;

  /* "scamper.pyx":9261
 *             clibscamperctrl.scamper_ctrl_wait(self._c, tv_ptr)
 * 
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     def done(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":9180
 *             clibscamperctrl.scamper_ctrl_wait(self._c, tv_ptr)
 * 
 *     def poll(self, timeout=None, until=None):             # <<<<<<<<<<<<<<
 *         """
 *         poll(timeout=None, until=None)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("scamper.ScamperCtrl.poll", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_onion);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XDECREF(__pyx_v_o);
  __Pyx_XDECREF(__pyx_v_u);
  __Pyx_XDECREF(__pyx_v_now);
  __Pyx_XDECREF(__pyx_v_diff);
  __Pyx_XDECREF(__pyx_v_timeout);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9263
 *         return None
 * 
 *     def done(self):             # <<<<<<<<<<<<<<
 *         """
 *         signal done on all instances.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_31done(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_30done, "\n        signal done on all instances.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_31done = {"done", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_31done, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_30done};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_31done(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("done (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("done", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("done", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_30done(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_30done(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("done", 0);

  /* "scamper.pyx":9267
 *         signal done on all instances.
 *         """
 *         for i in self._insts:             # <<<<<<<<<<<<<<
 *             i.done()
 * 
*/
  if (likely(PyList_CheckExact(__pyx_v_self->_insts)) || PyTuple_CheckExact(__pyx_v_self->_insts)) {
    __pyx_t_1 = __pyx_v_self->_insts; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->_insts); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9267, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9267, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9267, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRef(__pyx_t_1, __pyx_t_2);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9267, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9267, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 9267, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "scamper.pyx":9268
 *         """
 *         for i in self._insts:
 *             i.done()             # <<<<<<<<<<<<<<
 * 
 *     def vps(self):
*/
    __pyx_t_5 = __pyx_v_i;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_done, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9268, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "scamper.pyx":9267
 *         signal done on all instances.
 *         """
 *         for i in self._insts:             # <<<<<<<<<<<<<<
 *             i.done()
 * 
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":9263
 *         return None
 * 
 *     def done(self):             # <<<<<<<<<<<<<<
 *         """
 *         signal done on all instances.
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperCtrl.done", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9270
 *             i.done()
 * 
 *     def vps(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a list of vantage points available to this
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_33vps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_32vps, "\n        get method that returns a list of vantage points available to this\n        :class:`ScamperCtrl` object.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_33vps = {"vps", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_33vps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_32vps};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_33vps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vps (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("vps", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("vps", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_32vps(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_32vps(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_v_vps = NULL;
  PyObject *__pyx_v_u = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *(*__pyx_t_3)(PyObject *);
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("vps", 0);

  /* "scamper.pyx":9275
 *         :class:`ScamperCtrl` object.
 *         """
 *         vps = []             # <<<<<<<<<<<<<<
 *         for u in self._muxs:
 *             vps.extend(u.vps())
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9275, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vps = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9276
 *         """
 *         vps = []
 *         for u in self._muxs:             # <<<<<<<<<<<<<<
 *             vps.extend(u.vps())
 *         return vps
*/
  if (likely(PyList_CheckExact(__pyx_v_self->_muxs)) || PyTuple_CheckExact(__pyx_v_self->_muxs)) {
    __pyx_t_1 = __pyx_v_self->_muxs; __Pyx_INCREF(__pyx_t_1);
    __pyx_t_2 = 0;
    __pyx_t_3 = NULL;
  } else {
    __pyx_t_2 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_self->_muxs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9276, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9276, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_3)) {
      if (likely(PyList_CheckExact(__pyx_t_1))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9276, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        __pyx_t_4 = __Pyx_PyList_GetItemRef(__pyx_t_1, __pyx_t_2);
        ++__pyx_t_2;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9276, __pyx_L1_error)
          #endif
          if (__pyx_t_2 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
        #else
        __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
        #endif
        ++__pyx_t_2;
      }
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9276, __pyx_L1_error)
    } else {
      __pyx_t_4 = __pyx_t_3(__pyx_t_1);
      if (unlikely(!__pyx_t_4)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 9276, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_XDECREF_SET(__pyx_v_u, __pyx_t_4);
    __pyx_t_4 = 0;

    /* "scamper.pyx":9277
 *         vps = []
 *         for u in self._muxs:
 *             vps.extend(u.vps())             # <<<<<<<<<<<<<<
 *         return vps
 * 
*/
    __pyx_t_5 = __pyx_v_u;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_6 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_4 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_vps, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9277, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_4);
    }
    __pyx_t_7 = __Pyx_PyList_Extend(__pyx_v_vps, __pyx_t_4); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 9277, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "scamper.pyx":9276
 *         """
 *         vps = []
 *         for u in self._muxs:             # <<<<<<<<<<<<<<
 *             vps.extend(u.vps())
 *         return vps
*/
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":9278
 *         for u in self._muxs:
 *             vps.extend(u.vps())
 *         return vps             # <<<<<<<<<<<<<<
 * 
 *     def instances(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vps);
  __pyx_r = __pyx_v_vps;
  goto __pyx_L0;

  /* "scamper.pyx":9270
 *             i.done()
 * 
 *     def vps(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a list of vantage points available to this
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperCtrl.vps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vps);
  __Pyx_XDECREF(__pyx_v_u);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9280
 *         return vps
 * 
 *     def instances(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a list of :class:`ScamperInst` managed by
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_35instances(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_34instances, "\n        get method that returns a list of :class:`ScamperInst` managed by\n        this :class:`ScamperCtrl` object.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_35instances = {"instances", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_35instances, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_34instances};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_35instances(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("instances (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("instances", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("instances", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_34instances(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_34instances(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("instances", 0);

  /* "scamper.pyx":9285
 *         this :class:`ScamperCtrl` object.
 *         """
 *         return self._insts             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_insts);
  __pyx_r = __pyx_v_self->_insts;
  goto __pyx_L0;

  /* "scamper.pyx":9280
 *         return vps
 * 
 *     def instances(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a list of :class:`ScamperInst` managed by
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9287
 *         return self._insts
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def param(self):
 *         return self._param
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_5param_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_5param_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_5param___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_5param___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":9289
 *     @property
 *     def param(self):
 *         return self._param             # <<<<<<<<<<<<<<
 * 
 *     @param.setter
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_param);
  __pyx_r = __pyx_v_self->_param;
  goto __pyx_L0;

  /* "scamper.pyx":9287
 *         return self._insts
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def param(self):
 *         return self._param
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9291
 *         return self._param
 * 
 *     @param.setter             # <<<<<<<<<<<<<<
 *     def param(self, param):
 *         self._param = param
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_5param_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_param); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_5param_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_param) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_5param_2__set__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), ((PyObject *)__pyx_v_param));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_5param_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_param) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "scamper.pyx":9293
 *     @param.setter
 *     def param(self, param):
 *         self._param = param             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_INCREF(__pyx_v_param);
  __Pyx_GIVEREF(__pyx_v_param);
  __Pyx_GOTREF(__pyx_v_self->_param);
  __Pyx_DECREF(__pyx_v_self->_param);
  __pyx_v_self->_param = __pyx_v_param;

  /* "scamper.pyx":9291
 *         return self._param
 * 
 *     @param.setter             # <<<<<<<<<<<<<<
 *     def param(self, param):
 *         self._param = param
*/

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9295
 *         self._param = param
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def morecb(self):
 *         return self._morecb
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_6morecb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_6morecb_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_6morecb___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_6morecb___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":9297
 *     @property
 *     def morecb(self):
 *         return self._morecb             # <<<<<<<<<<<<<<
 * 
 *     @morecb.setter
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_morecb);
  __pyx_r = __pyx_v_self->_morecb;
  goto __pyx_L0;

  /* "scamper.pyx":9295
 *         self._param = param
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def morecb(self):
 *         return self._morecb
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9299
 *         return self._morecb
 * 
 *     @morecb.setter             # <<<<<<<<<<<<<<
 *     def morecb(self, morecb):
 *         self._morecb = morecb
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_6morecb_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_morecb); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_6morecb_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_morecb) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_6morecb_2__set__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), ((PyObject *)__pyx_v_morecb));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_6morecb_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_morecb) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "scamper.pyx":9301
 *     @morecb.setter
 *     def morecb(self, morecb):
 *         self._morecb = morecb             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_INCREF(__pyx_v_morecb);
  __Pyx_GIVEREF(__pyx_v_morecb);
  __Pyx_GOTREF(__pyx_v_self->_morecb);
  __Pyx_DECREF(__pyx_v_self->_morecb);
  __pyx_v_self->_morecb = __pyx_v_morecb;

  /* "scamper.pyx":9299
 *         return self._morecb
 * 
 *     @morecb.setter             # <<<<<<<<<<<<<<
 *     def morecb(self, morecb):
 *         self._morecb = morecb
*/

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9303
 *         self._morecb = morecb
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def eofcb(self):
 *         return self._eofcb
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_5eofcb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_5eofcb_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_5eofcb___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_5eofcb___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":9305
 *     @property
 *     def eofcb(self):
 *         return self._eofcb             # <<<<<<<<<<<<<<
 * 
 *     @eofcb.setter
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_eofcb);
  __pyx_r = __pyx_v_self->_eofcb;
  goto __pyx_L0;

  /* "scamper.pyx":9303
 *         self._morecb = morecb
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def eofcb(self):
 *         return self._eofcb
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9307
 *         return self._eofcb
 * 
 *     @eofcb.setter             # <<<<<<<<<<<<<<
 *     def eofcb(self, eofcb):
 *         self._eofcb = eofcb
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_5eofcb_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_eofcb); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_5eofcb_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_eofcb) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_5eofcb_2__set__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), ((PyObject *)__pyx_v_eofcb));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_5eofcb_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_eofcb) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "scamper.pyx":9309
 *     @eofcb.setter
 *     def eofcb(self, eofcb):
 *         self._eofcb = eofcb             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_INCREF(__pyx_v_eofcb);
  __Pyx_GIVEREF(__pyx_v_eofcb);
  __Pyx_GOTREF(__pyx_v_self->_eofcb);
  __Pyx_DECREF(__pyx_v_self->_eofcb);
  __pyx_v_self->_eofcb = __pyx_v_eofcb;

  /* "scamper.pyx":9307
 *         return self._eofcb
 * 
 *     @eofcb.setter             # <<<<<<<<<<<<<<
 *     def eofcb(self, eofcb):
 *         self._eofcb = eofcb
*/

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9311
 *         self._eofcb = eofcb
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def outfile(self):
 *         return self._outfile
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_7outfile_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_7outfile_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_7outfile___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_7outfile___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":9313
 *     @property
 *     def outfile(self):
 *         return self._outfile             # <<<<<<<<<<<<<<
 * 
 *     @outfile.setter
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_outfile);
  __pyx_r = __pyx_v_self->_outfile;
  goto __pyx_L0;

  /* "scamper.pyx":9311
 *         self._eofcb = eofcb
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def outfile(self):
 *         return self._outfile
*/

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9315
 *         return self._outfile
 * 
 *     @outfile.setter             # <<<<<<<<<<<<<<
 *     def outfile(self, outfile):
 *         self._outfile = outfile
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_7outfile_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_outfile); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_7outfile_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_outfile) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_7outfile_2__set__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), ((PyObject *)__pyx_v_outfile));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_7outfile_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_outfile) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "scamper.pyx":9317
 *     @outfile.setter
 *     def outfile(self, outfile):
 *         self._outfile = outfile             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_INCREF(__pyx_v_outfile);
  __Pyx_GIVEREF(__pyx_v_outfile);
  __Pyx_GOTREF(__pyx_v_self->_outfile);
  __Pyx_DECREF(__pyx_v_self->_outfile);
  __pyx_v_self->_outfile = __pyx_v_outfile;

  /* "scamper.pyx":9315
 *         return self._outfile
 * 
 *     @outfile.setter             # <<<<<<<<<<<<<<
 *     def outfile(self, outfile):
 *         self._outfile = outfile
*/

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9319
 *         self._outfile = outfile
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def taskc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_5taskc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_5taskc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_5taskc___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_5taskc___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":9325
 *         for this :class:`ScamperCtrl` object.
 *         """
 *         return len(self._tasks)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_v_self->_tasks;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9325, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyLong_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9325, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":9319
 *         self._outfile = outfile
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def taskc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperCtrl.taskc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9327
 *         return len(self._tasks)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def instc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_5instc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_5instc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_5instc___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_5instc___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":9333
 *         this :class:`ScamperCtrl` object.
 *         """
 *         return len(self._insts)             # <<<<<<<<<<<<<<
 * 
 *     def _getinst(self, inst, primitive, sync, listallowed=True):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_v_self->_insts;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9333, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyLong_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9333, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":9327
 *         return len(self._tasks)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def instc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperCtrl.instc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9335
 *         return len(self._insts)
 * 
 *     def _getinst(self, inst, primitive, sync, listallowed=True):             # <<<<<<<<<<<<<<
 *         if inst is not None:
 *             if isinstance(inst, list):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_37_getinst(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_37_getinst = {"_getinst", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_37_getinst, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_37_getinst(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_inst = 0;
  CYTHON_UNUSED PyObject *__pyx_v_primitive = 0;
  PyObject *__pyx_v_sync = 0;
  PyObject *__pyx_v_listallowed = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_getinst (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_primitive,&__pyx_mstate_global->__pyx_n_u_sync,&__pyx_mstate_global->__pyx_n_u_listallowed,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9335, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9335, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9335, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9335, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9335, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_getinst", 0) < 0) __PYX_ERR(0, 9335, __pyx_L3_error)
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_True));
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_getinst", 0, 3, 4, i); __PYX_ERR(0, 9335, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9335, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9335, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9335, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9335, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_True));
    }
    __pyx_v_inst = values[0];
    __pyx_v_primitive = values[1];
    __pyx_v_sync = values[2];
    __pyx_v_listallowed = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_getinst", 0, 3, 4, __pyx_nargs); __PYX_ERR(0, 9335, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl._getinst", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_36_getinst(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_inst, __pyx_v_primitive, __pyx_v_sync, __pyx_v_listallowed);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_36_getinst(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_inst, CYTHON_UNUSED PyObject *__pyx_v_primitive, PyObject *__pyx_v_sync, PyObject *__pyx_v_listallowed) {
  PyObject *__pyx_v_out = NULL;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  int __pyx_t_10;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_getinst", 0);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":9336
 * 
 *     def _getinst(self, inst, primitive, sync, listallowed=True):
 *         if inst is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(inst, list):
 *                 if not listallowed:
*/
  __pyx_t_1 = (__pyx_v_inst != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":9337
 *     def _getinst(self, inst, primitive, sync, listallowed=True):
 *         if inst is not None:
 *             if isinstance(inst, list):             # <<<<<<<<<<<<<<
 *                 if not listallowed:
 *                     raise RuntimeError("list not allowed with {primitive}")
*/
    __pyx_t_1 = PyList_Check(__pyx_v_inst); 
    if (__pyx_t_1) {

      /* "scamper.pyx":9338
 *         if inst is not None:
 *             if isinstance(inst, list):
 *                 if not listallowed:             # <<<<<<<<<<<<<<
 *                     raise RuntimeError("list not allowed with {primitive}")
 *                 if sync is True:
*/
      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_listallowed); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 9338, __pyx_L1_error)
      __pyx_t_2 = (!__pyx_t_1);
      if (unlikely(__pyx_t_2)) {

        /* "scamper.pyx":9339
 *             if isinstance(inst, list):
 *                 if not listallowed:
 *                     raise RuntimeError("list not allowed with {primitive}")             # <<<<<<<<<<<<<<
 *                 if sync is True:
 *                     raise RuntimeError("cannot run synchronous measurements with list")
*/
        __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_builtin_RuntimeError);
        __pyx_t_5 = __pyx_builtin_RuntimeError; 
        __pyx_t_6 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_list_not_allowed_with_primitive};
          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9339, __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_ERR(0, 9339, __pyx_L1_error)

        /* "scamper.pyx":9338
 *         if inst is not None:
 *             if isinstance(inst, list):
 *                 if not listallowed:             # <<<<<<<<<<<<<<
 *                     raise RuntimeError("list not allowed with {primitive}")
 *                 if sync is True:
*/
      }

      /* "scamper.pyx":9340
 *                 if not listallowed:
 *                     raise RuntimeError("list not allowed with {primitive}")
 *                 if sync is True:             # <<<<<<<<<<<<<<
 *                     raise RuntimeError("cannot run synchronous measurements with list")
 *                 out = []
*/
      __pyx_t_2 = (__pyx_v_sync == Py_True);
      if (unlikely(__pyx_t_2)) {

        /* "scamper.pyx":9341
 *                     raise RuntimeError("list not allowed with {primitive}")
 *                 if sync is True:
 *                     raise RuntimeError("cannot run synchronous measurements with list")             # <<<<<<<<<<<<<<
 *                 out = []
 *                 for i in inst:
*/
        __pyx_t_5 = NULL;
        __Pyx_INCREF(__pyx_builtin_RuntimeError);
        __pyx_t_4 = __pyx_builtin_RuntimeError; 
        __pyx_t_6 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_cannot_run_synchronous_measureme};
          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
          __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9341, __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_ERR(0, 9341, __pyx_L1_error)

        /* "scamper.pyx":9340
 *                 if not listallowed:
 *                     raise RuntimeError("list not allowed with {primitive}")
 *                 if sync is True:             # <<<<<<<<<<<<<<
 *                     raise RuntimeError("cannot run synchronous measurements with list")
 *                 out = []
*/
      }

      /* "scamper.pyx":9342
 *                 if sync is True:
 *                     raise RuntimeError("cannot run synchronous measurements with list")
 *                 out = []             # <<<<<<<<<<<<<<
 *                 for i in inst:
 *                     if not isinstance(i, ScamperInst):
*/
      __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9342, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_v_out = ((PyObject*)__pyx_t_3);
      __pyx_t_3 = 0;

      /* "scamper.pyx":9343
 *                     raise RuntimeError("cannot run synchronous measurements with list")
 *                 out = []
 *                 for i in inst:             # <<<<<<<<<<<<<<
 *                     if not isinstance(i, ScamperInst):
 *                         raise TypeError("inst list contains non ScamperInst")
*/
      if (likely(PyList_CheckExact(__pyx_v_inst)) || PyTuple_CheckExact(__pyx_v_inst)) {
        __pyx_t_3 = __pyx_v_inst; __Pyx_INCREF(__pyx_t_3);
        __pyx_t_7 = 0;
        __pyx_t_8 = NULL;
      } else {
        __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_v_inst); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9343, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_8 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9343, __pyx_L1_error)
      }
      for (;;) {
        if (likely(!__pyx_t_8)) {
          if (likely(PyList_CheckExact(__pyx_t_3))) {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_3);
              #if !CYTHON_ASSUME_SAFE_SIZE
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9343, __pyx_L1_error)
              #endif
              if (__pyx_t_7 >= __pyx_temp) break;
            }
            __pyx_t_4 = __Pyx_PyList_GetItemRef(__pyx_t_3, __pyx_t_7);
            ++__pyx_t_7;
          } else {
            {
              Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_3);
              #if !CYTHON_ASSUME_SAFE_SIZE
              if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9343, __pyx_L1_error)
              #endif
              if (__pyx_t_7 >= __pyx_temp) break;
            }
            #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
            __pyx_t_4 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7));
            #else
            __pyx_t_4 = __Pyx_PySequence_ITEM(__pyx_t_3, __pyx_t_7);
            #endif
            ++__pyx_t_7;
          }
          if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9343, __pyx_L1_error)
        } else {
          __pyx_t_4 = __pyx_t_8(__pyx_t_3);
          if (unlikely(!__pyx_t_4)) {
            PyObject* exc_type = PyErr_Occurred();
            if (exc_type) {
              if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 9343, __pyx_L1_error)
              PyErr_Clear();
            }
            break;
          }
        }
        __Pyx_GOTREF(__pyx_t_4);
        __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
        __pyx_t_4 = 0;

        /* "scamper.pyx":9344
 *                 out = []
 *                 for i in inst:
 *                     if not isinstance(i, ScamperInst):             # <<<<<<<<<<<<<<
 *                         raise TypeError("inst list contains non ScamperInst")
 *                     if not i._eof:
*/
        __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_i, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst); 
        __pyx_t_1 = (!__pyx_t_2);
        if (unlikely(__pyx_t_1)) {

          /* "scamper.pyx":9345
 *                 for i in inst:
 *                     if not isinstance(i, ScamperInst):
 *                         raise TypeError("inst list contains non ScamperInst")             # <<<<<<<<<<<<<<
 *                     if not i._eof:
 *                         out.append(i)
*/
          __pyx_t_5 = NULL;
          __Pyx_INCREF(__pyx_builtin_TypeError);
          __pyx_t_9 = __pyx_builtin_TypeError; 
          __pyx_t_6 = 1;
          {
            PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_inst_list_contains_non_ScamperIn};
            __pyx_t_4 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
            __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
            __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
            if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9345, __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_ERR(0, 9345, __pyx_L1_error)

          /* "scamper.pyx":9344
 *                 out = []
 *                 for i in inst:
 *                     if not isinstance(i, ScamperInst):             # <<<<<<<<<<<<<<
 *                         raise TypeError("inst list contains non ScamperInst")
 *                     if not i._eof:
*/
        }

        /* "scamper.pyx":9346
 *                     if not isinstance(i, ScamperInst):
 *                         raise TypeError("inst list contains non ScamperInst")
 *                     if not i._eof:             # <<<<<<<<<<<<<<
 *                         out.append(i)
 *                 if len(out) == 0:
*/
        __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_i, __pyx_mstate_global->__pyx_n_u_eof); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 9346, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 9346, __pyx_L1_error)
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_2 = (!__pyx_t_1);
        if (__pyx_t_2) {

          /* "scamper.pyx":9347
 *                         raise TypeError("inst list contains non ScamperInst")
 *                     if not i._eof:
 *                         out.append(i)             # <<<<<<<<<<<<<<
 *                 if len(out) == 0:
 *                     raise RuntimeError("no usable ScamperInst")
*/
          __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_out, __pyx_v_i); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 9347, __pyx_L1_error)

          /* "scamper.pyx":9346
 *                     if not isinstance(i, ScamperInst):
 *                         raise TypeError("inst list contains non ScamperInst")
 *                     if not i._eof:             # <<<<<<<<<<<<<<
 *                         out.append(i)
 *                 if len(out) == 0:
*/
        }

        /* "scamper.pyx":9343
 *                     raise RuntimeError("cannot run synchronous measurements with list")
 *                 out = []
 *                 for i in inst:             # <<<<<<<<<<<<<<
 *                     if not isinstance(i, ScamperInst):
 *                         raise TypeError("inst list contains non ScamperInst")
*/
      }
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "scamper.pyx":9348
 *                     if not i._eof:
 *                         out.append(i)
 *                 if len(out) == 0:             # <<<<<<<<<<<<<<
 *                     raise RuntimeError("no usable ScamperInst")
 *                 return out
*/
      __pyx_t_7 = __Pyx_PyList_GET_SIZE(__pyx_v_out); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9348, __pyx_L1_error)
      __pyx_t_2 = (__pyx_t_7 == 0);
      if (unlikely(__pyx_t_2)) {

        /* "scamper.pyx":9349
 *                         out.append(i)
 *                 if len(out) == 0:
 *                     raise RuntimeError("no usable ScamperInst")             # <<<<<<<<<<<<<<
 *                 return out
 *             elif not isinstance(inst, ScamperInst):
*/
        __pyx_t_4 = NULL;
        __Pyx_INCREF(__pyx_builtin_RuntimeError);
        __pyx_t_9 = __pyx_builtin_RuntimeError; 
        __pyx_t_6 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_no_usable_ScamperInst};
          __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9349, __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_ERR(0, 9349, __pyx_L1_error)

        /* "scamper.pyx":9348
 *                     if not i._eof:
 *                         out.append(i)
 *                 if len(out) == 0:             # <<<<<<<<<<<<<<
 *                     raise RuntimeError("no usable ScamperInst")
 *                 return out
*/
      }

      /* "scamper.pyx":9350
 *                 if len(out) == 0:
 *                     raise RuntimeError("no usable ScamperInst")
 *                 return out             # <<<<<<<<<<<<<<
 *             elif not isinstance(inst, ScamperInst):
 *                 raise TypeError("inst not ScamperInst type")
*/
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(__pyx_v_out);
      __pyx_r = __pyx_v_out;
      goto __pyx_L0;

      /* "scamper.pyx":9337
 *     def _getinst(self, inst, primitive, sync, listallowed=True):
 *         if inst is not None:
 *             if isinstance(inst, list):             # <<<<<<<<<<<<<<
 *                 if not listallowed:
 *                     raise RuntimeError("list not allowed with {primitive}")
*/
    }

    /* "scamper.pyx":9351
 *                     raise RuntimeError("no usable ScamperInst")
 *                 return out
 *             elif not isinstance(inst, ScamperInst):             # <<<<<<<<<<<<<<
 *                 raise TypeError("inst not ScamperInst type")
 *         else:
*/
    __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_inst, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst); 
    __pyx_t_1 = (!__pyx_t_2);
    if (unlikely(__pyx_t_1)) {

      /* "scamper.pyx":9352
 *                 return out
 *             elif not isinstance(inst, ScamperInst):
 *                 raise TypeError("inst not ScamperInst type")             # <<<<<<<<<<<<<<
 *         else:
 *             if len(self._insts) == 0:
*/
      __pyx_t_9 = NULL;
      __Pyx_INCREF(__pyx_builtin_TypeError);
      __pyx_t_4 = __pyx_builtin_TypeError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_inst_not_ScamperInst_type};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9352, __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_ERR(0, 9352, __pyx_L1_error)

      /* "scamper.pyx":9351
 *                     raise RuntimeError("no usable ScamperInst")
 *                 return out
 *             elif not isinstance(inst, ScamperInst):             # <<<<<<<<<<<<<<
 *                 raise TypeError("inst not ScamperInst type")
 *         else:
*/
    }

    /* "scamper.pyx":9336
 * 
 *     def _getinst(self, inst, primitive, sync, listallowed=True):
 *         if inst is not None:             # <<<<<<<<<<<<<<
 *             if isinstance(inst, list):
 *                 if not listallowed:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":9354
 *                 raise TypeError("inst not ScamperInst type")
 *         else:
 *             if len(self._insts) == 0:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("no connected ScamperInst")
 *             elif len(self._insts) != 1:
*/
  /*else*/ {
    __pyx_t_3 = __pyx_v_self->_insts;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9354, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = (__pyx_t_7 == 0);
    if (unlikely(__pyx_t_1)) {

      /* "scamper.pyx":9355
 *         else:
 *             if len(self._insts) == 0:
 *                 raise RuntimeError("no connected ScamperInst")             # <<<<<<<<<<<<<<
 *             elif len(self._insts) != 1:
 *                 raise RuntimeError("specify a ScamperInst")
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_9 = __pyx_builtin_RuntimeError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u_no_connected_ScamperInst};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9355, __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_ERR(0, 9355, __pyx_L1_error)

      /* "scamper.pyx":9354
 *                 raise TypeError("inst not ScamperInst type")
 *         else:
 *             if len(self._insts) == 0:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("no connected ScamperInst")
 *             elif len(self._insts) != 1:
*/
    }

    /* "scamper.pyx":9356
 *             if len(self._insts) == 0:
 *                 raise RuntimeError("no connected ScamperInst")
 *             elif len(self._insts) != 1:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("specify a ScamperInst")
 *             else:
*/
    __pyx_t_3 = __pyx_v_self->_insts;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_7 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9356, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = (__pyx_t_7 != 1);
    if (unlikely(__pyx_t_1)) {

      /* "scamper.pyx":9357
 *                 raise RuntimeError("no connected ScamperInst")
 *             elif len(self._insts) != 1:
 *                 raise RuntimeError("specify a ScamperInst")             # <<<<<<<<<<<<<<
 *             else:
 *                 inst = self._insts[0]
*/
      __pyx_t_9 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_4 = __pyx_builtin_RuntimeError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_specify_a_ScamperInst};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9357, __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_ERR(0, 9357, __pyx_L1_error)

      /* "scamper.pyx":9356
 *             if len(self._insts) == 0:
 *                 raise RuntimeError("no connected ScamperInst")
 *             elif len(self._insts) != 1:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError("specify a ScamperInst")
 *             else:
*/
    }

    /* "scamper.pyx":9359
 *                 raise RuntimeError("specify a ScamperInst")
 *             else:
 *                 inst = self._insts[0]             # <<<<<<<<<<<<<<
 *         if inst._eof:
 *             if inst.name:
*/
    /*else*/ {
      __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_self->_insts, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9359, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_3);
      __pyx_t_3 = 0;
    }
  }
  __pyx_L3:;

  /* "scamper.pyx":9360
 *             else:
 *                 inst = self._insts[0]
 *         if inst._eof:             # <<<<<<<<<<<<<<
 *             if inst.name:
 *                 raise RuntimeError(f"ScamperInst {inst.name} has signalled EOF")
*/
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_eof); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9360, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 9360, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":9361
 *                 inst = self._insts[0]
 *         if inst._eof:
 *             if inst.name:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(f"ScamperInst {inst.name} has signalled EOF")
 *             else:
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9361, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 9361, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(__pyx_t_1)) {

      /* "scamper.pyx":9362
 *         if inst._eof:
 *             if inst.name:
 *                 raise RuntimeError(f"ScamperInst {inst.name} has signalled EOF")             # <<<<<<<<<<<<<<
 *             else:
 *                 raise RuntimeError("ScamperInst has signalled EOF")
*/
      __pyx_t_4 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_9 = __pyx_builtin_RuntimeError; 
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_inst, __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_ScamperInst;
      __pyx_t_12[1] = __pyx_t_11;
      __pyx_t_12[2] = __pyx_mstate_global->__pyx_kp_u_has_signalled_EOF;
      __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_12, 3, 12 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_11) + 18, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_11));
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9362, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_5};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9362, __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_ERR(0, 9362, __pyx_L1_error)

      /* "scamper.pyx":9361
 *                 inst = self._insts[0]
 *         if inst._eof:
 *             if inst.name:             # <<<<<<<<<<<<<<
 *                 raise RuntimeError(f"ScamperInst {inst.name} has signalled EOF")
 *             else:
*/
    }

    /* "scamper.pyx":9364
 *                 raise RuntimeError(f"ScamperInst {inst.name} has signalled EOF")
 *             else:
 *                 raise RuntimeError("ScamperInst has signalled EOF")             # <<<<<<<<<<<<<<
 *         return inst
 * 
*/
    /*else*/ {
      __pyx_t_9 = NULL;
      __Pyx_INCREF(__pyx_builtin_RuntimeError);
      __pyx_t_5 = __pyx_builtin_RuntimeError; 
      __pyx_t_6 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_kp_u_ScamperInst_has_signalled_EOF};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_6, (2-__pyx_t_6) | (__pyx_t_6*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9364, __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_ERR(0, 9364, __pyx_L1_error)
    }

    /* "scamper.pyx":9360
 *             else:
 *                 inst = self._insts[0]
 *         if inst._eof:             # <<<<<<<<<<<<<<
 *             if inst.name:
 *                 raise RuntimeError(f"ScamperInst {inst.name} has signalled EOF")
*/
  }

  /* "scamper.pyx":9365
 *             else:
 *                 raise RuntimeError("ScamperInst has signalled EOF")
 *         return inst             # <<<<<<<<<<<<<<
 * 
 *     cdef _task(self, clibscamperctrl.scamper_task_t *task,
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_inst);
  __pyx_r = __pyx_v_inst;
  goto __pyx_L0;

  /* "scamper.pyx":9335
 *         return len(self._insts)
 * 
 *     def _getinst(self, inst, primitive, sync, listallowed=True):             # <<<<<<<<<<<<<<
 *         if inst is not None:
 *             if isinstance(inst, list):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("scamper.ScamperCtrl._getinst", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_out);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9367
 *         return inst
 * 
 *     cdef _task(self, clibscamperctrl.scamper_task_t *task,             # <<<<<<<<<<<<<<
 *                clibscamperctrl.scamper_inst_t *inst,
 *                bint sync):
*/

static PyObject *__pyx_f_7scamper_11ScamperCtrl__task(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, scamper_task_t *__pyx_v_task, scamper_inst_t *__pyx_v_inst, int __pyx_v_sync) {
  PyObject *__pyx_v_onion = NULL;
  struct __pyx_obj_7scamper_ScamperTask *__pyx_v_t = NULL;
  struct __pyx_obj_7scamper_ScamperInst *__pyx_v_i = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  void *__pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_task", 0);

  /* "scamper.pyx":9370
 *                clibscamperctrl.scamper_inst_t *inst,
 *                bint sync):
 *         if sync:             # <<<<<<<<<<<<<<
 *             self._c_synctask = task
 *             self._syncdata = None
*/
  if (__pyx_v_sync) {

    /* "scamper.pyx":9371
 *                bint sync):
 *         if sync:
 *             self._c_synctask = task             # <<<<<<<<<<<<<<
 *             self._syncdata = None
 *             while self._syncdata is None:
*/
    __pyx_v_self->_c_synctask = __pyx_v_task;

    /* "scamper.pyx":9372
 *         if sync:
 *             self._c_synctask = task
 *             self._syncdata = None             # <<<<<<<<<<<<<<
 *             while self._syncdata is None:
 *                 # handle any signals (e.g. KeyboardInterrupt)
*/
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->_syncdata);
    __Pyx_DECREF(__pyx_v_self->_syncdata);
    __pyx_v_self->_syncdata = Py_None;

    /* "scamper.pyx":9373
 *             self._c_synctask = task
 *             self._syncdata = None
 *             while self._syncdata is None:             # <<<<<<<<<<<<<<
 *                 # handle any signals (e.g. KeyboardInterrupt)
 *                 PyErr_CheckSignals()
*/
    while (1) {
      __pyx_t_1 = (__pyx_v_self->_syncdata == Py_None);
      if (!__pyx_t_1) break;

      /* "scamper.pyx":9375
 *             while self._syncdata is None:
 *                 # handle any signals (e.g. KeyboardInterrupt)
 *                 PyErr_CheckSignals()             # <<<<<<<<<<<<<<
 *                 if len(self._exceptions) > 0:
 *                     raise self._exceptions.pop(0)
*/
      __pyx_t_2 = PyErr_CheckSignals(); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9375, __pyx_L1_error)

      /* "scamper.pyx":9376
 *                 # handle any signals (e.g. KeyboardInterrupt)
 *                 PyErr_CheckSignals()
 *                 if len(self._exceptions) > 0:             # <<<<<<<<<<<<<<
 *                     raise self._exceptions.pop(0)
 *                 clibscamperctrl.scamper_ctrl_wait(self._c, NULL)
*/
      __pyx_t_3 = __pyx_v_self->_exceptions;
      __Pyx_INCREF(__pyx_t_3);
      __pyx_t_4 = PyObject_Length(__pyx_t_3); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 9376, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_1 = (__pyx_t_4 > 0);
      if (unlikely(__pyx_t_1)) {

        /* "scamper.pyx":9377
 *                 PyErr_CheckSignals()
 *                 if len(self._exceptions) > 0:
 *                     raise self._exceptions.pop(0)             # <<<<<<<<<<<<<<
 *                 clibscamperctrl.scamper_ctrl_wait(self._c, NULL)
 *             onion = self._syncdata
*/
        __pyx_t_3 = __Pyx_PyObject_PopIndex(__pyx_v_self->_exceptions, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9377, __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_ERR(0, 9377, __pyx_L1_error)

        /* "scamper.pyx":9376
 *                 # handle any signals (e.g. KeyboardInterrupt)
 *                 PyErr_CheckSignals()
 *                 if len(self._exceptions) > 0:             # <<<<<<<<<<<<<<
 *                     raise self._exceptions.pop(0)
 *                 clibscamperctrl.scamper_ctrl_wait(self._c, NULL)
*/
      }

      /* "scamper.pyx":9378
 *                 if len(self._exceptions) > 0:
 *                     raise self._exceptions.pop(0)
 *                 clibscamperctrl.scamper_ctrl_wait(self._c, NULL)             # <<<<<<<<<<<<<<
 *             onion = self._syncdata
 *             self._c_synctask = NULL
*/
      (void)(scamper_ctrl_wait(__pyx_v_self->_c, NULL));
    }

    /* "scamper.pyx":9379
 *                     raise self._exceptions.pop(0)
 *                 clibscamperctrl.scamper_ctrl_wait(self._c, NULL)
 *             onion = self._syncdata             # <<<<<<<<<<<<<<
 *             self._c_synctask = NULL
 *             self._syncdata = None
*/
    __pyx_t_3 = __pyx_v_self->_syncdata;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_v_onion = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":9380
 *                 clibscamperctrl.scamper_ctrl_wait(self._c, NULL)
 *             onion = self._syncdata
 *             self._c_synctask = NULL             # <<<<<<<<<<<<<<
 *             self._syncdata = None
 *             onion.inst._queued -= 1
*/
    __pyx_v_self->_c_synctask = NULL;

    /* "scamper.pyx":9381
 *             onion = self._syncdata
 *             self._c_synctask = NULL
 *             self._syncdata = None             # <<<<<<<<<<<<<<
 *             onion.inst._queued -= 1
 *             return onion.data
*/
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __Pyx_GOTREF(__pyx_v_self->_syncdata);
    __Pyx_DECREF(__pyx_v_self->_syncdata);
    __pyx_v_self->_syncdata = Py_None;

    /* "scamper.pyx":9382
 *             self._c_synctask = NULL
 *             self._syncdata = None
 *             onion.inst._queued -= 1             # <<<<<<<<<<<<<<
 *             return onion.data
 *         else:
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_onion, __pyx_mstate_global->__pyx_n_u_inst); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_queued); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyLong_SubtractObjC(__pyx_t_5, __pyx_mstate_global->__pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_onion, __pyx_mstate_global->__pyx_n_u_inst); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9382, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_PyObject_SetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_queued, __pyx_t_3) < 0) __PYX_ERR(0, 9382, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":9383
 *             self._syncdata = None
 *             onion.inst._queued -= 1
 *             return onion.data             # <<<<<<<<<<<<<<
 *         else:
 *             t = ScamperTask.from_ptr(task, inst)
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_onion, __pyx_mstate_global->__pyx_n_u_data); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9383, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":9370
 *                clibscamperctrl.scamper_inst_t *inst,
 *                bint sync):
 *         if sync:             # <<<<<<<<<<<<<<
 *             self._c_synctask = task
 *             self._syncdata = None
*/
  }

  /* "scamper.pyx":9385
 *             return onion.data
 *         else:
 *             t = ScamperTask.from_ptr(task, inst)             # <<<<<<<<<<<<<<
 *             self._tasks.append(t)
 *             i = <ScamperInst> clibscamperctrl.scamper_inst_param_get(inst)
*/
  /*else*/ {
    __pyx_t_5 = ((PyObject *)__pyx_f_7scamper_11ScamperTask_from_ptr(__pyx_v_task, __pyx_v_inst)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9385, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_v_t = ((struct __pyx_obj_7scamper_ScamperTask *)__pyx_t_5);
    __pyx_t_5 = 0;

    /* "scamper.pyx":9386
 *         else:
 *             t = ScamperTask.from_ptr(task, inst)
 *             self._tasks.append(t)             # <<<<<<<<<<<<<<
 *             i = <ScamperInst> clibscamperctrl.scamper_inst_param_get(inst)
 *             i._tasks.append(t)
*/
    __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_self->_tasks, ((PyObject *)__pyx_v_t)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 9386, __pyx_L1_error)

    /* "scamper.pyx":9387
 *             t = ScamperTask.from_ptr(task, inst)
 *             self._tasks.append(t)
 *             i = <ScamperInst> clibscamperctrl.scamper_inst_param_get(inst)             # <<<<<<<<<<<<<<
 *             i._tasks.append(t)
 *             return t
*/
    __pyx_t_7 = scamper_inst_param_get(__pyx_v_inst);
    __pyx_t_5 = ((PyObject *)__pyx_t_7);
    __Pyx_INCREF(__pyx_t_5);
    __pyx_v_i = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_5);
    __pyx_t_5 = 0;

    /* "scamper.pyx":9388
 *             self._tasks.append(t)
 *             i = <ScamperInst> clibscamperctrl.scamper_inst_param_get(inst)
 *             i._tasks.append(t)             # <<<<<<<<<<<<<<
 *             return t
 * 
*/
    __pyx_t_6 = __Pyx_PyObject_Append(__pyx_v_i->_tasks, ((PyObject *)__pyx_v_t)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 9388, __pyx_L1_error)

    /* "scamper.pyx":9389
 *             i = <ScamperInst> clibscamperctrl.scamper_inst_param_get(inst)
 *             i._tasks.append(t)
 *             return t             # <<<<<<<<<<<<<<
 * 
 *     def _dotasks(self, cmd, inst, sync):
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF((PyObject *)__pyx_v_t);
    __pyx_r = ((PyObject *)__pyx_v_t);
    goto __pyx_L0;
  }

  /* "scamper.pyx":9367
 *         return inst
 * 
 *     cdef _task(self, clibscamperctrl.scamper_task_t *task,             # <<<<<<<<<<<<<<
 *                clibscamperctrl.scamper_inst_t *inst,
 *                bint sync):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperCtrl._task", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_onion);
  __Pyx_XDECREF((PyObject *)__pyx_v_t);
  __Pyx_XDECREF((PyObject *)__pyx_v_i);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9391
 *             return t
 * 
 *     def _dotasks(self, cmd, inst, sync):             # <<<<<<<<<<<<<<
 *         cstr = cmd.encode('UTF-8')
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_39_dotasks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_39_dotasks = {"_dotasks", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_39_dotasks, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_39_dotasks(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_cmd = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[3] = {0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_dotasks (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_cmd,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9391, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9391, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9391, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9391, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "_dotasks", 0) < 0) __PYX_ERR(0, 9391, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("_dotasks", 1, 3, 3, i); __PYX_ERR(0, 9391, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 3)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9391, __pyx_L3_error)
      values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9391, __pyx_L3_error)
      values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9391, __pyx_L3_error)
    }
    __pyx_v_cmd = values[0];
    __pyx_v_inst = values[1];
    __pyx_v_sync = values[2];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("_dotasks", 1, 3, 3, __pyx_nargs); __PYX_ERR(0, 9391, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl._dotasks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_38_dotasks(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_cmd, __pyx_v_inst, __pyx_v_sync);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_38_dotasks(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_cmd, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  PyObject *__pyx_v_cstr = NULL;
  PyObject *__pyx_v_tasks = NULL;
  PyObject *__pyx_v_i = NULL;
  scamper_task_t *__pyx_v_c;
  PyObject *__pyx_v_task = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  size_t __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  char const *__pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_dotasks", 0);

  /* "scamper.pyx":9392
 * 
 *     def _dotasks(self, cmd, inst, sync):
 *         cstr = cmd.encode('UTF-8')             # <<<<<<<<<<<<<<
 * 
 *         if isinstance(inst, list):
*/
  __pyx_t_2 = __pyx_v_cmd;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_3 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_UTF_8};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_encode, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_v_cstr = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":9394
 *         cstr = cmd.encode('UTF-8')
 * 
 *         if isinstance(inst, list):             # <<<<<<<<<<<<<<
 *             tasks = []
 *             for i in inst:
*/
  __pyx_t_4 = PyList_Check(__pyx_v_inst); 
  if (__pyx_t_4) {

    /* "scamper.pyx":9395
 * 
 *         if isinstance(inst, list):
 *             tasks = []             # <<<<<<<<<<<<<<
 *             for i in inst:
 *                 c = clibscamperctrl.scamper_inst_do((<ScamperInst>i)._c,
*/
    __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9395, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_tasks = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":9396
 *         if isinstance(inst, list):
 *             tasks = []
 *             for i in inst:             # <<<<<<<<<<<<<<
 *                 c = clibscamperctrl.scamper_inst_do((<ScamperInst>i)._c,
 *                                                     cstr, NULL)
*/
    if (likely(PyList_CheckExact(__pyx_v_inst)) || PyTuple_CheckExact(__pyx_v_inst)) {
      __pyx_t_1 = __pyx_v_inst; __Pyx_INCREF(__pyx_t_1);
      __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_inst); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9396, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9396, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_6)) {
        if (likely(PyList_CheckExact(__pyx_t_1))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9396, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          __pyx_t_2 = __Pyx_PyList_GetItemRef(__pyx_t_1, __pyx_t_5);
          ++__pyx_t_5;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_1);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 9396, __pyx_L1_error)
            #endif
            if (__pyx_t_5 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_2 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5));
          #else
          __pyx_t_2 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_5);
          #endif
          ++__pyx_t_5;
        }
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9396, __pyx_L1_error)
      } else {
        __pyx_t_2 = __pyx_t_6(__pyx_t_1);
        if (unlikely(!__pyx_t_2)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 9396, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "scamper.pyx":9398
 *             for i in inst:
 *                 c = clibscamperctrl.scamper_inst_do((<ScamperInst>i)._c,
 *                                                     cstr, NULL)             # <<<<<<<<<<<<<<
 *                 if c == NULL:
 *                     continue
*/
      __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_cstr); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 9398, __pyx_L1_error)

      /* "scamper.pyx":9397
 *             tasks = []
 *             for i in inst:
 *                 c = clibscamperctrl.scamper_inst_do((<ScamperInst>i)._c,             # <<<<<<<<<<<<<<
 *                                                     cstr, NULL)
 *                 if c == NULL:
*/
      __pyx_v_c = scamper_inst_do(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_i)->_c, __pyx_t_7, NULL);

      /* "scamper.pyx":9399
 *                 c = clibscamperctrl.scamper_inst_do((<ScamperInst>i)._c,
 *                                                     cstr, NULL)
 *                 if c == NULL:             # <<<<<<<<<<<<<<
 *                     continue
 *                 task = self._task(c, (<ScamperInst>i)._c, sync)
*/
      __pyx_t_4 = (__pyx_v_c == NULL);
      if (__pyx_t_4) {

        /* "scamper.pyx":9400
 *                                                     cstr, NULL)
 *                 if c == NULL:
 *                     continue             # <<<<<<<<<<<<<<
 *                 task = self._task(c, (<ScamperInst>i)._c, sync)
 *                 if task is not None:
*/
        goto __pyx_L4_continue;

        /* "scamper.pyx":9399
 *                 c = clibscamperctrl.scamper_inst_do((<ScamperInst>i)._c,
 *                                                     cstr, NULL)
 *                 if c == NULL:             # <<<<<<<<<<<<<<
 *                     continue
 *                 task = self._task(c, (<ScamperInst>i)._c, sync)
*/
      }

      /* "scamper.pyx":9401
 *                 if c == NULL:
 *                     continue
 *                 task = self._task(c, (<ScamperInst>i)._c, sync)             # <<<<<<<<<<<<<<
 *                 if task is not None:
 *                     tasks.append(task)
*/
      __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_sync); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 9401, __pyx_L1_error)
      __pyx_t_2 = ((struct __pyx_vtabstruct_7scamper_ScamperCtrl *)__pyx_v_self->__pyx_vtab)->_task(__pyx_v_self, __pyx_v_c, ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_i)->_c, __pyx_t_4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 9401, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_XDECREF_SET(__pyx_v_task, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "scamper.pyx":9402
 *                     continue
 *                 task = self._task(c, (<ScamperInst>i)._c, sync)
 *                 if task is not None:             # <<<<<<<<<<<<<<
 *                     tasks.append(task)
 *             return tasks
*/
      __pyx_t_4 = (__pyx_v_task != Py_None);
      if (__pyx_t_4) {

        /* "scamper.pyx":9403
 *                 task = self._task(c, (<ScamperInst>i)._c, sync)
 *                 if task is not None:
 *                     tasks.append(task)             # <<<<<<<<<<<<<<
 *             return tasks
 * 
*/
        __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_tasks, __pyx_v_task); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(0, 9403, __pyx_L1_error)

        /* "scamper.pyx":9402
 *                     continue
 *                 task = self._task(c, (<ScamperInst>i)._c, sync)
 *                 if task is not None:             # <<<<<<<<<<<<<<
 *                     tasks.append(task)
 *             return tasks
*/
      }

      /* "scamper.pyx":9396
 *         if isinstance(inst, list):
 *             tasks = []
 *             for i in inst:             # <<<<<<<<<<<<<<
 *                 c = clibscamperctrl.scamper_inst_do((<ScamperInst>i)._c,
 *                                                     cstr, NULL)
*/
      __pyx_L4_continue:;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9404
 *                 if task is not None:
 *                     tasks.append(task)
 *             return tasks             # <<<<<<<<<<<<<<
 * 
 *         c = clibscamperctrl.scamper_inst_do((<ScamperInst>inst)._c, cstr, NULL)
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_tasks);
    __pyx_r = __pyx_v_tasks;
    goto __pyx_L0;

    /* "scamper.pyx":9394
 *         cstr = cmd.encode('UTF-8')
 * 
 *         if isinstance(inst, list):             # <<<<<<<<<<<<<<
 *             tasks = []
 *             for i in inst:
*/
  }

  /* "scamper.pyx":9406
 *             return tasks
 * 
 *         c = clibscamperctrl.scamper_inst_do((<ScamperInst>inst)._c, cstr, NULL)             # <<<<<<<<<<<<<<
 *         if c == NULL:
 *             raise RuntimeError("could not schedule command")
*/
  __pyx_t_7 = __Pyx_PyObject_AsString(__pyx_v_cstr); if (unlikely((!__pyx_t_7) && PyErr_Occurred())) __PYX_ERR(0, 9406, __pyx_L1_error)
  __pyx_v_c = scamper_inst_do(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_inst)->_c, __pyx_t_7, NULL);

  /* "scamper.pyx":9407
 * 
 *         c = clibscamperctrl.scamper_inst_do((<ScamperInst>inst)._c, cstr, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("could not schedule command")
 *         return self._task(c, (<ScamperInst>inst)._c, sync)
*/
  __pyx_t_4 = (__pyx_v_c == NULL);
  if (unlikely(__pyx_t_4)) {

    /* "scamper.pyx":9408
 *         c = clibscamperctrl.scamper_inst_do((<ScamperInst>inst)._c, cstr, NULL)
 *         if c == NULL:
 *             raise RuntimeError("could not schedule command")             # <<<<<<<<<<<<<<
 *         return self._task(c, (<ScamperInst>inst)._c, sync)
 * 
*/
    __pyx_t_2 = NULL;
    __Pyx_INCREF(__pyx_builtin_RuntimeError);
    __pyx_t_9 = __pyx_builtin_RuntimeError; 
    __pyx_t_3 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_could_not_schedule_command};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_3, (2-__pyx_t_3) | (__pyx_t_3*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9408, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 9408, __pyx_L1_error)

    /* "scamper.pyx":9407
 * 
 *         c = clibscamperctrl.scamper_inst_do((<ScamperInst>inst)._c, cstr, NULL)
 *         if c == NULL:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("could not schedule command")
 *         return self._task(c, (<ScamperInst>inst)._c, sync)
*/
  }

  /* "scamper.pyx":9409
 *         if c == NULL:
 *             raise RuntimeError("could not schedule command")
 *         return self._task(c, (<ScamperInst>inst)._c, sync)             # <<<<<<<<<<<<<<
 * 
 *     # the optional parameters are ordered roughly according to the order
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_v_sync); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 9409, __pyx_L1_error)
  __pyx_t_1 = ((struct __pyx_vtabstruct_7scamper_ScamperCtrl *)__pyx_v_self->__pyx_vtab)->_task(__pyx_v_self, __pyx_v_c, ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_inst)->_c, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9409, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":9391
 *             return t
 * 
 *     def _dotasks(self, cmd, inst, sync):             # <<<<<<<<<<<<<<
 *         cstr = cmd.encode('UTF-8')
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("scamper.ScamperCtrl._dotasks", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_cstr);
  __Pyx_XDECREF(__pyx_v_tasks);
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_task);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9413
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying trace command
 *     def do_trace(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_41do_trace(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_40do_trace, "\n        do_trace(dst, confidence=None, dport=None,                 icmp_sum=None, firsthop=None, gaplimit=None, loops=None,                 hoplimit=None, pmtud=None, squeries=None, ptr=None,                 payload=None, method=None, attempts=None, all_attempts=None,                 rtr=None, sport=None, src=None, tos=None,                 wait_timeout=None, wait_probe=None,                 userid=None, inst=None, sync=False)\n        conduct a traceroute guided by the assembled parameters.\n        Only the dst parameter is required; scamper will use built-in\n        defaults for the other optional parameters if they are not\n        provided.  If any parameters conflict with other parameters\n        (e.g., specifying a sport or dport while also specifying icmp-echo\n        method) then this method will raise a :py:exc:`ValueError` exception.\n        If this method could not queue the measurement, it will raise a\n        :py:exc:`RuntimeError` exception.\n\n        :param string dst: The destination IP address to probe\n        :param ScamperInst inst: The specific instance to issue command over\n        :param int attempts: The number of probes to send per hop\n        :param bool all_attempts: Send all allotted attempts per hop\n        :param int confidence: Confidence level before assuming all\n            the interfaces have been observed that will reply at that hop\n        :param int dport: The TCP/UDP destination port to use in probes\n        :param int firsthop: The TTL to start probing with.\n        :param int gaplimit: How many consecutive unresponsive hops before\n            stopping traceroute\n        :param int hoplimit: The maximum TTL to use before stopping traceroute\n        :param int icmp_sum: The checksum to use in the ICMP header for\n            icmp-paris traceroute\n        :param int loops: The number of loops allowed before stopping\n        :param string method: The method to use when sending probes\n            Choices: icmp""-paris, udp-paris, tcp, tck-ack, udp, icmp\n        :param bytes payload: The payload to include in probes\n        :param bool pmtud: Conduct Path MTU discovery for this traceroute\n        :param bool ptr: Look up names for addresses in this traceroute\n        :param string rtr: The first-hop router to send packets through\n        :param int sport: The TCP/UDP source port to use in probes\n        :param int squeries: The number of consecutive hops to probe before\n            stopping to wait for a response\n        :param string src: The source IP address to use in probes\n        :param int tos: The byte to use in the field formally known as IP TOS\n        :param int userid: The userid value to tag with this measurement\n        :param timedelta wait_probe: The minimum length of time between probes\n        :param timedelta wait_timeout: The length of time to wait for a response\n             for a probe\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: a task object representing the traceroute\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_41do_trace = {"do_trace", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_41do_trace, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_40do_trace};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_41do_trace(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dst = 0;
  PyObject *__pyx_v_confidence = 0;
  PyObject *__pyx_v_dport = 0;
  PyObject *__pyx_v_icmp_sum = 0;
  PyObject *__pyx_v_firsthop = 0;
  PyObject *__pyx_v_gaplimit = 0;
  PyObject *__pyx_v_loops = 0;
  PyObject *__pyx_v_hoplimit = 0;
  PyObject *__pyx_v_pmtud = 0;
  PyObject *__pyx_v_squeries = 0;
  PyObject *__pyx_v_ptr = 0;
  PyObject *__pyx_v_payload = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_attempts = 0;
  PyObject *__pyx_v_all_attempts = 0;
  PyObject *__pyx_v_rtr = 0;
  PyObject *__pyx_v_sport = 0;
  PyObject *__pyx_v_src = 0;
  PyObject *__pyx_v_tos = 0;
  PyObject *__pyx_v_wait_timeout = 0;
  PyObject *__pyx_v_wait_probe = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[24] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_trace (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dst,&__pyx_mstate_global->__pyx_n_u_confidence,&__pyx_mstate_global->__pyx_n_u_dport,&__pyx_mstate_global->__pyx_n_u_icmp_sum,&__pyx_mstate_global->__pyx_n_u_firsthop,&__pyx_mstate_global->__pyx_n_u_gaplimit,&__pyx_mstate_global->__pyx_n_u_loops,&__pyx_mstate_global->__pyx_n_u_hoplimit,&__pyx_mstate_global->__pyx_n_u_pmtud,&__pyx_mstate_global->__pyx_n_u_squeries,&__pyx_mstate_global->__pyx_n_u_ptr,&__pyx_mstate_global->__pyx_n_u_payload,&__pyx_mstate_global->__pyx_n_u_method,&__pyx_mstate_global->__pyx_n_u_attempts,&__pyx_mstate_global->__pyx_n_u_all_attempts,&__pyx_mstate_global->__pyx_n_u_rtr,&__pyx_mstate_global->__pyx_n_u_sport,&__pyx_mstate_global->__pyx_n_u_src,&__pyx_mstate_global->__pyx_n_u_tos,&__pyx_mstate_global->__pyx_n_u_wait_timeout,&__pyx_mstate_global->__pyx_n_u_wait_probe,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9413, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case 24:
        values[23] = __Pyx_ArgRef_FASTCALL(__pyx_args, 23);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[23])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 23:
        values[22] = __Pyx_ArgRef_FASTCALL(__pyx_args, 22);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[22])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 22:
        values[21] = __Pyx_ArgRef_FASTCALL(__pyx_args, 21);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[21])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 21:
        values[20] = __Pyx_ArgRef_FASTCALL(__pyx_args, 20);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[20])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 20:
        values[19] = __Pyx_ArgRef_FASTCALL(__pyx_args, 19);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[19])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 19:
        values[18] = __Pyx_ArgRef_FASTCALL(__pyx_args, 18);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[18])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 18:
        values[17] = __Pyx_ArgRef_FASTCALL(__pyx_args, 17);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[17])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 17:
        values[16] = __Pyx_ArgRef_FASTCALL(__pyx_args, 16);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[16])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 16:
        values[15] = __Pyx_ArgRef_FASTCALL(__pyx_args, 15);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[15])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 15:
        values[14] = __Pyx_ArgRef_FASTCALL(__pyx_args, 14);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[14])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 14:
        values[13] = __Pyx_ArgRef_FASTCALL(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_trace", 0) < 0) __PYX_ERR(0, 9413, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9414
 *     # these appear in the underlying trace command
 *     def do_trace(self, dst, confidence=None, dport=None,
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,             # <<<<<<<<<<<<<<
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
 *                  payload=None, method=None, attempts=None, all_attempts=None,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9415
 *     def do_trace(self, dst, confidence=None, dport=None,
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,             # <<<<<<<<<<<<<<
 *                  payload=None, method=None, attempts=None, all_attempts=None,
 *                  rtr=None, sport=None, src=None, tos=None,
*/
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9416
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
 *                  payload=None, method=None, attempts=None, all_attempts=None,             # <<<<<<<<<<<<<<
 *                  rtr=None, sport=None, src=None, tos=None,
 *                  wait_timeout=None, wait_probe=None,
*/
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9417
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
 *                  payload=None, method=None, attempts=None, all_attempts=None,
 *                  rtr=None, sport=None, src=None, tos=None,             # <<<<<<<<<<<<<<
 *                  wait_timeout=None, wait_probe=None,
 *                  userid=None, inst=None, sync=False):
*/
      if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9418
 *                  payload=None, method=None, attempts=None, all_attempts=None,
 *                  rtr=None, sport=None, src=None, tos=None,
 *                  wait_timeout=None, wait_probe=None,             # <<<<<<<<<<<<<<
 *                  userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[20]) values[20] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9419
 *                  rtr=None, sport=None, src=None, tos=None,
 *                  wait_timeout=None, wait_probe=None,
 *                  userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_trace(dst, confidence=None, dport=None,\
*/
      if (!values[21]) values[21] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[22]) values[22] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[23]) values[23] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_trace", 0, 1, 24, i); __PYX_ERR(0, 9413, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case 24:
        values[23] = __Pyx_ArgRef_FASTCALL(__pyx_args, 23);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[23])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 23:
        values[22] = __Pyx_ArgRef_FASTCALL(__pyx_args, 22);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[22])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 22:
        values[21] = __Pyx_ArgRef_FASTCALL(__pyx_args, 21);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[21])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 21:
        values[20] = __Pyx_ArgRef_FASTCALL(__pyx_args, 20);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[20])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 20:
        values[19] = __Pyx_ArgRef_FASTCALL(__pyx_args, 19);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[19])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 19:
        values[18] = __Pyx_ArgRef_FASTCALL(__pyx_args, 18);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[18])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 18:
        values[17] = __Pyx_ArgRef_FASTCALL(__pyx_args, 17);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[17])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 17:
        values[16] = __Pyx_ArgRef_FASTCALL(__pyx_args, 16);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[16])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 16:
        values[15] = __Pyx_ArgRef_FASTCALL(__pyx_args, 15);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[15])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 15:
        values[14] = __Pyx_ArgRef_FASTCALL(__pyx_args, 14);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[14])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 14:
        values[13] = __Pyx_ArgRef_FASTCALL(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9413, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9413, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":9413
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying trace command
 *     def do_trace(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9414
 *     # these appear in the underlying trace command
 *     def do_trace(self, dst, confidence=None, dport=None,
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,             # <<<<<<<<<<<<<<
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
 *                  payload=None, method=None, attempts=None, all_attempts=None,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9415
 *     def do_trace(self, dst, confidence=None, dport=None,
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,             # <<<<<<<<<<<<<<
 *                  payload=None, method=None, attempts=None, all_attempts=None,
 *                  rtr=None, sport=None, src=None, tos=None,
*/
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9416
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
 *                  payload=None, method=None, attempts=None, all_attempts=None,             # <<<<<<<<<<<<<<
 *                  rtr=None, sport=None, src=None, tos=None,
 *                  wait_timeout=None, wait_probe=None,
*/
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9417
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
 *                  payload=None, method=None, attempts=None, all_attempts=None,
 *                  rtr=None, sport=None, src=None, tos=None,             # <<<<<<<<<<<<<<
 *                  wait_timeout=None, wait_probe=None,
 *                  userid=None, inst=None, sync=False):
*/
      if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9418
 *                  payload=None, method=None, attempts=None, all_attempts=None,
 *                  rtr=None, sport=None, src=None, tos=None,
 *                  wait_timeout=None, wait_probe=None,             # <<<<<<<<<<<<<<
 *                  userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[20]) values[20] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9419
 *                  rtr=None, sport=None, src=None, tos=None,
 *                  wait_timeout=None, wait_probe=None,
 *                  userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_trace(dst, confidence=None, dport=None,\
*/
      if (!values[21]) values[21] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[22]) values[22] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[23]) values[23] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_dst = values[0];
    __pyx_v_confidence = values[1];
    __pyx_v_dport = values[2];
    __pyx_v_icmp_sum = values[3];
    __pyx_v_firsthop = values[4];
    __pyx_v_gaplimit = values[5];
    __pyx_v_loops = values[6];
    __pyx_v_hoplimit = values[7];
    __pyx_v_pmtud = values[8];
    __pyx_v_squeries = values[9];
    __pyx_v_ptr = values[10];
    __pyx_v_payload = values[11];
    __pyx_v_method = values[12];
    __pyx_v_attempts = values[13];
    __pyx_v_all_attempts = values[14];
    __pyx_v_rtr = values[15];
    __pyx_v_sport = values[16];
    __pyx_v_src = values[17];
    __pyx_v_tos = values[18];
    __pyx_v_wait_timeout = values[19];
    __pyx_v_wait_probe = values[20];
    __pyx_v_userid = values[21];
    __pyx_v_inst = values[22];
    __pyx_v_sync = values[23];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_trace", 0, 1, 24, __pyx_nargs); __PYX_ERR(0, 9413, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_trace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_40do_trace(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_dst, __pyx_v_confidence, __pyx_v_dport, __pyx_v_icmp_sum, __pyx_v_firsthop, __pyx_v_gaplimit, __pyx_v_loops, __pyx_v_hoplimit, __pyx_v_pmtud, __pyx_v_squeries, __pyx_v_ptr, __pyx_v_payload, __pyx_v_method, __pyx_v_attempts, __pyx_v_all_attempts, __pyx_v_rtr, __pyx_v_sport, __pyx_v_src, __pyx_v_tos, __pyx_v_wait_timeout, __pyx_v_wait_probe, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":9413
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying trace command
 *     def do_trace(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7scamper_11ScamperCtrl_8do_trace_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "scamper.pyx":9484
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_8do_trace_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *)__pyx_tp_new_7scamper___pyx_scope_struct_4_genexpr(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9484, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7scamper_11ScamperCtrl_8do_trace_2generator3, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[3]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_do_trace_locals_genexpr, __pyx_mstate_global->__pyx_n_u_scamper); if (unlikely(!gen)) __PYX_ERR(0, 9484, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_trace.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7scamper_11ScamperCtrl_8do_trace_2generator3(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9484, __pyx_L1_error)
  __pyx_t_1 = __pyx_mstate_global->__pyx_tuple[0]; __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= 2) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
    #endif
    ++__pyx_t_2;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_s);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_s, ((PyObject*)__pyx_t_3));
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_m)) { __Pyx_RaiseClosureNameError("m"); __PYX_ERR(0, 9484, __pyx_L1_error) }
    __pyx_t_4 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_m;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_s};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9484, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 9484, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_6) {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_True);
      __pyx_r = Py_True;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9413
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying trace command
 *     def do_trace(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_40do_trace(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_confidence, PyObject *__pyx_v_dport, PyObject *__pyx_v_icmp_sum, PyObject *__pyx_v_firsthop, PyObject *__pyx_v_gaplimit, PyObject *__pyx_v_loops, PyObject *__pyx_v_hoplimit, PyObject *__pyx_v_pmtud, PyObject *__pyx_v_squeries, PyObject *__pyx_v_ptr, PyObject *__pyx_v_payload, PyObject *__pyx_v_method, PyObject *__pyx_v_attempts, PyObject *__pyx_v_all_attempts, PyObject *__pyx_v_rtr, PyObject *__pyx_v_sport, PyObject *__pyx_v_src, PyObject *__pyx_v_tos, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *__pyx_cur_scope;
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_gb_7scamper_11ScamperCtrl_8do_trace_2generator3 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_trace", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *)__pyx_tp_new_7scamper___pyx_scope_struct_3_do_trace(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9413, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __Pyx_INCREF(__pyx_v_wait_timeout);
  __Pyx_INCREF(__pyx_v_wait_probe);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":9472
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("trace")
 *         inst = self._getinst(inst, "trace", sync)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9472, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9473
 * 
 *         args = []
 *         args.append("trace")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "trace", sync)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_n_u_trace); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9473, __pyx_L1_error)

  /* "scamper.pyx":9474
 *         args = []
 *         args.append("trace")
 *         inst = self._getinst(inst, "trace", sync)             # <<<<<<<<<<<<<<
 * 
 *         if method is not None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_trace, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9474, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9476
 *         inst = self._getinst(inst, "trace", sync)
 * 
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             m = method.lower()
 *         else:
*/
  __pyx_t_5 = (__pyx_v_method != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9477
 * 
 *         if method is not None:
 *             m = method.lower()             # <<<<<<<<<<<<<<
 *         else:
 *             m = None
*/
    __pyx_t_3 = __pyx_v_method;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9477, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_m = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "scamper.pyx":9476
 *         inst = self._getinst(inst, "trace", sync)
 * 
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             m = method.lower()
 *         else:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":9479
 *             m = method.lower()
 *         else:
 *             m = None             # <<<<<<<<<<<<<<
 * 
 *         if sport is not None or dport is not None:
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_cur_scope->__pyx_v_m = Py_None;
  }
  __pyx_L3:;

  /* "scamper.pyx":9481
 *             m = None
 * 
 *         if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
*/
  __pyx_t_6 = (__pyx_v_sport != Py_None);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_dport != Py_None);
  __pyx_t_5 = __pyx_t_6;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_5) {

    /* "scamper.pyx":9482
 * 
 *         if sport is not None or dport is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
*/
    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_m == Py_None);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":9483
 *         if sport is not None or dport is not None:
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")             # <<<<<<<<<<<<<<
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
 *                 raise ValueError("cannot specify source or destination ports with " + method)
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_7 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_specify_method_when_specifying_t};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9483, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9483, __pyx_L1_error)

      /* "scamper.pyx":9482
 * 
 *         if sport is not None or dport is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
*/
    }

    /* "scamper.pyx":9484
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
    __pyx_t_1 = __pyx_pf_7scamper_11ScamperCtrl_8do_trace_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_Generator_GetInlinedResult(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 9484, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_6 = (!__pyx_t_5);
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":9485
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
 *                 raise ValueError("cannot specify source or destination ports with " + method)             # <<<<<<<<<<<<<<
 * 
 *         if icmp_sum is not None:
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_8 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_source_or_destina, __pyx_v_method); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9485, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_8};
        __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9485, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __PYX_ERR(0, 9485, __pyx_L1_error)

      /* "scamper.pyx":9484
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
    }

    /* "scamper.pyx":9481
 *             m = None
 * 
 *         if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
*/
  }

  /* "scamper.pyx":9487
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
 *         if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 m = "icmp-paris"
*/
  __pyx_t_6 = (__pyx_v_icmp_sum != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9488
 * 
 *         if icmp_sum is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 m = "icmp-paris"
 *             elif m != "icmp-paris":
*/
    __pyx_t_6 = (__pyx_cur_scope->__pyx_v_m == Py_None);
    if (__pyx_t_6) {

      /* "scamper.pyx":9489
 *         if icmp_sum is not None:
 *             if m is None:
 *                 m = "icmp-paris"             # <<<<<<<<<<<<<<
 *             elif m != "icmp-paris":
 *                 raise ValueError("cannot specify ICMP parameters with " + method)
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_icmp_paris);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_m);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_m, __pyx_mstate_global->__pyx_kp_u_icmp_paris);
      __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_icmp_paris);

      /* "scamper.pyx":9488
 * 
 *         if icmp_sum is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 m = "icmp-paris"
 *             elif m != "icmp-paris":
*/
      goto __pyx_L9;
    }

    /* "scamper.pyx":9490
 *             if m is None:
 *                 m = "icmp-paris"
 *             elif m != "icmp-paris":             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify ICMP parameters with " + method)
 * 
*/
    __pyx_t_6 = (__Pyx_PyUnicode_Equals(__pyx_cur_scope->__pyx_v_m, __pyx_mstate_global->__pyx_kp_u_icmp_paris, Py_NE)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 9490, __pyx_L1_error)
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":9491
 *                 m = "icmp-paris"
 *             elif m != "icmp-paris":
 *                 raise ValueError("cannot specify ICMP parameters with " + method)             # <<<<<<<<<<<<<<
 * 
 *         if confidence is not None:
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_1 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_ICMP_parameters_w, __pyx_v_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9491, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_1};
        __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9491, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __PYX_ERR(0, 9491, __pyx_L1_error)

      /* "scamper.pyx":9490
 *             if m is None:
 *                 m = "icmp-paris"
 *             elif m != "icmp-paris":             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify ICMP parameters with " + method)
 * 
*/
    }
    __pyx_L9:;

    /* "scamper.pyx":9487
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
 *         if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 m = "icmp-paris"
*/
  }

  /* "scamper.pyx":9493
 *                 raise ValueError("cannot specify ICMP parameters with " + method)
 * 
 *         if confidence is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-C {confidence}")
 *         if dport is not None:
*/
  __pyx_t_6 = (__pyx_v_confidence != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9494
 * 
 *         if confidence is not None:
 *             args.append(f"-C {confidence}")             # <<<<<<<<<<<<<<
 *         if dport is not None:
 *             args.append(f"-d {dport}")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_confidence, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_C, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9494, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9494, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9493
 *                 raise ValueError("cannot specify ICMP parameters with " + method)
 * 
 *         if confidence is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-C {confidence}")
 *         if dport is not None:
*/
  }

  /* "scamper.pyx":9495
 *         if confidence is not None:
 *             args.append(f"-C {confidence}")
 *         if dport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-d {dport}")
 *         if firsthop is not None:
*/
  __pyx_t_6 = (__pyx_v_dport != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9496
 *             args.append(f"-C {confidence}")
 *         if dport is not None:
 *             args.append(f"-d {dport}")             # <<<<<<<<<<<<<<
 *         if firsthop is not None:
 *             args.append(f"-f {firsthop}")
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_dport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_d_2, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9496, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9496, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9495
 *         if confidence is not None:
 *             args.append(f"-C {confidence}")
 *         if dport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-d {dport}")
 *         if firsthop is not None:
*/
  }

  /* "scamper.pyx":9497
 *         if dport is not None:
 *             args.append(f"-d {dport}")
 *         if firsthop is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-f {firsthop}")
 *         if gaplimit is not None:
*/
  __pyx_t_6 = (__pyx_v_firsthop != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9498
 *             args.append(f"-d {dport}")
 *         if firsthop is not None:
 *             args.append(f"-f {firsthop}")             # <<<<<<<<<<<<<<
 *         if gaplimit is not None:
 *             args.append(f"-g {gaplimit}")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_firsthop, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_f, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9498, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9498, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9497
 *         if dport is not None:
 *             args.append(f"-d {dport}")
 *         if firsthop is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-f {firsthop}")
 *         if gaplimit is not None:
*/
  }

  /* "scamper.pyx":9499
 *         if firsthop is not None:
 *             args.append(f"-f {firsthop}")
 *         if gaplimit is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-g {gaplimit}")
 *         if loops is not None:
*/
  __pyx_t_6 = (__pyx_v_gaplimit != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9500
 *             args.append(f"-f {firsthop}")
 *         if gaplimit is not None:
 *             args.append(f"-g {gaplimit}")             # <<<<<<<<<<<<<<
 *         if loops is not None:
 *             args.append(f"-l {loops}")
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_gaplimit, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_g, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9500, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9500, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9499
 *         if firsthop is not None:
 *             args.append(f"-f {firsthop}")
 *         if gaplimit is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-g {gaplimit}")
 *         if loops is not None:
*/
  }

  /* "scamper.pyx":9501
 *         if gaplimit is not None:
 *             args.append(f"-g {gaplimit}")
 *         if loops is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-l {loops}")
 *         if hoplimit is not None:
*/
  __pyx_t_6 = (__pyx_v_loops != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9502
 *             args.append(f"-g {gaplimit}")
 *         if loops is not None:
 *             args.append(f"-l {loops}")             # <<<<<<<<<<<<<<
 *         if hoplimit is not None:
 *             args.append(f"-m {hoplimit}")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_loops, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_l, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9502, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9502, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9501
 *         if gaplimit is not None:
 *             args.append(f"-g {gaplimit}")
 *         if loops is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-l {loops}")
 *         if hoplimit is not None:
*/
  }

  /* "scamper.pyx":9503
 *         if loops is not None:
 *             args.append(f"-l {loops}")
 *         if hoplimit is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-m {hoplimit}")
 *         if pmtud is not None and pmtud is True:
*/
  __pyx_t_6 = (__pyx_v_hoplimit != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9504
 *             args.append(f"-l {loops}")
 *         if hoplimit is not None:
 *             args.append(f"-m {hoplimit}")             # <<<<<<<<<<<<<<
 *         if pmtud is not None and pmtud is True:
 *             args.append("-M")
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_hoplimit, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_m, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9504, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9504, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9503
 *         if loops is not None:
 *             args.append(f"-l {loops}")
 *         if hoplimit is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-m {hoplimit}")
 *         if pmtud is not None and pmtud is True:
*/
  }

  /* "scamper.pyx":9505
 *         if hoplimit is not None:
 *             args.append(f"-m {hoplimit}")
 *         if pmtud is not None and pmtud is True:             # <<<<<<<<<<<<<<
 *             args.append("-M")
 *         if squeries is not None:
*/
  __pyx_t_5 = (__pyx_v_pmtud != Py_None);
  if (__pyx_t_5) {
  } else {
    __pyx_t_6 = __pyx_t_5;
    goto __pyx_L17_bool_binop_done;
  }
  __pyx_t_5 = (__pyx_v_pmtud == Py_True);
  __pyx_t_6 = __pyx_t_5;
  __pyx_L17_bool_binop_done:;
  if (__pyx_t_6) {

    /* "scamper.pyx":9506
 *             args.append(f"-m {hoplimit}")
 *         if pmtud is not None and pmtud is True:
 *             args.append("-M")             # <<<<<<<<<<<<<<
 *         if squeries is not None:
 *             args.append(f"-N {squeries}")
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_M); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9506, __pyx_L1_error)

    /* "scamper.pyx":9505
 *         if hoplimit is not None:
 *             args.append(f"-m {hoplimit}")
 *         if pmtud is not None and pmtud is True:             # <<<<<<<<<<<<<<
 *             args.append("-M")
 *         if squeries is not None:
*/
  }

  /* "scamper.pyx":9507
 *         if pmtud is not None and pmtud is True:
 *             args.append("-M")
 *         if squeries is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-N {squeries}")
 *         if ptr is not None and ptr is True:
*/
  __pyx_t_6 = (__pyx_v_squeries != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9508
 *             args.append("-M")
 *         if squeries is not None:
 *             args.append(f"-N {squeries}")             # <<<<<<<<<<<<<<
 *         if ptr is not None and ptr is True:
 *             args.append("-O ptr")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_squeries, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_N, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9508, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9508, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9507
 *         if pmtud is not None and pmtud is True:
 *             args.append("-M")
 *         if squeries is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-N {squeries}")
 *         if ptr is not None and ptr is True:
*/
  }

  /* "scamper.pyx":9509
 *         if squeries is not None:
 *             args.append(f"-N {squeries}")
 *         if ptr is not None and ptr is True:             # <<<<<<<<<<<<<<
 *             args.append("-O ptr")
 *         if payload is not None:
*/
  __pyx_t_5 = (__pyx_v_ptr != Py_None);
  if (__pyx_t_5) {
  } else {
    __pyx_t_6 = __pyx_t_5;
    goto __pyx_L21_bool_binop_done;
  }
  __pyx_t_5 = (__pyx_v_ptr == Py_True);
  __pyx_t_6 = __pyx_t_5;
  __pyx_L21_bool_binop_done:;
  if (__pyx_t_6) {

    /* "scamper.pyx":9510
 *             args.append(f"-N {squeries}")
 *         if ptr is not None and ptr is True:
 *             args.append("-O ptr")             # <<<<<<<<<<<<<<
 *         if payload is not None:
 *             args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_O_ptr); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9510, __pyx_L1_error)

    /* "scamper.pyx":9509
 *         if squeries is not None:
 *             args.append(f"-N {squeries}")
 *         if ptr is not None and ptr is True:             # <<<<<<<<<<<<<<
 *             args.append("-O ptr")
 *         if payload is not None:
*/
  }

  /* "scamper.pyx":9511
 *         if ptr is not None and ptr is True:
 *             args.append("-O ptr")
 *         if payload is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")
 *         if method is not None:
*/
  __pyx_t_6 = (__pyx_v_payload != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9512
 *             args.append("-O ptr")
 *         if payload is not None:
 *             args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")             # <<<<<<<<<<<<<<
 *         if method is not None:
 *             args.append(f"-P {method}")
*/
    __pyx_t_3 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_binascii); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_mstate_global->__pyx_n_u_hexlify); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_4 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_10))) {
      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_10);
      assert(__pyx_t_3);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
      __Pyx_INCREF(__pyx_t_3);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
      __pyx_t_4 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_v_payload};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9512, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_7 = __pyx_t_1;
    __Pyx_INCREF(__pyx_t_7);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_n_u_ascii};
      __pyx_t_8 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9512, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_p, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9512, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9512, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9511
 *         if ptr is not None and ptr is True:
 *             args.append("-O ptr")
 *         if payload is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")
 *         if method is not None:
*/
  }

  /* "scamper.pyx":9513
 *         if payload is not None:
 *             args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-P {method}")
 *         if attempts is not None:
*/
  __pyx_t_6 = (__pyx_v_method != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9514
 *             args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")
 *         if method is not None:
 *             args.append(f"-P {method}")             # <<<<<<<<<<<<<<
 *         if attempts is not None:
 *             args.append(f"-q {attempts}")
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_method, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_P, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9514, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9514, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9513
 *         if payload is not None:
 *             args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-P {method}")
 *         if attempts is not None:
*/
  }

  /* "scamper.pyx":9515
 *         if method is not None:
 *             args.append(f"-P {method}")
 *         if attempts is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-q {attempts}")
 *         if all_attempts is not None and all_attempts is True:
*/
  __pyx_t_6 = (__pyx_v_attempts != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9516
 *             args.append(f"-P {method}")
 *         if attempts is not None:
 *             args.append(f"-q {attempts}")             # <<<<<<<<<<<<<<
 *         if all_attempts is not None and all_attempts is True:
 *             args.append("-Q")
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_attempts, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9516, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_q, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9516, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9516, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9515
 *         if method is not None:
 *             args.append(f"-P {method}")
 *         if attempts is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-q {attempts}")
 *         if all_attempts is not None and all_attempts is True:
*/
  }

  /* "scamper.pyx":9517
 *         if attempts is not None:
 *             args.append(f"-q {attempts}")
 *         if all_attempts is not None and all_attempts is True:             # <<<<<<<<<<<<<<
 *             args.append("-Q")
 *         if rtr is not None:
*/
  __pyx_t_5 = (__pyx_v_all_attempts != Py_None);
  if (__pyx_t_5) {
  } else {
    __pyx_t_6 = __pyx_t_5;
    goto __pyx_L27_bool_binop_done;
  }
  __pyx_t_5 = (__pyx_v_all_attempts == Py_True);
  __pyx_t_6 = __pyx_t_5;
  __pyx_L27_bool_binop_done:;
  if (__pyx_t_6) {

    /* "scamper.pyx":9518
 *             args.append(f"-q {attempts}")
 *         if all_attempts is not None and all_attempts is True:
 *             args.append("-Q")             # <<<<<<<<<<<<<<
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_Q); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9518, __pyx_L1_error)

    /* "scamper.pyx":9517
 *         if attempts is not None:
 *             args.append(f"-q {attempts}")
 *         if all_attempts is not None and all_attempts is True:             # <<<<<<<<<<<<<<
 *             args.append("-Q")
 *         if rtr is not None:
*/
  }

  /* "scamper.pyx":9519
 *         if all_attempts is not None and all_attempts is True:
 *             args.append("-Q")
 *         if rtr is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-r {rtr}")
 *         if sport is not None:
*/
  __pyx_t_6 = (__pyx_v_rtr != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9520
 *             args.append("-Q")
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")             # <<<<<<<<<<<<<<
 *         if sport is not None:
 *             args.append(f"-s {sport}")
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_rtr, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_r_2, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9520, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9520, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9519
 *         if all_attempts is not None and all_attempts is True:
 *             args.append("-Q")
 *         if rtr is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-r {rtr}")
 *         if sport is not None:
*/
  }

  /* "scamper.pyx":9521
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")
 *         if sport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-s {sport}")
 *         if src is not None:
*/
  __pyx_t_6 = (__pyx_v_sport != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9522
 *             args.append(f"-r {rtr}")
 *         if sport is not None:
 *             args.append(f"-s {sport}")             # <<<<<<<<<<<<<<
 *         if src is not None:
 *             args.append(f"-S {src}")
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_sport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_s, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9522, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9522, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9521
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")
 *         if sport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-s {sport}")
 *         if src is not None:
*/
  }

  /* "scamper.pyx":9523
 *         if sport is not None:
 *             args.append(f"-s {sport}")
 *         if src is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-S {src}")
 *         if tos is not None:
*/
  __pyx_t_6 = (__pyx_v_src != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9524
 *             args.append(f"-s {sport}")
 *         if src is not None:
 *             args.append(f"-S {src}")             # <<<<<<<<<<<<<<
 *         if tos is not None:
 *             args.append(f"-t {tos}")
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_src, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_S_2, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9524, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9524, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9523
 *         if sport is not None:
 *             args.append(f"-s {sport}")
 *         if src is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-S {src}")
 *         if tos is not None:
*/
  }

  /* "scamper.pyx":9525
 *         if src is not None:
 *             args.append(f"-S {src}")
 *         if tos is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-t {tos}")
 *         if userid is not None:
*/
  __pyx_t_6 = (__pyx_v_tos != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9526
 *             args.append(f"-S {src}")
 *         if tos is not None:
 *             args.append(f"-t {tos}")             # <<<<<<<<<<<<<<
 *         if userid is not None:
 *             args.append(f"-U {userid}")
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_tos, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_t, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9526, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9526, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9525
 *         if src is not None:
 *             args.append(f"-S {src}")
 *         if tos is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-t {tos}")
 *         if userid is not None:
*/
  }

  /* "scamper.pyx":9527
 *         if tos is not None:
 *             args.append(f"-t {tos}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
*/
  __pyx_t_6 = (__pyx_v_userid != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9528
 *             args.append(f"-t {tos}")
 *         if userid is not None:
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9528, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9528, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9527
 *         if tos is not None:
 *             args.append(f"-t {tos}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
*/
  }

  /* "scamper.pyx":9529
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  __pyx_t_6 = (__pyx_v_wait_timeout != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9530
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9530, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9530, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = PyObject_IsInstance(__pyx_v_wait_timeout, __pyx_t_8); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 9530, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_5 = (!__pyx_t_6);
    if (__pyx_t_5) {

      /* "scamper.pyx":9531
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)             # <<<<<<<<<<<<<<
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         if wait_probe is not None:
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9531, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9531, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_10))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_10);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL};
        __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9531, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_timeout, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9531, __pyx_L1_error)
        __pyx_t_8 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_10, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9531, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_timeout, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "scamper.pyx":9530
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
*/
    }

    /* "scamper.pyx":9532
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
*/
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_timeout, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_t_10, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_w_2;
    __pyx_t_11[1] = __pyx_t_8;
    __pyx_t_11[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_10 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
    if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9532, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_10); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9532, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;

    /* "scamper.pyx":9529
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  }

  /* "scamper.pyx":9533
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  __pyx_t_5 = (__pyx_v_wait_probe != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9534
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9534, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_5 = PyObject_IsInstance(__pyx_v_wait_probe, __pyx_t_8); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 9534, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_6 = (!__pyx_t_5);
    if (__pyx_t_6) {

      /* "scamper.pyx":9535
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)             # <<<<<<<<<<<<<<
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         args.append(f"{dst}")
*/
      __pyx_t_10 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9535, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_10 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_10);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_10);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_10, NULL};
        __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9535, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_probe, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9535, __pyx_L1_error)
        __pyx_t_8 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_1, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
        __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9535, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_probe, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "scamper.pyx":9534
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
*/
    }

    /* "scamper.pyx":9536
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         args.append(f"{dst}")
 * 
*/
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_probe, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_W;
    __pyx_t_11[1] = __pyx_t_8;
    __pyx_t_11[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9536, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9536, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9533
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  }

  /* "scamper.pyx":9537
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         args.append(f"{dst}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_dst, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9537, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9537, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":9539
 *         args.append(f"{dst}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_7 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9539, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_7, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9539, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":9413
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying trace command
 *     def do_trace(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_trace", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_gb_7scamper_11ScamperCtrl_8do_trace_2generator3);
  __Pyx_XDECREF(__pyx_v_wait_timeout);
  __Pyx_XDECREF(__pyx_v_wait_probe);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9541
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_43do_tracelb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_42do_tracelb, "\n        do_tracelb(dst, confidence=None, dport=None, firsthop=None,                   gaplimit=None, method=None, attempts=None,                   ptr=None, rtr=None, sport=None, tos=None,                   wait_timeout=None, wait_probe=None,                   userid=None, inst=None, sync=False)\n        conduct an MDA traceroute guided by the assembled parameters.\n        Only the dst parameter is required; scamper will use built-in\n        defaults for the other optional parameters if they are not\n        provided.  If any parameters conflict with other parameters\n        (e.g., specifying a sport or dport while also specifying icmp-echo\n        method) then this method will raise a :py:exc:`ValueError` exception.\n        If this method could not queue the measurement, it will raise a\n        :py:exc:`RuntimeError` exception.\n\n        :param string dst: The destination IP address to probe\n        :param ScamperInst inst: The specific instance to issue command over\n        :param int attempts: The number of probes to send per hop\n        :param int confidence: Confidence level before assuming all\n            the interfaces have been observed that will reply at that hop\n        :param int dport: The TCP/UDP destination port to use in probes\n        :param int gaplimit: How many consecutive unresponsive hops before\n            stopping traceroute\n        :param string method: The method to use when sending probes\n            Choices: udp-dport, icmp-echo, udp-sport, tcp-sport, tcp-ack-sport\n        :param bool ptr: Look up names for addresses in this traceroute\n        :param string rtr: The first-hop router to send packets through\n        :param int sport: The TCP/UDP source port to use in probes\n        :param int tos: The byte to use in the field formally known as IP TOS\n        :param int userid: The userid value to tag with this measurement\n        :param timedelta wait_probe: The minimum length of time between probes\n        :param ti""medelta wait_timeout: The length of time to wait for a response\n             for a probe\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: a task object representing the MDA traceroute\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_43do_tracelb = {"do_tracelb", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_43do_tracelb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_42do_tracelb};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_43do_tracelb(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dst = 0;
  PyObject *__pyx_v_confidence = 0;
  PyObject *__pyx_v_dport = 0;
  PyObject *__pyx_v_firsthop = 0;
  PyObject *__pyx_v_gaplimit = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_attempts = 0;
  PyObject *__pyx_v_ptr = 0;
  PyObject *__pyx_v_rtr = 0;
  PyObject *__pyx_v_sport = 0;
  PyObject *__pyx_v_tos = 0;
  PyObject *__pyx_v_wait_timeout = 0;
  PyObject *__pyx_v_wait_probe = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_tracelb (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dst,&__pyx_mstate_global->__pyx_n_u_confidence,&__pyx_mstate_global->__pyx_n_u_dport,&__pyx_mstate_global->__pyx_n_u_firsthop,&__pyx_mstate_global->__pyx_n_u_gaplimit,&__pyx_mstate_global->__pyx_n_u_method,&__pyx_mstate_global->__pyx_n_u_attempts,&__pyx_mstate_global->__pyx_n_u_ptr,&__pyx_mstate_global->__pyx_n_u_rtr,&__pyx_mstate_global->__pyx_n_u_sport,&__pyx_mstate_global->__pyx_n_u_tos,&__pyx_mstate_global->__pyx_n_u_wait_timeout,&__pyx_mstate_global->__pyx_n_u_wait_probe,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9541, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case 16:
        values[15] = __Pyx_ArgRef_FASTCALL(__pyx_args, 15);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[15])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 15:
        values[14] = __Pyx_ArgRef_FASTCALL(__pyx_args, 14);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[14])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 14:
        values[13] = __Pyx_ArgRef_FASTCALL(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_tracelb", 0) < 0) __PYX_ERR(0, 9541, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9542
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,
 *                    firsthop=None, gaplimit=None, method=None,             # <<<<<<<<<<<<<<
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
 *                    wait_timeout=None, wait_probe=None,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9543
 *     def do_tracelb(self, dst, confidence=None, dport=None,
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,             # <<<<<<<<<<<<<<
 *                    wait_timeout=None, wait_probe=None,
 *                    userid=None, inst=None, sync=False):
*/
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9544
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
 *                    wait_timeout=None, wait_probe=None,             # <<<<<<<<<<<<<<
 *                    userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9545
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
 *                    wait_timeout=None, wait_probe=None,
 *                    userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_tracelb(dst, confidence=None, dport=None, firsthop=None,\
*/
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_tracelb", 0, 1, 16, i); __PYX_ERR(0, 9541, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case 16:
        values[15] = __Pyx_ArgRef_FASTCALL(__pyx_args, 15);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[15])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 15:
        values[14] = __Pyx_ArgRef_FASTCALL(__pyx_args, 14);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[14])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 14:
        values[13] = __Pyx_ArgRef_FASTCALL(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9541, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9541, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":9541
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9542
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,
 *                    firsthop=None, gaplimit=None, method=None,             # <<<<<<<<<<<<<<
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
 *                    wait_timeout=None, wait_probe=None,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9543
 *     def do_tracelb(self, dst, confidence=None, dport=None,
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,             # <<<<<<<<<<<<<<
 *                    wait_timeout=None, wait_probe=None,
 *                    userid=None, inst=None, sync=False):
*/
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9544
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
 *                    wait_timeout=None, wait_probe=None,             # <<<<<<<<<<<<<<
 *                    userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9545
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
 *                    wait_timeout=None, wait_probe=None,
 *                    userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_tracelb(dst, confidence=None, dport=None, firsthop=None,\
*/
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_dst = values[0];
    __pyx_v_confidence = values[1];
    __pyx_v_dport = values[2];
    __pyx_v_firsthop = values[3];
    __pyx_v_gaplimit = values[4];
    __pyx_v_method = values[5];
    __pyx_v_attempts = values[6];
    __pyx_v_ptr = values[7];
    __pyx_v_rtr = values[8];
    __pyx_v_sport = values[9];
    __pyx_v_tos = values[10];
    __pyx_v_wait_timeout = values[11];
    __pyx_v_wait_probe = values[12];
    __pyx_v_userid = values[13];
    __pyx_v_inst = values[14];
    __pyx_v_sync = values[15];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_tracelb", 0, 1, 16, __pyx_nargs); __PYX_ERR(0, 9541, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_tracelb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_42do_tracelb(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_dst, __pyx_v_confidence, __pyx_v_dport, __pyx_v_firsthop, __pyx_v_gaplimit, __pyx_v_method, __pyx_v_attempts, __pyx_v_ptr, __pyx_v_rtr, __pyx_v_sport, __pyx_v_tos, __pyx_v_wait_timeout, __pyx_v_wait_probe, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":9541
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7scamper_11ScamperCtrl_10do_tracelb_2generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "scamper.pyx":9597
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_10do_tracelb_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *)__pyx_tp_new_7scamper___pyx_scope_struct_6_genexpr(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9597, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7scamper_11ScamperCtrl_10do_tracelb_2generator4, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[4]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_do_tracelb_locals_genexpr, __pyx_mstate_global->__pyx_n_u_scamper); if (unlikely(!gen)) __PYX_ERR(0, 9597, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_tracelb.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7scamper_11ScamperCtrl_10do_tracelb_2generator4(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9597, __pyx_L1_error)
  __pyx_t_1 = __pyx_mstate_global->__pyx_tuple[0]; __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= 2) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
    #endif
    ++__pyx_t_2;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_s);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_s, ((PyObject*)__pyx_t_3));
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_m)) { __Pyx_RaiseClosureNameError("m"); __PYX_ERR(0, 9597, __pyx_L1_error) }
    __pyx_t_4 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_m;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_s};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9597, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 9597, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_6) {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_True);
      __pyx_r = Py_True;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9541
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_42do_tracelb(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_confidence, PyObject *__pyx_v_dport, PyObject *__pyx_v_firsthop, PyObject *__pyx_v_gaplimit, PyObject *__pyx_v_method, PyObject *__pyx_v_attempts, PyObject *__pyx_v_ptr, PyObject *__pyx_v_rtr, PyObject *__pyx_v_sport, PyObject *__pyx_v_tos, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *__pyx_cur_scope;
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_gb_7scamper_11ScamperCtrl_10do_tracelb_2generator4 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_tracelb", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *)__pyx_tp_new_7scamper___pyx_scope_struct_5_do_tracelb(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9541, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __Pyx_INCREF(__pyx_v_wait_timeout);
  __Pyx_INCREF(__pyx_v_wait_probe);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":9585
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("tracelb")
 *         inst = self._getinst(inst, "tracelb", sync)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9585, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9586
 * 
 *         args = []
 *         args.append("tracelb")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "tracelb", sync)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_n_u_tracelb); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9586, __pyx_L1_error)

  /* "scamper.pyx":9587
 *         args = []
 *         args.append("tracelb")
 *         inst = self._getinst(inst, "tracelb", sync)             # <<<<<<<<<<<<<<
 * 
 *         if method is not None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_tracelb, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9587, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9589
 *         inst = self._getinst(inst, "tracelb", sync)
 * 
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             m = method.lower()
 *         else:
*/
  __pyx_t_5 = (__pyx_v_method != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9590
 * 
 *         if method is not None:
 *             m = method.lower()             # <<<<<<<<<<<<<<
 *         else:
 *             m = None
*/
    __pyx_t_3 = __pyx_v_method;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9590, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_m = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "scamper.pyx":9589
 *         inst = self._getinst(inst, "tracelb", sync)
 * 
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             m = method.lower()
 *         else:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":9592
 *             m = method.lower()
 *         else:
 *             m = None             # <<<<<<<<<<<<<<
 * 
 *         if sport is not None or dport is not None:
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_cur_scope->__pyx_v_m = Py_None;
  }
  __pyx_L3:;

  /* "scamper.pyx":9594
 *             m = None
 * 
 *         if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
*/
  __pyx_t_6 = (__pyx_v_sport != Py_None);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L5_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_dport != Py_None);
  __pyx_t_5 = __pyx_t_6;
  __pyx_L5_bool_binop_done:;
  if (__pyx_t_5) {

    /* "scamper.pyx":9595
 * 
 *         if sport is not None or dport is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
*/
    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_m == Py_None);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":9596
 *         if sport is not None or dport is not None:
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")             # <<<<<<<<<<<<<<
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
 *                 raise ValueError("cannot specify source or destination ports with " + method)
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_7 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_specify_method_when_specifying_t};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9596, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9596, __pyx_L1_error)

      /* "scamper.pyx":9595
 * 
 *         if sport is not None or dport is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
*/
    }

    /* "scamper.pyx":9597
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
    __pyx_t_1 = __pyx_pf_7scamper_11ScamperCtrl_10do_tracelb_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_Generator_GetInlinedResult(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9597, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_7); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 9597, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_6 = (!__pyx_t_5);
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":9598
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
 *                 raise ValueError("cannot specify source or destination ports with " + method)             # <<<<<<<<<<<<<<
 * 
 *         if confidence is not None:
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_8 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_source_or_destina, __pyx_v_method); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9598, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_8};
        __pyx_t_7 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9598, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_Raise(__pyx_t_7, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __PYX_ERR(0, 9598, __pyx_L1_error)

      /* "scamper.pyx":9597
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
    }

    /* "scamper.pyx":9594
 *             m = None
 * 
 *         if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
*/
  }

  /* "scamper.pyx":9600
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
 *         if confidence is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-c {confidence}")
 *         if dport is not None:
*/
  __pyx_t_6 = (__pyx_v_confidence != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9601
 * 
 *         if confidence is not None:
 *             args.append(f"-c {confidence}")             # <<<<<<<<<<<<<<
 *         if dport is not None:
 *             args.append(f"-d {dport}")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_confidence, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_c_2, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9601, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9601, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":9600
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
 *         if confidence is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-c {confidence}")
 *         if dport is not None:
*/
  }

  /* "scamper.pyx":9602
 *         if confidence is not None:
 *             args.append(f"-c {confidence}")
 *         if dport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-d {dport}")
 *         if firsthop is not None:
*/
  __pyx_t_6 = (__pyx_v_dport != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9603
 *             args.append(f"-c {confidence}")
 *         if dport is not None:
 *             args.append(f"-d {dport}")             # <<<<<<<<<<<<<<
 *         if firsthop is not None:
 *             args.append(f"-f {firsthop}")
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_dport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_d_2, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9603, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9603, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9602
 *         if confidence is not None:
 *             args.append(f"-c {confidence}")
 *         if dport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-d {dport}")
 *         if firsthop is not None:
*/
  }

  /* "scamper.pyx":9604
 *         if dport is not None:
 *             args.append(f"-d {dport}")
 *         if firsthop is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-f {firsthop}")
 *         if gaplimit is not None:
*/
  __pyx_t_6 = (__pyx_v_firsthop != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9605
 *             args.append(f"-d {dport}")
 *         if firsthop is not None:
 *             args.append(f"-f {firsthop}")             # <<<<<<<<<<<<<<
 *         if gaplimit is not None:
 *             args.append(f"-g {gaplimit}")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_firsthop, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9605, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_f, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9605, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9605, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":9604
 *         if dport is not None:
 *             args.append(f"-d {dport}")
 *         if firsthop is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-f {firsthop}")
 *         if gaplimit is not None:
*/
  }

  /* "scamper.pyx":9606
 *         if firsthop is not None:
 *             args.append(f"-f {firsthop}")
 *         if gaplimit is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-g {gaplimit}")
 *         if method is not None:
*/
  __pyx_t_6 = (__pyx_v_gaplimit != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9607
 *             args.append(f"-f {firsthop}")
 *         if gaplimit is not None:
 *             args.append(f"-g {gaplimit}")             # <<<<<<<<<<<<<<
 *         if method is not None:
 *             args.append(f"-P {method}")
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_gaplimit, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_g, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9607, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9607, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9606
 *         if firsthop is not None:
 *             args.append(f"-f {firsthop}")
 *         if gaplimit is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-g {gaplimit}")
 *         if method is not None:
*/
  }

  /* "scamper.pyx":9608
 *         if gaplimit is not None:
 *             args.append(f"-g {gaplimit}")
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-P {method}")
 *         if attempts is not None:
*/
  __pyx_t_6 = (__pyx_v_method != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9609
 *             args.append(f"-g {gaplimit}")
 *         if method is not None:
 *             args.append(f"-P {method}")             # <<<<<<<<<<<<<<
 *         if attempts is not None:
 *             args.append(f"-q {attempts}")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_method, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_P, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9609, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9609, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":9608
 *         if gaplimit is not None:
 *             args.append(f"-g {gaplimit}")
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-P {method}")
 *         if attempts is not None:
*/
  }

  /* "scamper.pyx":9610
 *         if method is not None:
 *             args.append(f"-P {method}")
 *         if attempts is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-q {attempts}")
 *         if ptr is not None and ptr is True:
*/
  __pyx_t_6 = (__pyx_v_attempts != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9611
 *             args.append(f"-P {method}")
 *         if attempts is not None:
 *             args.append(f"-q {attempts}")             # <<<<<<<<<<<<<<
 *         if ptr is not None and ptr is True:
 *             args.append("-O ptr")
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_attempts, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_q, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9611, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9611, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9610
 *         if method is not None:
 *             args.append(f"-P {method}")
 *         if attempts is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-q {attempts}")
 *         if ptr is not None and ptr is True:
*/
  }

  /* "scamper.pyx":9612
 *         if attempts is not None:
 *             args.append(f"-q {attempts}")
 *         if ptr is not None and ptr is True:             # <<<<<<<<<<<<<<
 *             args.append("-O ptr")
 *         if rtr is not None:
*/
  __pyx_t_5 = (__pyx_v_ptr != Py_None);
  if (__pyx_t_5) {
  } else {
    __pyx_t_6 = __pyx_t_5;
    goto __pyx_L15_bool_binop_done;
  }
  __pyx_t_5 = (__pyx_v_ptr == Py_True);
  __pyx_t_6 = __pyx_t_5;
  __pyx_L15_bool_binop_done:;
  if (__pyx_t_6) {

    /* "scamper.pyx":9613
 *             args.append(f"-q {attempts}")
 *         if ptr is not None and ptr is True:
 *             args.append("-O ptr")             # <<<<<<<<<<<<<<
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_O_ptr); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9613, __pyx_L1_error)

    /* "scamper.pyx":9612
 *         if attempts is not None:
 *             args.append(f"-q {attempts}")
 *         if ptr is not None and ptr is True:             # <<<<<<<<<<<<<<
 *             args.append("-O ptr")
 *         if rtr is not None:
*/
  }

  /* "scamper.pyx":9614
 *         if ptr is not None and ptr is True:
 *             args.append("-O ptr")
 *         if rtr is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-r {rtr}")
 *         if sport is not None:
*/
  __pyx_t_6 = (__pyx_v_rtr != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9615
 *             args.append("-O ptr")
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")             # <<<<<<<<<<<<<<
 *         if sport is not None:
 *             args.append(f"-s {sport}")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_rtr, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9615, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_r_2, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9615, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9615, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":9614
 *         if ptr is not None and ptr is True:
 *             args.append("-O ptr")
 *         if rtr is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-r {rtr}")
 *         if sport is not None:
*/
  }

  /* "scamper.pyx":9616
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")
 *         if sport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-s {sport}")
 *         if tos is not None:
*/
  __pyx_t_6 = (__pyx_v_sport != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9617
 *             args.append(f"-r {rtr}")
 *         if sport is not None:
 *             args.append(f"-s {sport}")             # <<<<<<<<<<<<<<
 *         if tos is not None:
 *             args.append(f"-t {tos}")
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_sport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_s, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9617, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9617, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9616
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")
 *         if sport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-s {sport}")
 *         if tos is not None:
*/
  }

  /* "scamper.pyx":9618
 *         if sport is not None:
 *             args.append(f"-s {sport}")
 *         if tos is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-t {tos}")
 *         if userid is not None:
*/
  __pyx_t_6 = (__pyx_v_tos != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9619
 *             args.append(f"-s {sport}")
 *         if tos is not None:
 *             args.append(f"-t {tos}")             # <<<<<<<<<<<<<<
 *         if userid is not None:
 *             args.append(f"-U {userid}")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_tos, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9619, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_t, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9619, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9619, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":9618
 *         if sport is not None:
 *             args.append(f"-s {sport}")
 *         if tos is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-t {tos}")
 *         if userid is not None:
*/
  }

  /* "scamper.pyx":9620
 *         if tos is not None:
 *             args.append(f"-t {tos}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
*/
  __pyx_t_6 = (__pyx_v_userid != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9621
 *             args.append(f"-t {tos}")
 *         if userid is not None:
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9621, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9621, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9620
 *         if tos is not None:
 *             args.append(f"-t {tos}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
*/
  }

  /* "scamper.pyx":9622
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  __pyx_t_6 = (__pyx_v_wait_timeout != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9623
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9623, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_6 = PyObject_IsInstance(__pyx_v_wait_timeout, __pyx_t_3); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 9623, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = (!__pyx_t_6);
    if (__pyx_t_5) {

      /* "scamper.pyx":9624
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)             # <<<<<<<<<<<<<<
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         if wait_probe is not None:
*/
      __pyx_t_7 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9624, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9624, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_7);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_7, NULL};
        __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9624, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_timeout, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9624, __pyx_L1_error)
        __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_1, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9624, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_timeout, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "scamper.pyx":9623
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
*/
    }

    /* "scamper.pyx":9625
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_timeout, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_w_2;
    __pyx_t_9[1] = __pyx_t_3;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9625, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9625, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9622
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  }

  /* "scamper.pyx":9626
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  __pyx_t_5 = (__pyx_v_wait_probe != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9627
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9627, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9627, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = PyObject_IsInstance(__pyx_v_wait_probe, __pyx_t_3); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 9627, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = (!__pyx_t_5);
    if (__pyx_t_6) {

      /* "scamper.pyx":9628
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)             # <<<<<<<<<<<<<<
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         args.append(f"{dst}")
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9628, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9628, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_7))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_7);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_7, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL};
        __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9628, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_probe, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9628, __pyx_L1_error)
        __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_7, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9628, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_probe, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "scamper.pyx":9627
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
*/
    }

    /* "scamper.pyx":9629
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         args.append(f"{dst}")
 * 
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_probe, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_W;
    __pyx_t_9[1] = __pyx_t_3;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9629, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9629, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9626
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  }

  /* "scamper.pyx":9630
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         args.append(f"{dst}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_dst, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9630, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9630, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "scamper.pyx":9632
 *         args.append(f"{dst}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     # the optional parameters are ordered roughly according to the order
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_8 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9632, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_t_8, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_7 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9632, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":9541
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_tracelb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_gb_7scamper_11ScamperCtrl_10do_tracelb_2generator4);
  __Pyx_XDECREF(__pyx_v_wait_timeout);
  __Pyx_XDECREF(__pyx_v_wait_probe);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9636
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying ping command
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,             # <<<<<<<<<<<<<<
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_45do_ping(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_44do_ping, "\n        do_ping(dst, tcp_ack=None, tcp_seq=None, attempts=None,                icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,                sport=None, wait_probe=None, ttl=None, mtu=None,                stop_count=None, method=None, payload=None, rtr=None,                recordroute=None, dltx=None, size=None, src=None,                wait_timeout=None, tos=None,                userid=None, inst=None, sync=False)\n        conduct a ping guided by the assembled parameters.\n        Only the dst parameter is required; scamper will use built-in\n        defaults for the other optional parameters if they are not\n        provided.  If any parameters conflict with other parameters\n        (e.g., specifying a sport or dport while also specifying icmp-echo\n        method) then this method will raise a :py:exc:`ValueError` exception.\n        If this method could not queue the measurement, it will raise a\n        :py:exc:`RuntimeError` exception.\n\n        :param string dst: The destination IP address to probe\n        :param ScamperInst inst: The specific instance to issue command over\n        :param int attempts: The number of probes to send\n        :param int dport: The TCP/UDP destination port to use in probes\n        :param int icmp_id: The ID number to include in the ICMP header\n        :param int icmp_seq: The sequence number to include in the ICMP header\n        :param int icmp_sum: The checksum to use in the ICMP header\n        :param string method: The method to use when sending probes.\n            Choices: icmp-echo, icmp-time, udp, udp-port, tcp-syn,\n            tcp-syn-sport, tcp-synack, tcp-ack, tcp-ack-sport, tcp-rst\n        :param int mtu: The pseudo MTU to use for this ping; responses larger\n            than this value will cause ping to send an ICMP packet-too-big to\n            the destination.\n        :param bytes payload: the payload to include in probes.\n        :param bool recordroute: Include the IP record-route option i""n probes.\n        :param bool dltx: use datalink interface to transmit probe.\n        :param int stop_count: Stop pinging after receiving this many replies.\n        :param int rtr: The first-hop router to send packets through.\n        :param int size: The size of packets to send.\n        :param int sport: The TCP/UDP source port to use in probes.\n        :param string src: The source IP address to use in probes.\n        :param int tcp_ack: The TCP acknowledgement value to use in probes,\n            for tcp-ack, tcp-ack-sport, and tcp-synack methods.\n        :param int tcp_seq: The TCP sequence value to use in probes,\n            for tcp-syn, tcp-syn-sport, and tcp-rst methods.\n        :param int tos: The byte to use in the field formally known as IP TOS.\n        :param int userid: The userid value to tag with the traceroute.\n        :param timedelta wait_probe: The minimum length of time between probes.\n        :param timedelta wait_timeout: The length of time to wait for response\n            for a probe.\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: a task object representing the ping\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_45do_ping = {"do_ping", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_45do_ping, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_44do_ping};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_45do_ping(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dst = 0;
  PyObject *__pyx_v_tcp_ack = 0;
  PyObject *__pyx_v_tcp_seq = 0;
  PyObject *__pyx_v_attempts = 0;
  PyObject *__pyx_v_icmp_id = 0;
  PyObject *__pyx_v_icmp_seq = 0;
  PyObject *__pyx_v_icmp_sum = 0;
  PyObject *__pyx_v_dport = 0;
  PyObject *__pyx_v_sport = 0;
  PyObject *__pyx_v_wait_probe = 0;
  PyObject *__pyx_v_ttl = 0;
  PyObject *__pyx_v_mtu = 0;
  PyObject *__pyx_v_stop_count = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_payload = 0;
  PyObject *__pyx_v_rtr = 0;
  PyObject *__pyx_v_recordroute = 0;
  PyObject *__pyx_v_dltx = 0;
  PyObject *__pyx_v_size = 0;
  PyObject *__pyx_v_src = 0;
  PyObject *__pyx_v_wait_timeout = 0;
  PyObject *__pyx_v_tos = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[25] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_ping (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dst,&__pyx_mstate_global->__pyx_n_u_tcp_ack,&__pyx_mstate_global->__pyx_n_u_tcp_seq,&__pyx_mstate_global->__pyx_n_u_attempts,&__pyx_mstate_global->__pyx_n_u_icmp_id,&__pyx_mstate_global->__pyx_n_u_icmp_seq,&__pyx_mstate_global->__pyx_n_u_icmp_sum,&__pyx_mstate_global->__pyx_n_u_dport,&__pyx_mstate_global->__pyx_n_u_sport,&__pyx_mstate_global->__pyx_n_u_wait_probe,&__pyx_mstate_global->__pyx_n_u_ttl_3,&__pyx_mstate_global->__pyx_n_u_mtu,&__pyx_mstate_global->__pyx_n_u_stop_count,&__pyx_mstate_global->__pyx_n_u_method,&__pyx_mstate_global->__pyx_n_u_payload,&__pyx_mstate_global->__pyx_n_u_rtr,&__pyx_mstate_global->__pyx_n_u_recordroute,&__pyx_mstate_global->__pyx_n_u_dltx,&__pyx_mstate_global->__pyx_n_u_size,&__pyx_mstate_global->__pyx_n_u_src,&__pyx_mstate_global->__pyx_n_u_wait_timeout,&__pyx_mstate_global->__pyx_n_u_tos,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9636, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case 25:
        values[24] = __Pyx_ArgRef_FASTCALL(__pyx_args, 24);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[24])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 24:
        values[23] = __Pyx_ArgRef_FASTCALL(__pyx_args, 23);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[23])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 23:
        values[22] = __Pyx_ArgRef_FASTCALL(__pyx_args, 22);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[22])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 22:
        values[21] = __Pyx_ArgRef_FASTCALL(__pyx_args, 21);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[21])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 21:
        values[20] = __Pyx_ArgRef_FASTCALL(__pyx_args, 20);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[20])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 20:
        values[19] = __Pyx_ArgRef_FASTCALL(__pyx_args, 19);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[19])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 19:
        values[18] = __Pyx_ArgRef_FASTCALL(__pyx_args, 18);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[18])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 18:
        values[17] = __Pyx_ArgRef_FASTCALL(__pyx_args, 17);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[17])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 17:
        values[16] = __Pyx_ArgRef_FASTCALL(__pyx_args, 16);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[16])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 16:
        values[15] = __Pyx_ArgRef_FASTCALL(__pyx_args, 15);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[15])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 15:
        values[14] = __Pyx_ArgRef_FASTCALL(__pyx_args, 14);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[14])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 14:
        values[13] = __Pyx_ArgRef_FASTCALL(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_ping", 0) < 0) __PYX_ERR(0, 9636, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9637
 *     # these appear in the underlying ping command
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,             # <<<<<<<<<<<<<<
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
 *                 stop_count=None, method=None, payload=None, rtr=None,
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9638
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,             # <<<<<<<<<<<<<<
 *                 stop_count=None, method=None, payload=None, rtr=None,
 *                 recordroute=None, dltx=None, size=None, src=None,
*/
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9639
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
 *                 stop_count=None, method=None, payload=None, rtr=None,             # <<<<<<<<<<<<<<
 *                 recordroute=None, dltx=None, size=None, src=None,
 *                 wait_timeout=None, tos=None,
*/
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9640
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
 *                 stop_count=None, method=None, payload=None, rtr=None,
 *                 recordroute=None, dltx=None, size=None, src=None,             # <<<<<<<<<<<<<<
 *                 wait_timeout=None, tos=None,
 *                 userid=None, inst=None, sync=False):
*/
      if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9641
 *                 stop_count=None, method=None, payload=None, rtr=None,
 *                 recordroute=None, dltx=None, size=None, src=None,
 *                 wait_timeout=None, tos=None,             # <<<<<<<<<<<<<<
 *                 userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[20]) values[20] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[21]) values[21] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9642
 *                 recordroute=None, dltx=None, size=None, src=None,
 *                 wait_timeout=None, tos=None,
 *                 userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_ping(dst, tcp_ack=None, tcp_seq=None, attempts=None,\
*/
      if (!values[22]) values[22] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[23]) values[23] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[24]) values[24] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_ping", 0, 1, 25, i); __PYX_ERR(0, 9636, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case 25:
        values[24] = __Pyx_ArgRef_FASTCALL(__pyx_args, 24);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[24])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 24:
        values[23] = __Pyx_ArgRef_FASTCALL(__pyx_args, 23);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[23])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 23:
        values[22] = __Pyx_ArgRef_FASTCALL(__pyx_args, 22);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[22])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 22:
        values[21] = __Pyx_ArgRef_FASTCALL(__pyx_args, 21);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[21])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 21:
        values[20] = __Pyx_ArgRef_FASTCALL(__pyx_args, 20);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[20])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 20:
        values[19] = __Pyx_ArgRef_FASTCALL(__pyx_args, 19);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[19])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 19:
        values[18] = __Pyx_ArgRef_FASTCALL(__pyx_args, 18);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[18])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 18:
        values[17] = __Pyx_ArgRef_FASTCALL(__pyx_args, 17);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[17])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 17:
        values[16] = __Pyx_ArgRef_FASTCALL(__pyx_args, 16);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[16])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 16:
        values[15] = __Pyx_ArgRef_FASTCALL(__pyx_args, 15);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[15])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 15:
        values[14] = __Pyx_ArgRef_FASTCALL(__pyx_args, 14);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[14])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 14:
        values[13] = __Pyx_ArgRef_FASTCALL(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9636, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9636, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":9636
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying ping command
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,             # <<<<<<<<<<<<<<
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9637
 *     # these appear in the underlying ping command
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,             # <<<<<<<<<<<<<<
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
 *                 stop_count=None, method=None, payload=None, rtr=None,
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9638
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,             # <<<<<<<<<<<<<<
 *                 stop_count=None, method=None, payload=None, rtr=None,
 *                 recordroute=None, dltx=None, size=None, src=None,
*/
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9639
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
 *                 stop_count=None, method=None, payload=None, rtr=None,             # <<<<<<<<<<<<<<
 *                 recordroute=None, dltx=None, size=None, src=None,
 *                 wait_timeout=None, tos=None,
*/
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[14]) values[14] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[15]) values[15] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9640
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
 *                 stop_count=None, method=None, payload=None, rtr=None,
 *                 recordroute=None, dltx=None, size=None, src=None,             # <<<<<<<<<<<<<<
 *                 wait_timeout=None, tos=None,
 *                 userid=None, inst=None, sync=False):
*/
      if (!values[16]) values[16] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[17]) values[17] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[18]) values[18] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[19]) values[19] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9641
 *                 stop_count=None, method=None, payload=None, rtr=None,
 *                 recordroute=None, dltx=None, size=None, src=None,
 *                 wait_timeout=None, tos=None,             # <<<<<<<<<<<<<<
 *                 userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[20]) values[20] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[21]) values[21] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9642
 *                 recordroute=None, dltx=None, size=None, src=None,
 *                 wait_timeout=None, tos=None,
 *                 userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_ping(dst, tcp_ack=None, tcp_seq=None, attempts=None,\
*/
      if (!values[22]) values[22] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[23]) values[23] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[24]) values[24] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_dst = values[0];
    __pyx_v_tcp_ack = values[1];
    __pyx_v_tcp_seq = values[2];
    __pyx_v_attempts = values[3];
    __pyx_v_icmp_id = values[4];
    __pyx_v_icmp_seq = values[5];
    __pyx_v_icmp_sum = values[6];
    __pyx_v_dport = values[7];
    __pyx_v_sport = values[8];
    __pyx_v_wait_probe = values[9];
    __pyx_v_ttl = values[10];
    __pyx_v_mtu = values[11];
    __pyx_v_stop_count = values[12];
    __pyx_v_method = values[13];
    __pyx_v_payload = values[14];
    __pyx_v_rtr = values[15];
    __pyx_v_recordroute = values[16];
    __pyx_v_dltx = values[17];
    __pyx_v_size = values[18];
    __pyx_v_src = values[19];
    __pyx_v_wait_timeout = values[20];
    __pyx_v_tos = values[21];
    __pyx_v_userid = values[22];
    __pyx_v_inst = values[23];
    __pyx_v_sync = values[24];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_ping", 0, 1, 25, __pyx_nargs); __PYX_ERR(0, 9636, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_ping", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_44do_ping(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_dst, __pyx_v_tcp_ack, __pyx_v_tcp_seq, __pyx_v_attempts, __pyx_v_icmp_id, __pyx_v_icmp_seq, __pyx_v_icmp_sum, __pyx_v_dport, __pyx_v_sport, __pyx_v_wait_probe, __pyx_v_ttl, __pyx_v_mtu, __pyx_v_stop_count, __pyx_v_method, __pyx_v_payload, __pyx_v_rtr, __pyx_v_recordroute, __pyx_v_dltx, __pyx_v_size, __pyx_v_src, __pyx_v_wait_timeout, __pyx_v_tos, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":9636
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying ping command
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,             # <<<<<<<<<<<<<<
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7scamper_11ScamperCtrl_7do_ping_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "scamper.pyx":9719
 *                 raise ValueError("cannot specify tcp_ack with " + method)
 *             elif (tcp_seq is not None and
 *                   not any(m.startswith(s) for s in ["tcp-syn", "tcp-rst"])):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify tcp_seq with " + method)
 * 
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_7do_ping_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *)__pyx_tp_new_7scamper___pyx_scope_struct_8_genexpr(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9719, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7scamper_11ScamperCtrl_7do_ping_2generator5, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[5]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_do_ping_locals_genexpr, __pyx_mstate_global->__pyx_n_u_scamper); if (unlikely(!gen)) __PYX_ERR(0, 9719, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_ping.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7scamper_11ScamperCtrl_7do_ping_2generator5(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9719, __pyx_L1_error)
  __pyx_t_1 = __pyx_mstate_global->__pyx_tuple[1]; __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= 2) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
    #endif
    ++__pyx_t_2;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_s);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_s, ((PyObject*)__pyx_t_3));
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_m)) { __Pyx_RaiseClosureNameError("m"); __PYX_ERR(0, 9719, __pyx_L1_error) }
    __pyx_t_4 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_m;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_s};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9719, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 9719, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_6) {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_True);
      __pyx_r = Py_True;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7scamper_11ScamperCtrl_7do_ping_5generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "scamper.pyx":9733
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_7do_ping_3genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *)__pyx_tp_new_7scamper___pyx_scope_struct_9_genexpr(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9733, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7scamper_11ScamperCtrl_7do_ping_5generator6, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[6]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_do_ping_locals_genexpr, __pyx_mstate_global->__pyx_n_u_scamper); if (unlikely(!gen)) __PYX_ERR(0, 9733, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_ping.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7scamper_11ScamperCtrl_7do_ping_5generator6(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9733, __pyx_L1_error)
  __pyx_t_1 = __pyx_mstate_global->__pyx_tuple[0]; __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= 2) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
    #endif
    ++__pyx_t_2;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9733, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_s);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_s, ((PyObject*)__pyx_t_3));
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_m)) { __Pyx_RaiseClosureNameError("m"); __PYX_ERR(0, 9733, __pyx_L1_error) }
    __pyx_t_4 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_m;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_s};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9733, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 9733, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_6) {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_True);
      __pyx_r = Py_True;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9636
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying ping command
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,             # <<<<<<<<<<<<<<
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_44do_ping(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_tcp_ack, PyObject *__pyx_v_tcp_seq, PyObject *__pyx_v_attempts, PyObject *__pyx_v_icmp_id, PyObject *__pyx_v_icmp_seq, PyObject *__pyx_v_icmp_sum, PyObject *__pyx_v_dport, PyObject *__pyx_v_sport, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_ttl, PyObject *__pyx_v_mtu, PyObject *__pyx_v_stop_count, PyObject *__pyx_v_method, PyObject *__pyx_v_payload, PyObject *__pyx_v_rtr, PyObject *__pyx_v_recordroute, PyObject *__pyx_v_dltx, PyObject *__pyx_v_size, PyObject *__pyx_v_src, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_tos, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *__pyx_cur_scope;
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_gb_7scamper_11ScamperCtrl_7do_ping_2generator5 = 0;
  PyObject *__pyx_gb_7scamper_11ScamperCtrl_7do_ping_5generator6 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  int __pyx_t_8;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_ping", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *)__pyx_tp_new_7scamper___pyx_scope_struct_7_do_ping(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9636, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __Pyx_INCREF(__pyx_v_wait_probe);
  __Pyx_INCREF(__pyx_v_wait_timeout);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":9696
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("ping")
 *         inst = self._getinst(inst, "ping", sync)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9696, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9697
 * 
 *         args = []
 *         args.append("ping")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "ping", sync)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_n_u_ping); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9697, __pyx_L1_error)

  /* "scamper.pyx":9698
 *         args = []
 *         args.append("ping")
 *         inst = self._getinst(inst, "ping", sync)             # <<<<<<<<<<<<<<
 * 
 *         if dst is None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_ping, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9698, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9700
 *         inst = self._getinst(inst, "ping", sync)
 * 
 *         if dst is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("dst cannot be none")
 * 
*/
  __pyx_t_5 = (__pyx_v_dst == Py_None);
  if (unlikely(__pyx_t_5)) {

    /* "scamper.pyx":9701
 * 
 *         if dst is None:
 *             raise ValueError("dst cannot be none")             # <<<<<<<<<<<<<<
 * 
 *         if method is not None:
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_6 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_dst_cannot_be_none};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9701, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 9701, __pyx_L1_error)

    /* "scamper.pyx":9700
 *         inst = self._getinst(inst, "ping", sync)
 * 
 *         if dst is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("dst cannot be none")
 * 
*/
  }

  /* "scamper.pyx":9703
 *             raise ValueError("dst cannot be none")
 * 
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             m = method.lower()
 *         else:
*/
  __pyx_t_5 = (__pyx_v_method != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9704
 * 
 *         if method is not None:
 *             m = method.lower()             # <<<<<<<<<<<<<<
 *         else:
 *             m = None
*/
    __pyx_t_6 = __pyx_v_method;
    __Pyx_INCREF(__pyx_t_6);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9704, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_m = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "scamper.pyx":9703
 *             raise ValueError("dst cannot be none")
 * 
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             m = method.lower()
 *         else:
*/
    goto __pyx_L4;
  }

  /* "scamper.pyx":9706
 *             m = method.lower()
 *         else:
 *             m = None             # <<<<<<<<<<<<<<
 * 
 *         # if user specifies tcp ack/syn then ensure method is appropriate tcp
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_cur_scope->__pyx_v_m = Py_None;
  }
  __pyx_L4:;

  /* "scamper.pyx":9709
 * 
 *         # if user specifies tcp ack/syn then ensure method is appropriate tcp
 *         if tcp_ack is not None or tcp_seq is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying a TCP sequence or acknowledgement value")
*/
  __pyx_t_7 = (__pyx_v_tcp_ack != Py_None);
  if (!__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L6_bool_binop_done;
  }
  __pyx_t_7 = (__pyx_v_tcp_seq != Py_None);
  __pyx_t_5 = __pyx_t_7;
  __pyx_L6_bool_binop_done:;
  if (__pyx_t_5) {

    /* "scamper.pyx":9710
 *         # if user specifies tcp ack/syn then ensure method is appropriate tcp
 *         if tcp_ack is not None or tcp_seq is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying a TCP sequence or acknowledgement value")
 *             elif tcp_ack is not None and tcp_seq is not None:
*/
    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_m == Py_None);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":9711
 *         if tcp_ack is not None or tcp_seq is not None:
 *             if m is None:
 *                 raise ValueError("specify method when specifying a TCP sequence or acknowledgement value")             # <<<<<<<<<<<<<<
 *             elif tcp_ack is not None and tcp_seq is not None:
 *                 raise ValueError("can only specify either TCP sequence or acknowledgement value")
*/
      __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_specify_method_when_specifying_a};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9711, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9711, __pyx_L1_error)

      /* "scamper.pyx":9710
 *         # if user specifies tcp ack/syn then ensure method is appropriate tcp
 *         if tcp_ack is not None or tcp_seq is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying a TCP sequence or acknowledgement value")
 *             elif tcp_ack is not None and tcp_seq is not None:
*/
    }

    /* "scamper.pyx":9712
 *             if m is None:
 *                 raise ValueError("specify method when specifying a TCP sequence or acknowledgement value")
 *             elif tcp_ack is not None and tcp_seq is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("can only specify either TCP sequence or acknowledgement value")
 *             elif icmp_sum is not None:
*/
    __pyx_t_7 = (__pyx_v_tcp_ack != Py_None);
    if (__pyx_t_7) {
    } else {
      __pyx_t_5 = __pyx_t_7;
      goto __pyx_L9_bool_binop_done;
    }
    __pyx_t_7 = (__pyx_v_tcp_seq != Py_None);
    __pyx_t_5 = __pyx_t_7;
    __pyx_L9_bool_binop_done:;
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":9713
 *                 raise ValueError("specify method when specifying a TCP sequence or acknowledgement value")
 *             elif tcp_ack is not None and tcp_seq is not None:
 *                 raise ValueError("can only specify either TCP sequence or acknowledgement value")             # <<<<<<<<<<<<<<
 *             elif icmp_sum is not None:
 *                 raise ValueError("cannot specify ICMP checksum with TCP parameters")
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_6 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_can_only_specify_either_TCP_sequ};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9713, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9713, __pyx_L1_error)

      /* "scamper.pyx":9712
 *             if m is None:
 *                 raise ValueError("specify method when specifying a TCP sequence or acknowledgement value")
 *             elif tcp_ack is not None and tcp_seq is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("can only specify either TCP sequence or acknowledgement value")
 *             elif icmp_sum is not None:
*/
    }

    /* "scamper.pyx":9714
 *             elif tcp_ack is not None and tcp_seq is not None:
 *                 raise ValueError("can only specify either TCP sequence or acknowledgement value")
 *             elif icmp_sum is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify ICMP checksum with TCP parameters")
 *             elif tcp_ack is not None and not m.startswith("tcp-ack"):
*/
    __pyx_t_5 = (__pyx_v_icmp_sum != Py_None);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":9715
 *                 raise ValueError("can only specify either TCP sequence or acknowledgement value")
 *             elif icmp_sum is not None:
 *                 raise ValueError("cannot specify ICMP checksum with TCP parameters")             # <<<<<<<<<<<<<<
 *             elif tcp_ack is not None and not m.startswith("tcp-ack"):
 *                 raise ValueError("cannot specify tcp_ack with " + method)
*/
      __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_cannot_specify_ICMP_checksum_wit};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9715, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9715, __pyx_L1_error)

      /* "scamper.pyx":9714
 *             elif tcp_ack is not None and tcp_seq is not None:
 *                 raise ValueError("can only specify either TCP sequence or acknowledgement value")
 *             elif icmp_sum is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify ICMP checksum with TCP parameters")
 *             elif tcp_ack is not None and not m.startswith("tcp-ack"):
*/
    }

    /* "scamper.pyx":9716
 *             elif icmp_sum is not None:
 *                 raise ValueError("cannot specify ICMP checksum with TCP parameters")
 *             elif tcp_ack is not None and not m.startswith("tcp-ack"):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify tcp_ack with " + method)
 *             elif (tcp_seq is not None and
*/
    __pyx_t_7 = (__pyx_v_tcp_ack != Py_None);
    if (__pyx_t_7) {
    } else {
      __pyx_t_5 = __pyx_t_7;
      goto __pyx_L11_bool_binop_done;
    }
    __pyx_t_3 = __pyx_cur_scope->__pyx_v_m;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_tcp_ack_2};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9716, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 9716, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = (!__pyx_t_7);
    __pyx_t_5 = __pyx_t_8;
    __pyx_L11_bool_binop_done:;
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":9717
 *                 raise ValueError("cannot specify ICMP checksum with TCP parameters")
 *             elif tcp_ack is not None and not m.startswith("tcp-ack"):
 *                 raise ValueError("cannot specify tcp_ack with " + method)             # <<<<<<<<<<<<<<
 *             elif (tcp_seq is not None and
 *                   not any(m.startswith(s) for s in ["tcp-syn", "tcp-rst"])):
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_6 = __pyx_builtin_ValueError; 
      __pyx_t_9 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_tcp_ack_with, __pyx_v_method); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9717, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_9};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9717, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9717, __pyx_L1_error)

      /* "scamper.pyx":9716
 *             elif icmp_sum is not None:
 *                 raise ValueError("cannot specify ICMP checksum with TCP parameters")
 *             elif tcp_ack is not None and not m.startswith("tcp-ack"):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify tcp_ack with " + method)
 *             elif (tcp_seq is not None and
*/
    }

    /* "scamper.pyx":9718
 *             elif tcp_ack is not None and not m.startswith("tcp-ack"):
 *                 raise ValueError("cannot specify tcp_ack with " + method)
 *             elif (tcp_seq is not None and             # <<<<<<<<<<<<<<
 *                   not any(m.startswith(s) for s in ["tcp-syn", "tcp-rst"])):
 *                 raise ValueError("cannot specify tcp_seq with " + method)
*/
    __pyx_t_8 = (__pyx_v_tcp_seq != Py_None);
    if (__pyx_t_8) {
    } else {
      __pyx_t_5 = __pyx_t_8;
      goto __pyx_L13_bool_binop_done;
    }

    /* "scamper.pyx":9719
 *                 raise ValueError("cannot specify tcp_ack with " + method)
 *             elif (tcp_seq is not None and
 *                   not any(m.startswith(s) for s in ["tcp-syn", "tcp-rst"])):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify tcp_seq with " + method)
 * 
*/
    __pyx_t_1 = __pyx_pf_7scamper_11ScamperCtrl_7do_ping_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_Generator_GetInlinedResult(__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9719, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_8 < 0))) __PYX_ERR(0, 9719, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_7 = (!__pyx_t_8);
    __pyx_t_5 = __pyx_t_7;
    __pyx_L13_bool_binop_done:;

    /* "scamper.pyx":9718
 *             elif tcp_ack is not None and not m.startswith("tcp-ack"):
 *                 raise ValueError("cannot specify tcp_ack with " + method)
 *             elif (tcp_seq is not None and             # <<<<<<<<<<<<<<
 *                   not any(m.startswith(s) for s in ["tcp-syn", "tcp-rst"])):
 *                 raise ValueError("cannot specify tcp_seq with " + method)
*/
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":9720
 *             elif (tcp_seq is not None and
 *                   not any(m.startswith(s) for s in ["tcp-syn", "tcp-rst"])):
 *                 raise ValueError("cannot specify tcp_seq with " + method)             # <<<<<<<<<<<<<<
 * 
 *         # if user specifies ICMP csum/id/seq then ensure method is icmp
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_9 = __pyx_builtin_ValueError; 
      __pyx_t_3 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_tcp_seq_with, __pyx_v_method); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9720, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_3};
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_9, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9720, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(0, 9720, __pyx_L1_error)

      /* "scamper.pyx":9718
 *             elif tcp_ack is not None and not m.startswith("tcp-ack"):
 *                 raise ValueError("cannot specify tcp_ack with " + method)
 *             elif (tcp_seq is not None and             # <<<<<<<<<<<<<<
 *                   not any(m.startswith(s) for s in ["tcp-syn", "tcp-rst"])):
 *                 raise ValueError("cannot specify tcp_seq with " + method)
*/
    }

    /* "scamper.pyx":9709
 * 
 *         # if user specifies tcp ack/syn then ensure method is appropriate tcp
 *         if tcp_ack is not None or tcp_seq is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying a TCP sequence or acknowledgement value")
*/
  }

  /* "scamper.pyx":9723
 * 
 *         # if user specifies ICMP csum/id/seq then ensure method is icmp
 *         if icmp_sum is not None or icmp_id is not None or icmp_seq is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 m = "icmp-echo"
*/
  __pyx_t_7 = (__pyx_v_icmp_sum != Py_None);
  if (!__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_7 = (__pyx_v_icmp_id != Py_None);
  if (!__pyx_t_7) {
  } else {
    __pyx_t_5 = __pyx_t_7;
    goto __pyx_L16_bool_binop_done;
  }
  __pyx_t_7 = (__pyx_v_icmp_seq != Py_None);
  __pyx_t_5 = __pyx_t_7;
  __pyx_L16_bool_binop_done:;
  if (__pyx_t_5) {

    /* "scamper.pyx":9724
 *         # if user specifies ICMP csum/id/seq then ensure method is icmp
 *         if icmp_sum is not None or icmp_id is not None or icmp_seq is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):
*/
    __pyx_t_5 = (__pyx_cur_scope->__pyx_v_m == Py_None);
    if (__pyx_t_5) {

      /* "scamper.pyx":9725
 *         if icmp_sum is not None or icmp_id is not None or icmp_seq is not None:
 *             if m is None:
 *                 m = "icmp-echo"             # <<<<<<<<<<<<<<
 *             elif not m.startswith("icmp"):
 *                 raise ValueError("cannot specify ICMP parameters with " + method)
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_icmp_echo);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_m);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_m, __pyx_mstate_global->__pyx_kp_u_icmp_echo);
      __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_icmp_echo);

      /* "scamper.pyx":9724
 *         # if user specifies ICMP csum/id/seq then ensure method is icmp
 *         if icmp_sum is not None or icmp_id is not None or icmp_seq is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):
*/
      goto __pyx_L19;
    }

    /* "scamper.pyx":9726
 *             if m is None:
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify ICMP parameters with " + method)
 * 
*/
    __pyx_t_9 = __pyx_cur_scope->__pyx_v_m;
    __Pyx_INCREF(__pyx_t_9);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_mstate_global->__pyx_n_u_icmp};
      __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9726, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 9726, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_7 = (!__pyx_t_5);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":9727
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):
 *                 raise ValueError("cannot specify ICMP parameters with " + method)             # <<<<<<<<<<<<<<
 * 
 *         # if user specifies sport/dport then ensure method is tcp or udp
*/
      __pyx_t_9 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_1 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_ICMP_parameters_w, __pyx_v_method); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9727, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_9, __pyx_t_1};
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9727, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(0, 9727, __pyx_L1_error)

      /* "scamper.pyx":9726
 *             if m is None:
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify ICMP parameters with " + method)
 * 
*/
    }
    __pyx_L19:;

    /* "scamper.pyx":9723
 * 
 *         # if user specifies ICMP csum/id/seq then ensure method is icmp
 *         if icmp_sum is not None or icmp_id is not None or icmp_seq is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 m = "icmp-echo"
*/
  }

  /* "scamper.pyx":9730
 * 
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
*/
  __pyx_t_5 = (__pyx_v_sport != Py_None);
  if (!__pyx_t_5) {
  } else {
    __pyx_t_7 = __pyx_t_5;
    goto __pyx_L21_bool_binop_done;
  }
  __pyx_t_5 = (__pyx_v_dport != Py_None);
  __pyx_t_7 = __pyx_t_5;
  __pyx_L21_bool_binop_done:;
  if (__pyx_t_7) {

    /* "scamper.pyx":9731
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
*/
    __pyx_t_7 = (__pyx_cur_scope->__pyx_v_m == Py_None);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":9732
 *         if sport is not None or dport is not None:
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")             # <<<<<<<<<<<<<<
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
 *                 raise ValueError("cannot specify source or destination ports with " + method)
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_1 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_specify_method_when_specifying_t};
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9732, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(0, 9732, __pyx_L1_error)

      /* "scamper.pyx":9731
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
*/
    }

    /* "scamper.pyx":9733
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
    __pyx_t_6 = __pyx_pf_7scamper_11ScamperCtrl_7do_ping_3genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9733, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_Generator_GetInlinedResult(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9733, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 9733, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = (!__pyx_t_7);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":9734
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
 *                 raise ValueError("cannot specify source or destination ports with " + method)             # <<<<<<<<<<<<<<
 * 
 *         if tcp_ack is not None:
*/
      __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_9 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_source_or_destina, __pyx_v_method); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9734, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_9};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9734, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9734, __pyx_L1_error)

      /* "scamper.pyx":9733
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
    }

    /* "scamper.pyx":9730
 * 
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
*/
  }

  /* "scamper.pyx":9736
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
 *         if tcp_ack is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-A {tcp_ack}")
 *         if tcp_seq is not None:
*/
  __pyx_t_5 = (__pyx_v_tcp_ack != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9737
 * 
 *         if tcp_ack is not None:
 *             args.append(f"-A {tcp_ack}")             # <<<<<<<<<<<<<<
 *         if tcp_seq is not None:
 *             args.append(f"-A {tcp_seq}")
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_tcp_ack, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9737, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_A, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9737, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9737, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":9736
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
 *         if tcp_ack is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-A {tcp_ack}")
 *         if tcp_seq is not None:
*/
  }

  /* "scamper.pyx":9738
 *         if tcp_ack is not None:
 *             args.append(f"-A {tcp_ack}")
 *         if tcp_seq is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-A {tcp_seq}")
 *         if payload is not None:
*/
  __pyx_t_5 = (__pyx_v_tcp_seq != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9739
 *             args.append(f"-A {tcp_ack}")
 *         if tcp_seq is not None:
 *             args.append(f"-A {tcp_seq}")             # <<<<<<<<<<<<<<
 *         if payload is not None:
 *             args.append(f"-B {binascii.hexlify(payload).decode('ascii')}")
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_tcp_seq, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9739, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_A, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9739, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9739, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9738
 *         if tcp_ack is not None:
 *             args.append(f"-A {tcp_ack}")
 *         if tcp_seq is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-A {tcp_seq}")
 *         if payload is not None:
*/
  }

  /* "scamper.pyx":9740
 *         if tcp_seq is not None:
 *             args.append(f"-A {tcp_seq}")
 *         if payload is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-B {binascii.hexlify(payload).decode('ascii')}")
 *         if attempts is not None:
*/
  __pyx_t_5 = (__pyx_v_payload != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9741
 *             args.append(f"-A {tcp_seq}")
 *         if payload is not None:
 *             args.append(f"-B {binascii.hexlify(payload).decode('ascii')}")             # <<<<<<<<<<<<<<
 *         if attempts is not None:
 *             args.append(f"-c {attempts}")
*/
    __pyx_t_6 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_binascii); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 9741, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_10);
    __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_10, __pyx_mstate_global->__pyx_n_u_hexlify); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9741, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    __pyx_t_4 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_11))) {
      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_11);
      assert(__pyx_t_6);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
      __Pyx_INCREF(__pyx_t_6);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
      __pyx_t_4 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_v_payload};
      __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_11, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
      if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9741, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_9);
    }
    __pyx_t_3 = __pyx_t_9;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ascii};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9741, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9741, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_B, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9741, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9741, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9740
 *         if tcp_seq is not None:
 *             args.append(f"-A {tcp_seq}")
 *         if payload is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-B {binascii.hexlify(payload).decode('ascii')}")
 *         if attempts is not None:
*/
  }

  /* "scamper.pyx":9742
 *         if payload is not None:
 *             args.append(f"-B {binascii.hexlify(payload).decode('ascii')}")
 *         if attempts is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-c {attempts}")
 *         if icmp_sum is not None:
*/
  __pyx_t_5 = (__pyx_v_attempts != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9743
 *             args.append(f"-B {binascii.hexlify(payload).decode('ascii')}")
 *         if attempts is not None:
 *             args.append(f"-c {attempts}")             # <<<<<<<<<<<<<<
 *         if icmp_sum is not None:
 *             args.append(f"-C {icmp_sum}")
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_attempts, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_c_2, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9743, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9743, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":9742
 *         if payload is not None:
 *             args.append(f"-B {binascii.hexlify(payload).decode('ascii')}")
 *         if attempts is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-c {attempts}")
 *         if icmp_sum is not None:
*/
  }

  /* "scamper.pyx":9744
 *         if attempts is not None:
 *             args.append(f"-c {attempts}")
 *         if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-C {icmp_sum}")
 *         if dport is not None:
*/
  __pyx_t_5 = (__pyx_v_icmp_sum != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9745
 *             args.append(f"-c {attempts}")
 *         if icmp_sum is not None:
 *             args.append(f"-C {icmp_sum}")             # <<<<<<<<<<<<<<
 *         if dport is not None:
 *             args.append(f"-d {dport}")
*/
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_icmp_sum, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_C, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9745, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9745, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9744
 *         if attempts is not None:
 *             args.append(f"-c {attempts}")
 *         if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-C {icmp_sum}")
 *         if dport is not None:
*/
  }

  /* "scamper.pyx":9746
 *         if icmp_sum is not None:
 *             args.append(f"-C {icmp_sum}")
 *         if dport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-d {dport}")
 *         if icmp_seq is not None:
*/
  __pyx_t_5 = (__pyx_v_dport != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9747
 *             args.append(f"-C {icmp_sum}")
 *         if dport is not None:
 *             args.append(f"-d {dport}")             # <<<<<<<<<<<<<<
 *         if icmp_seq is not None:
 *             args.append(f"-d {icmp_seq}")
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_dport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9747, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_d_2, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9747, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9747, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":9746
 *         if icmp_sum is not None:
 *             args.append(f"-C {icmp_sum}")
 *         if dport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-d {dport}")
 *         if icmp_seq is not None:
*/
  }

  /* "scamper.pyx":9748
 *         if dport is not None:
 *             args.append(f"-d {dport}")
 *         if icmp_seq is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-d {icmp_seq}")
 *         if sport is not None:
*/
  __pyx_t_5 = (__pyx_v_icmp_seq != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9749
 *             args.append(f"-d {dport}")
 *         if icmp_seq is not None:
 *             args.append(f"-d {icmp_seq}")             # <<<<<<<<<<<<<<
 *         if sport is not None:
 *             args.append(f"-F {sport}")
*/
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_icmp_seq, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9749, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_d_2, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9749, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9749, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9748
 *         if dport is not None:
 *             args.append(f"-d {dport}")
 *         if icmp_seq is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-d {icmp_seq}")
 *         if sport is not None:
*/
  }

  /* "scamper.pyx":9750
 *         if icmp_seq is not None:
 *             args.append(f"-d {icmp_seq}")
 *         if sport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-F {sport}")
 *         if icmp_id is not None:
*/
  __pyx_t_5 = (__pyx_v_sport != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9751
 *             args.append(f"-d {icmp_seq}")
 *         if sport is not None:
 *             args.append(f"-F {sport}")             # <<<<<<<<<<<<<<
 *         if icmp_id is not None:
 *             args.append(f"-F {icmp_id}")
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_sport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9751, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_F, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9751, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9751, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":9750
 *         if icmp_seq is not None:
 *             args.append(f"-d {icmp_seq}")
 *         if sport is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-F {sport}")
 *         if icmp_id is not None:
*/
  }

  /* "scamper.pyx":9752
 *         if sport is not None:
 *             args.append(f"-F {sport}")
 *         if icmp_id is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-F {icmp_id}")
 *         if wait_probe is not None:
*/
  __pyx_t_5 = (__pyx_v_icmp_id != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9753
 *             args.append(f"-F {sport}")
 *         if icmp_id is not None:
 *             args.append(f"-F {icmp_id}")             # <<<<<<<<<<<<<<
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
*/
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_icmp_id, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9753, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_F, __pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9753, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9753, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9752
 *         if sport is not None:
 *             args.append(f"-F {sport}")
 *         if icmp_id is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-F {icmp_id}")
 *         if wait_probe is not None:
*/
  }

  /* "scamper.pyx":9754
 *         if icmp_id is not None:
 *             args.append(f"-F {icmp_id}")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  __pyx_t_5 = (__pyx_v_wait_probe != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9755
 *             args.append(f"-F {icmp_id}")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-i {wait_probe.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9755, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = PyObject_IsInstance(__pyx_v_wait_probe, __pyx_t_9); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 9755, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_7 = (!__pyx_t_5);
    if (__pyx_t_7) {

      /* "scamper.pyx":9756
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)             # <<<<<<<<<<<<<<
 *             args.append(f"-i {wait_probe.total_seconds()}s")
 *         if ttl is not None:
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9756, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9756, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_11);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_11))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_11);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_11);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_11, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL};
        __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9756, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_probe, __pyx_t_3, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9756, __pyx_L1_error)
        __pyx_t_9 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_11, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9756, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_probe, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "scamper.pyx":9755
 *             args.append(f"-F {icmp_id}")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-i {wait_probe.total_seconds()}s")
*/
    }

    /* "scamper.pyx":9757
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-i {wait_probe.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         if ttl is not None:
 *             args.append(f"-m {ttl}")
*/
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_probe, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9757, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9757, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_11, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9757, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_i_3;
    __pyx_t_12[1] = __pyx_t_9;
    __pyx_t_12[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_11 = __Pyx_PyUnicode_Join(__pyx_t_12, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9));
    if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9757, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_11); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9757, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "scamper.pyx":9754
 *         if icmp_id is not None:
 *             args.append(f"-F {icmp_id}")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  }

  /* "scamper.pyx":9758
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-i {wait_probe.total_seconds()}s")
 *         if ttl is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-m {ttl}")
 *         if mtu is not None:
*/
  __pyx_t_7 = (__pyx_v_ttl != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":9759
 *             args.append(f"-i {wait_probe.total_seconds()}s")
 *         if ttl is not None:
 *             args.append(f"-m {ttl}")             # <<<<<<<<<<<<<<
 *         if mtu is not None:
 *             args.append(f"-M {mtu}")
*/
    __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_ttl, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9759, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_m, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9759, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9759, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":9758
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-i {wait_probe.total_seconds()}s")
 *         if ttl is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-m {ttl}")
 *         if mtu is not None:
*/
  }

  /* "scamper.pyx":9760
 *         if ttl is not None:
 *             args.append(f"-m {ttl}")
 *         if mtu is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-M {mtu}")
 *         if stop_count is not None:
*/
  __pyx_t_7 = (__pyx_v_mtu != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":9761
 *             args.append(f"-m {ttl}")
 *         if mtu is not None:
 *             args.append(f"-M {mtu}")             # <<<<<<<<<<<<<<
 *         if stop_count is not None:
 *             args.append(f"-o {stop_count}")
*/
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_mtu, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_M_2, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9761, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_11); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9761, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "scamper.pyx":9760
 *         if ttl is not None:
 *             args.append(f"-m {ttl}")
 *         if mtu is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-M {mtu}")
 *         if stop_count is not None:
*/
  }

  /* "scamper.pyx":9762
 *         if mtu is not None:
 *             args.append(f"-M {mtu}")
 *         if stop_count is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-o {stop_count}")
 *         if method is not None:
*/
  __pyx_t_7 = (__pyx_v_stop_count != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":9763
 *             args.append(f"-M {mtu}")
 *         if stop_count is not None:
 *             args.append(f"-o {stop_count}")             # <<<<<<<<<<<<<<
 *         if method is not None:
 *             args.append(f"-P {method}")
*/
    __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_stop_count, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9763, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_o, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9763, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9763, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":9762
 *         if mtu is not None:
 *             args.append(f"-M {mtu}")
 *         if stop_count is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-o {stop_count}")
 *         if method is not None:
*/
  }

  /* "scamper.pyx":9764
 *         if stop_count is not None:
 *             args.append(f"-o {stop_count}")
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-P {method}")
 *         if rtr is not None:
*/
  __pyx_t_7 = (__pyx_v_method != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":9765
 *             args.append(f"-o {stop_count}")
 *         if method is not None:
 *             args.append(f"-P {method}")             # <<<<<<<<<<<<<<
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")
*/
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_method, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9765, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_P, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9765, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_11); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9765, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "scamper.pyx":9764
 *         if stop_count is not None:
 *             args.append(f"-o {stop_count}")
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-P {method}")
 *         if rtr is not None:
*/
  }

  /* "scamper.pyx":9766
 *         if method is not None:
 *             args.append(f"-P {method}")
 *         if rtr is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-r {rtr}")
 *         if recordroute is not None and recordroute:
*/
  __pyx_t_7 = (__pyx_v_rtr != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":9767
 *             args.append(f"-P {method}")
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")             # <<<<<<<<<<<<<<
 *         if recordroute is not None and recordroute:
 *             args.append("-R")
*/
    __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_rtr, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_r_2, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9767, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9767, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":9766
 *         if method is not None:
 *             args.append(f"-P {method}")
 *         if rtr is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-r {rtr}")
 *         if recordroute is not None and recordroute:
*/
  }

  /* "scamper.pyx":9768
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")
 *         if recordroute is not None and recordroute:             # <<<<<<<<<<<<<<
 *             args.append("-R")
 *         if dltx is not None and dltx:
*/
  __pyx_t_5 = (__pyx_v_recordroute != Py_None);
  if (__pyx_t_5) {
  } else {
    __pyx_t_7 = __pyx_t_5;
    goto __pyx_L41_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_recordroute); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 9768, __pyx_L1_error)
  __pyx_t_7 = __pyx_t_5;
  __pyx_L41_bool_binop_done:;
  if (__pyx_t_7) {

    /* "scamper.pyx":9769
 *             args.append(f"-r {rtr}")
 *         if recordroute is not None and recordroute:
 *             args.append("-R")             # <<<<<<<<<<<<<<
 *         if dltx is not None and dltx:
 *             args.append("-O dltx")
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_R); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9769, __pyx_L1_error)

    /* "scamper.pyx":9768
 *         if rtr is not None:
 *             args.append(f"-r {rtr}")
 *         if recordroute is not None and recordroute:             # <<<<<<<<<<<<<<
 *             args.append("-R")
 *         if dltx is not None and dltx:
*/
  }

  /* "scamper.pyx":9770
 *         if recordroute is not None and recordroute:
 *             args.append("-R")
 *         if dltx is not None and dltx:             # <<<<<<<<<<<<<<
 *             args.append("-O dltx")
 *         if size is not None:
*/
  __pyx_t_5 = (__pyx_v_dltx != Py_None);
  if (__pyx_t_5) {
  } else {
    __pyx_t_7 = __pyx_t_5;
    goto __pyx_L44_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_dltx); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 9770, __pyx_L1_error)
  __pyx_t_7 = __pyx_t_5;
  __pyx_L44_bool_binop_done:;
  if (__pyx_t_7) {

    /* "scamper.pyx":9771
 *             args.append("-R")
 *         if dltx is not None and dltx:
 *             args.append("-O dltx")             # <<<<<<<<<<<<<<
 *         if size is not None:
 *             args.append(f"-s {size}")
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_O_dltx); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9771, __pyx_L1_error)

    /* "scamper.pyx":9770
 *         if recordroute is not None and recordroute:
 *             args.append("-R")
 *         if dltx is not None and dltx:             # <<<<<<<<<<<<<<
 *             args.append("-O dltx")
 *         if size is not None:
*/
  }

  /* "scamper.pyx":9772
 *         if dltx is not None and dltx:
 *             args.append("-O dltx")
 *         if size is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-s {size}")
 *         if src is not None:
*/
  __pyx_t_7 = (__pyx_v_size != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":9773
 *             args.append("-O dltx")
 *         if size is not None:
 *             args.append(f"-s {size}")             # <<<<<<<<<<<<<<
 *         if src is not None:
 *             args.append(f"-S {src}")
*/
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_size, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9773, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_s, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9773, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_11); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9773, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "scamper.pyx":9772
 *         if dltx is not None and dltx:
 *             args.append("-O dltx")
 *         if size is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-s {size}")
 *         if src is not None:
*/
  }

  /* "scamper.pyx":9774
 *         if size is not None:
 *             args.append(f"-s {size}")
 *         if src is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-S {src}")
 *         if userid is not None:
*/
  __pyx_t_7 = (__pyx_v_src != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":9775
 *             args.append(f"-s {size}")
 *         if src is not None:
 *             args.append(f"-S {src}")             # <<<<<<<<<<<<<<
 *         if userid is not None:
 *             args.append(f"-U {userid}")
*/
    __pyx_t_11 = __Pyx_PyObject_FormatSimple(__pyx_v_src, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_S_2, __pyx_t_11); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9775, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":9774
 *         if size is not None:
 *             args.append(f"-s {size}")
 *         if src is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-S {src}")
 *         if userid is not None:
*/
  }

  /* "scamper.pyx":9776
 *         if src is not None:
 *             args.append(f"-S {src}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
*/
  __pyx_t_7 = (__pyx_v_userid != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":9777
 *             args.append(f"-S {src}")
 *         if userid is not None:
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
*/
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9777, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_11 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_9); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9777, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_11); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9777, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;

    /* "scamper.pyx":9776
 *         if src is not None:
 *             args.append(f"-S {src}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
*/
  }

  /* "scamper.pyx":9778
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  __pyx_t_7 = (__pyx_v_wait_timeout != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":9779
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 9779, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_11);
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9779, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
    __pyx_t_7 = PyObject_IsInstance(__pyx_v_wait_timeout, __pyx_t_9); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 9779, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_5 = (!__pyx_t_7);
    if (__pyx_t_5) {

      /* "scamper.pyx":9780
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)             # <<<<<<<<<<<<<<
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
 *         if tos is not None:
*/
      __pyx_t_11 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9780, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9780, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_11 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_11);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_11);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_11, NULL};
        __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9780, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_timeout, __pyx_t_3, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9780, __pyx_L1_error)
        __pyx_t_9 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_1, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
        __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9780, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_9);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_timeout, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "scamper.pyx":9779
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
*/
    }

    /* "scamper.pyx":9781
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-W {wait_timeout.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         if tos is not None:
 *             args.append(f"-z {tos}")
*/
    __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_timeout, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9781, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_9); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9781, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9781, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_12[0] = __pyx_mstate_global->__pyx_kp_u_W;
    __pyx_t_12[1] = __pyx_t_9;
    __pyx_t_12[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_12, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9));
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9781, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9781, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9778
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  }

  /* "scamper.pyx":9782
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
 *         if tos is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-z {tos}")
 *         args.append(f"{dst}")
*/
  __pyx_t_5 = (__pyx_v_tos != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9783
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
 *         if tos is not None:
 *             args.append(f"-z {tos}")             # <<<<<<<<<<<<<<
 *         args.append(f"{dst}")
 * 
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_tos, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9783, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_z, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9783, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9783, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":9782
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
 *         if tos is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-z {tos}")
 *         args.append(f"{dst}")
*/
  }

  /* "scamper.pyx":9784
 *         if tos is not None:
 *             args.append(f"-z {tos}")
 *         args.append(f"{dst}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_dst, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9784, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9784, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

  /* "scamper.pyx":9786
 *         args.append(f"{dst}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_t_3, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_9 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 9786, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
  }
  __pyx_r = __pyx_t_9;
  __pyx_t_9 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":9636
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying ping command
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,             # <<<<<<<<<<<<<<
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_ping", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_gb_7scamper_11ScamperCtrl_7do_ping_2generator5);
  __Pyx_XDECREF(__pyx_gb_7scamper_11ScamperCtrl_7do_ping_5generator6);
  __Pyx_XDECREF(__pyx_v_wait_probe);
  __Pyx_XDECREF(__pyx_v_wait_timeout);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9788
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,             # <<<<<<<<<<<<<<
 *                attempts=None, rd=None, wait_timeout=None, tcp=None,
 *                nsid=None, ecs=None, userid=None, inst=None, sync=False):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_47do_dns(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_46do_dns, "\n        do_dns(qname, server=None, qclass=None, qtype=None,\n               attempts=None, rd=None, wait_timeout=None, tcp=None,\n               nsid=None, ecs=None, userid=None, inst=None, sync=False)\n        conduct a DNS measurement guided by the assembled parameters.\n        Only the qname is required; scamper will use built-in defaults\n        for the other optional parameters if they are not provided.\n        If any parameters are invalid (e.g. a negative number of attempts)\n        then this method will raise a :py:exc:`ValueError` exception.\n        If this method could not queue the measurement, it will raise a\n        :py:exc:`RuntimeError` exception.\n\n        :param string qname: The name to query\n        :param ScamperInst inst: The specific instance to issue command over\n        :param string server: The DNS server to use\n        :param string qclass: The query class to use\n        :param string qtype: The query type to use\n        :param int attempts: The number of queries to make before giving up\n        :param timedelta wait_timeout: The length of time to wait for a response\n        :param bool tcp: Use TCP instead of UDP for queries\n        :param bool nsid: include EDNS name-server ID request in queries\n        :param string ecs: include EDNS client-subnet in query\n        :param int userid: The userid value to tag with the DNS measurement\n        :param bool rd: The recursion desired value to use\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: a task object representing the DNS measurement\n        :rtype: ScamperTask or the completed measurement if sync=True\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_47do_dns = {"do_dns", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_47do_dns, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_46do_dns};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_47do_dns(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_qname = 0;
  PyObject *__pyx_v_server = 0;
  PyObject *__pyx_v_qclass = 0;
  PyObject *__pyx_v_qtype = 0;
  PyObject *__pyx_v_attempts = 0;
  PyObject *__pyx_v_rd = 0;
  PyObject *__pyx_v_wait_timeout = 0;
  PyObject *__pyx_v_tcp = 0;
  PyObject *__pyx_v_nsid = 0;
  PyObject *__pyx_v_ecs = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_dns (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_qname,&__pyx_mstate_global->__pyx_n_u_server,&__pyx_mstate_global->__pyx_n_u_qclass,&__pyx_mstate_global->__pyx_n_u_qtype,&__pyx_mstate_global->__pyx_n_u_attempts,&__pyx_mstate_global->__pyx_n_u_rd,&__pyx_mstate_global->__pyx_n_u_wait_timeout,&__pyx_mstate_global->__pyx_n_u_tcp,&__pyx_mstate_global->__pyx_n_u_nsid,&__pyx_mstate_global->__pyx_n_u_ecs,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9788, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_dns", 0) < 0) __PYX_ERR(0, 9788, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9789
 * 
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,
 *                attempts=None, rd=None, wait_timeout=None, tcp=None,             # <<<<<<<<<<<<<<
 *                nsid=None, ecs=None, userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9790
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,
 *                attempts=None, rd=None, wait_timeout=None, tcp=None,
 *                nsid=None, ecs=None, userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_dns(qname, server=None, qclass=None, qtype=None,
*/
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_dns", 0, 1, 13, i); __PYX_ERR(0, 9788, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9788, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9788, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":9788
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,             # <<<<<<<<<<<<<<
 *                attempts=None, rd=None, wait_timeout=None, tcp=None,
 *                nsid=None, ecs=None, userid=None, inst=None, sync=False):
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9789
 * 
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,
 *                attempts=None, rd=None, wait_timeout=None, tcp=None,             # <<<<<<<<<<<<<<
 *                nsid=None, ecs=None, userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9790
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,
 *                attempts=None, rd=None, wait_timeout=None, tcp=None,
 *                nsid=None, ecs=None, userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_dns(qname, server=None, qclass=None, qtype=None,
*/
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_qname = values[0];
    __pyx_v_server = values[1];
    __pyx_v_qclass = values[2];
    __pyx_v_qtype = values[3];
    __pyx_v_attempts = values[4];
    __pyx_v_rd = values[5];
    __pyx_v_wait_timeout = values[6];
    __pyx_v_tcp = values[7];
    __pyx_v_nsid = values[8];
    __pyx_v_ecs = values[9];
    __pyx_v_userid = values[10];
    __pyx_v_inst = values[11];
    __pyx_v_sync = values[12];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_dns", 0, 1, 13, __pyx_nargs); __PYX_ERR(0, 9788, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_dns", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_46do_dns(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_qname, __pyx_v_server, __pyx_v_qclass, __pyx_v_qtype, __pyx_v_attempts, __pyx_v_rd, __pyx_v_wait_timeout, __pyx_v_tcp, __pyx_v_nsid, __pyx_v_ecs, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":9788
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,             # <<<<<<<<<<<<<<
 *                attempts=None, rd=None, wait_timeout=None, tcp=None,
 *                nsid=None, ecs=None, userid=None, inst=None, sync=False):
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_46do_dns(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_qname, PyObject *__pyx_v_server, PyObject *__pyx_v_qclass, PyObject *__pyx_v_qtype, PyObject *__pyx_v_attempts, PyObject *__pyx_v_rd, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_tcp, PyObject *__pyx_v_nsid, PyObject *__pyx_v_ecs, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[3];
  int __pyx_t_10;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_dns", 0);
  __Pyx_INCREF(__pyx_v_wait_timeout);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":9821
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("host")
 *         inst = self._getinst(inst, "host", sync)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9821, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9822
 * 
 *         args = []
 *         args.append("host")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "host", sync)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_n_u_host); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9822, __pyx_L1_error)

  /* "scamper.pyx":9823
 *         args = []
 *         args.append("host")
 *         inst = self._getinst(inst, "host", sync)             # <<<<<<<<<<<<<<
 * 
 *         if attempts is not None and attempts < 1:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_host, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9823, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9825
 *         inst = self._getinst(inst, "host", sync)
 * 
 *         if attempts is not None and attempts < 1:             # <<<<<<<<<<<<<<
 *             raise ValueError("attempts < 1")
 * 
*/
  __pyx_t_6 = (__pyx_v_attempts != Py_None);
  if (__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_attempts, __pyx_mstate_global->__pyx_int_1, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9825, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 9825, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_5)) {

    /* "scamper.pyx":9826
 * 
 *         if attempts is not None and attempts < 1:
 *             raise ValueError("attempts < 1")             # <<<<<<<<<<<<<<
 * 
 *         if server is not None:
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_7 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_attempts_1};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9826, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 9826, __pyx_L1_error)

    /* "scamper.pyx":9825
 *         inst = self._getinst(inst, "host", sync)
 * 
 *         if attempts is not None and attempts < 1:             # <<<<<<<<<<<<<<
 *             raise ValueError("attempts < 1")
 * 
*/
  }

  /* "scamper.pyx":9828
 *             raise ValueError("attempts < 1")
 * 
 *         if server is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-s {server}")
 *         if qclass is not None:
*/
  __pyx_t_5 = (__pyx_v_server != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9829
 * 
 *         if server is not None:
 *             args.append(f"-s {server}")             # <<<<<<<<<<<<<<
 *         if qclass is not None:
 *             args.append(f"-c {qclass}")
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_server, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9829, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_s, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9829, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9829, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9828
 *             raise ValueError("attempts < 1")
 * 
 *         if server is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-s {server}")
 *         if qclass is not None:
*/
  }

  /* "scamper.pyx":9830
 *         if server is not None:
 *             args.append(f"-s {server}")
 *         if qclass is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-c {qclass}")
 *         if qtype is not None:
*/
  __pyx_t_5 = (__pyx_v_qclass != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9831
 *             args.append(f"-s {server}")
 *         if qclass is not None:
 *             args.append(f"-c {qclass}")             # <<<<<<<<<<<<<<
 *         if qtype is not None:
 *             args.append(f"-t {qtype}")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_qclass, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9831, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_c_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9831, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9831, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9830
 *         if server is not None:
 *             args.append(f"-s {server}")
 *         if qclass is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-c {qclass}")
 *         if qtype is not None:
*/
  }

  /* "scamper.pyx":9832
 *         if qclass is not None:
 *             args.append(f"-c {qclass}")
 *         if qtype is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-t {qtype}")
 *         if attempts is not None:
*/
  __pyx_t_5 = (__pyx_v_qtype != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9833
 *             args.append(f"-c {qclass}")
 *         if qtype is not None:
 *             args.append(f"-t {qtype}")             # <<<<<<<<<<<<<<
 *         if attempts is not None:
 *             args.append(f"-R {attempts}")
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_qtype, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9833, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_t, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9833, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9833, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9832
 *         if qclass is not None:
 *             args.append(f"-c {qclass}")
 *         if qtype is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-t {qtype}")
 *         if attempts is not None:
*/
  }

  /* "scamper.pyx":9834
 *         if qtype is not None:
 *             args.append(f"-t {qtype}")
 *         if attempts is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-R {attempts}")
 *         if wait_timeout is not None:
*/
  __pyx_t_5 = (__pyx_v_attempts != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9835
 *             args.append(f"-t {qtype}")
 *         if attempts is not None:
 *             args.append(f"-R {attempts}")             # <<<<<<<<<<<<<<
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_attempts, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9835, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_R_2, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9835, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9835, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9834
 *         if qtype is not None:
 *             args.append(f"-t {qtype}")
 *         if attempts is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-R {attempts}")
 *         if wait_timeout is not None:
*/
  }

  /* "scamper.pyx":9836
 *         if attempts is not None:
 *             args.append(f"-R {attempts}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  __pyx_t_5 = (__pyx_v_wait_timeout != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9837
 *             args.append(f"-R {attempts}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9837, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = PyObject_IsInstance(__pyx_v_wait_timeout, __pyx_t_7); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 9837, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_6 = (!__pyx_t_5);
    if (__pyx_t_6) {

      /* "scamper.pyx":9838
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)             # <<<<<<<<<<<<<<
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
 *         if userid is not None:
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9838, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9838, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL};
        __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9838, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_timeout, __pyx_t_3, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9838, __pyx_L1_error)
        __pyx_t_7 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_8, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9838, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_timeout, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "scamper.pyx":9837
 *             args.append(f"-R {attempts}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
*/
    }

    /* "scamper.pyx":9839
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-W {wait_timeout.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         if userid is not None:
 *             args.append(f"-U {userid}")
*/
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_timeout, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9839, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9839, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9839, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_W;
    __pyx_t_9[1] = __pyx_t_7;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7));
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9839, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9839, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9836
 *         if attempts is not None:
 *             args.append(f"-R {attempts}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  }

  /* "scamper.pyx":9840
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if rd is not None and not rd:
*/
  __pyx_t_6 = (__pyx_v_userid != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9841
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
 *         if userid is not None:
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 *         if rd is not None and not rd:
 *             args.append("-r")
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9841, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9841, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9841, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":9840
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-W {wait_timeout.total_seconds()}s")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if rd is not None and not rd:
*/
  }

  /* "scamper.pyx":9842
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if rd is not None and not rd:             # <<<<<<<<<<<<<<
 *             args.append("-r")
 *         if tcp is not None and tcp:
*/
  __pyx_t_5 = (__pyx_v_rd != Py_None);
  if (__pyx_t_5) {
  } else {
    __pyx_t_6 = __pyx_t_5;
    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_rd); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 9842, __pyx_L1_error)
  __pyx_t_10 = (!__pyx_t_5);
  __pyx_t_6 = __pyx_t_10;
  __pyx_L14_bool_binop_done:;
  if (__pyx_t_6) {

    /* "scamper.pyx":9843
 *             args.append(f"-U {userid}")
 *         if rd is not None and not rd:
 *             args.append("-r")             # <<<<<<<<<<<<<<
 *         if tcp is not None and tcp:
 *             args.append("-T")
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_r_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9843, __pyx_L1_error)

    /* "scamper.pyx":9842
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if rd is not None and not rd:             # <<<<<<<<<<<<<<
 *             args.append("-r")
 *         if tcp is not None and tcp:
*/
  }

  /* "scamper.pyx":9844
 *         if rd is not None and not rd:
 *             args.append("-r")
 *         if tcp is not None and tcp:             # <<<<<<<<<<<<<<
 *             args.append("-T")
 *         if nsid is not None and nsid:
*/
  __pyx_t_10 = (__pyx_v_tcp != Py_None);
  if (__pyx_t_10) {
  } else {
    __pyx_t_6 = __pyx_t_10;
    goto __pyx_L17_bool_binop_done;
  }
  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_tcp); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 9844, __pyx_L1_error)
  __pyx_t_6 = __pyx_t_10;
  __pyx_L17_bool_binop_done:;
  if (__pyx_t_6) {

    /* "scamper.pyx":9845
 *             args.append("-r")
 *         if tcp is not None and tcp:
 *             args.append("-T")             # <<<<<<<<<<<<<<
 *         if nsid is not None and nsid:
 *             args.append("-O nsid")
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_T); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9845, __pyx_L1_error)

    /* "scamper.pyx":9844
 *         if rd is not None and not rd:
 *             args.append("-r")
 *         if tcp is not None and tcp:             # <<<<<<<<<<<<<<
 *             args.append("-T")
 *         if nsid is not None and nsid:
*/
  }

  /* "scamper.pyx":9846
 *         if tcp is not None and tcp:
 *             args.append("-T")
 *         if nsid is not None and nsid:             # <<<<<<<<<<<<<<
 *             args.append("-O nsid")
 *         if ecs is not None:
*/
  __pyx_t_10 = (__pyx_v_nsid != Py_None);
  if (__pyx_t_10) {
  } else {
    __pyx_t_6 = __pyx_t_10;
    goto __pyx_L20_bool_binop_done;
  }
  __pyx_t_10 = __Pyx_PyObject_IsTrue(__pyx_v_nsid); if (unlikely((__pyx_t_10 < 0))) __PYX_ERR(0, 9846, __pyx_L1_error)
  __pyx_t_6 = __pyx_t_10;
  __pyx_L20_bool_binop_done:;
  if (__pyx_t_6) {

    /* "scamper.pyx":9847
 *             args.append("-T")
 *         if nsid is not None and nsid:
 *             args.append("-O nsid")             # <<<<<<<<<<<<<<
 *         if ecs is not None:
 *             args.append(f"-O subnet={ecs}")
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_O_nsid); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9847, __pyx_L1_error)

    /* "scamper.pyx":9846
 *         if tcp is not None and tcp:
 *             args.append("-T")
 *         if nsid is not None and nsid:             # <<<<<<<<<<<<<<
 *             args.append("-O nsid")
 *         if ecs is not None:
*/
  }

  /* "scamper.pyx":9848
 *         if nsid is not None and nsid:
 *             args.append("-O nsid")
 *         if ecs is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-O subnet={ecs}")
 *         args.append(f"{qname}")
*/
  __pyx_t_6 = (__pyx_v_ecs != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9849
 *             args.append("-O nsid")
 *         if ecs is not None:
 *             args.append(f"-O subnet={ecs}")             # <<<<<<<<<<<<<<
 *         args.append(f"{qname}")
 * 
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_ecs, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 9849, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_O_subnet, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9849, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9849, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9848
 *         if nsid is not None and nsid:
 *             args.append("-O nsid")
 *         if ecs is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-O subnet={ecs}")
 *         args.append(f"{qname}")
*/
  }

  /* "scamper.pyx":9850
 *         if ecs is not None:
 *             args.append(f"-O subnet={ecs}")
 *         args.append(f"{qname}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_qname, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9850, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9850, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "scamper.pyx":9852
 *         args.append(f"{qname}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_7);
  __pyx_t_3 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9852, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_3, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_8 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9852, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  }
  __pyx_r = __pyx_t_8;
  __pyx_t_8 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":9788
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,             # <<<<<<<<<<<<<<
 *                attempts=None, rd=None, wait_timeout=None, tcp=None,
 *                nsid=None, ecs=None, userid=None, inst=None, sync=False):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_dns", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_wait_timeout);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9854
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,             # <<<<<<<<<<<<<<
 *                 sport=None, method=None, attempts=None, wait_probe=None,
 *                 wait_timeout=None, userid=None, inst=None, sync=False):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_49do_ally(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_48do_ally, "\n        do_ally(dst1, dst2, fudge=None, icmp_sum=None, dport=None,                sport=None, method=None, attempts=None, wait_probe=None,                wait_timeout=None, userid=None, inst=None, sync=False)\n        conduct an Ally-style alias resolution measurement guided by the\n        assembled parameters.  This measurement requires two destination\n        addresses to probe.  The other parameters are optional, and scamper\n        will use its built-in defaults if they are not provided.  If any\n        parameters conflict with other parameters (e.g., specifying a sport\n        or dport while also specifying icmp-echo method) then this method\n        will raise a :py:exc:`ValueError` exception.  If this method could\n        not queue the measurement, it will raise a :py:exc:`RuntimeError`\n        exception.\n\n        :param string dst1: The first address to test if it is an alias of\n            the second address\n        :param string dst2: The second address to test if it is an alias of\n            the first address\n        :param ScamperInst inst: The specific instance to issue command over\n        :param int attempts: The number of probes to use in this measurement\n        :param int dport: The TCP/UDP destination port to use in probes\n        :param int fudge: The maximum difference between IPID values to\n            still consider as possibly from the same counter\n        :param int icmp_sum: The ICMP checksum to use in probes\n        :param string method: The method to use when sending probes.\n            Choices: udp, udp-dport, tcp-ack, tcp-ack-sport, tcp-syn-sport,\n            and icmp-echo.\n        :param int sport: The TCP/UDP source port to use in probes\n        :param int userid: The userid value to tag with this measurement\n        :param timedelta wait_probe: The minimum length of time between probes\n        :param timedelta wait_timeout: The length of time to wait for a response\n            for a probe\n        :param ""bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: a task object representing the alias resolution\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_49do_ally = {"do_ally", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_49do_ally, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_48do_ally};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_49do_ally(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dst1 = 0;
  PyObject *__pyx_v_dst2 = 0;
  PyObject *__pyx_v_fudge = 0;
  PyObject *__pyx_v_icmp_sum = 0;
  PyObject *__pyx_v_dport = 0;
  PyObject *__pyx_v_sport = 0;
  PyObject *__pyx_v_method = 0;
  CYTHON_UNUSED PyObject *__pyx_v_attempts = 0;
  PyObject *__pyx_v_wait_probe = 0;
  PyObject *__pyx_v_wait_timeout = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[13] = {0,0,0,0,0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_ally (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dst1,&__pyx_mstate_global->__pyx_n_u_dst2,&__pyx_mstate_global->__pyx_n_u_fudge,&__pyx_mstate_global->__pyx_n_u_icmp_sum,&__pyx_mstate_global->__pyx_n_u_dport,&__pyx_mstate_global->__pyx_n_u_sport,&__pyx_mstate_global->__pyx_n_u_method,&__pyx_mstate_global->__pyx_n_u_attempts,&__pyx_mstate_global->__pyx_n_u_wait_probe,&__pyx_mstate_global->__pyx_n_u_wait_timeout,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9854, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_ally", 0) < 0) __PYX_ERR(0, 9854, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9855
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,
 *                 sport=None, method=None, attempts=None, wait_probe=None,             # <<<<<<<<<<<<<<
 *                 wait_timeout=None, userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9856
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,
 *                 sport=None, method=None, attempts=None, wait_probe=None,
 *                 wait_timeout=None, userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_ally(dst1, dst2, fudge=None, icmp_sum=None, dport=None,\
*/
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_ally", 0, 2, 13, i); __PYX_ERR(0, 9854, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9854, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9854, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9854, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":9854
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,             # <<<<<<<<<<<<<<
 *                 sport=None, method=None, attempts=None, wait_probe=None,
 *                 wait_timeout=None, userid=None, inst=None, sync=False):
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9855
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,
 *                 sport=None, method=None, attempts=None, wait_probe=None,             # <<<<<<<<<<<<<<
 *                 wait_timeout=None, userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9856
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,
 *                 sport=None, method=None, attempts=None, wait_probe=None,
 *                 wait_timeout=None, userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_ally(dst1, dst2, fudge=None, icmp_sum=None, dport=None,\
*/
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_dst1 = values[0];
    __pyx_v_dst2 = values[1];
    __pyx_v_fudge = values[2];
    __pyx_v_icmp_sum = values[3];
    __pyx_v_dport = values[4];
    __pyx_v_sport = values[5];
    __pyx_v_method = values[6];
    __pyx_v_attempts = values[7];
    __pyx_v_wait_probe = values[8];
    __pyx_v_wait_timeout = values[9];
    __pyx_v_userid = values[10];
    __pyx_v_inst = values[11];
    __pyx_v_sync = values[12];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_ally", 0, 2, 13, __pyx_nargs); __PYX_ERR(0, 9854, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_ally", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_48do_ally(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_dst1, __pyx_v_dst2, __pyx_v_fudge, __pyx_v_icmp_sum, __pyx_v_dport, __pyx_v_sport, __pyx_v_method, __pyx_v_attempts, __pyx_v_wait_probe, __pyx_v_wait_timeout, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":9854
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,             # <<<<<<<<<<<<<<
 *                 sport=None, method=None, attempts=None, wait_probe=None,
 *                 wait_timeout=None, userid=None, inst=None, sync=False):
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7scamper_11ScamperCtrl_7do_ally_2generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "scamper.pyx":9917
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_7do_ally_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *)__pyx_tp_new_7scamper___pyx_scope_struct_11_genexpr(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9917, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7scamper_11ScamperCtrl_7do_ally_2generator7, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[7]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_do_ally_locals_genexpr, __pyx_mstate_global->__pyx_n_u_scamper); if (unlikely(!gen)) __PYX_ERR(0, 9917, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_ally.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7scamper_11ScamperCtrl_7do_ally_2generator7(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 9917, __pyx_L1_error)
  __pyx_t_1 = __pyx_mstate_global->__pyx_tuple[0]; __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= 2) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
    #endif
    ++__pyx_t_2;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_s);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_s, ((PyObject*)__pyx_t_3));
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_m)) { __Pyx_RaiseClosureNameError("m"); __PYX_ERR(0, 9917, __pyx_L1_error) }
    __pyx_t_4 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_m;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_s};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9917, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 9917, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_6) {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_True);
      __pyx_r = Py_True;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9854
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,             # <<<<<<<<<<<<<<
 *                 sport=None, method=None, attempts=None, wait_probe=None,
 *                 wait_timeout=None, userid=None, inst=None, sync=False):
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_48do_ally(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst1, PyObject *__pyx_v_dst2, PyObject *__pyx_v_fudge, PyObject *__pyx_v_icmp_sum, PyObject *__pyx_v_dport, PyObject *__pyx_v_sport, PyObject *__pyx_v_method, CYTHON_UNUSED PyObject *__pyx_v_attempts, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *__pyx_cur_scope;
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_v_pd = NULL;
  PyObject *__pyx_gb_7scamper_11ScamperCtrl_7do_ally_2generator7 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_ally", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *)__pyx_tp_new_7scamper___pyx_scope_struct_10_do_ally(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 9854, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __Pyx_INCREF(__pyx_v_wait_probe);
  __Pyx_INCREF(__pyx_v_wait_timeout);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":9895
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("dealias -m ally")
 *         inst = self._getinst(inst, "ally", sync, listallowed=False)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9895, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9896
 * 
 *         args = []
 *         args.append("dealias -m ally")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "ally", sync, listallowed=False)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_dealias_m_ally); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9896, __pyx_L1_error)

  /* "scamper.pyx":9897
 *         args = []
 *         args.append("dealias -m ally")
 *         inst = self._getinst(inst, "ally", sync, listallowed=False)             # <<<<<<<<<<<<<<
 * 
 *         if method is not None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_ally, __pyx_v_sync};
    __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9897, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_listallowed, Py_False, __pyx_t_5, __pyx_callargs+4, 0) < 0) __PYX_ERR(0, 9897, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9897, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9899
 *         inst = self._getinst(inst, "ally", sync, listallowed=False)
 * 
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             m = method.lower()
 *         else:
*/
  __pyx_t_6 = (__pyx_v_method != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9900
 * 
 *         if method is not None:
 *             m = method.lower()             # <<<<<<<<<<<<<<
 *         else:
 *             m = None
*/
    __pyx_t_5 = __pyx_v_method;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9900, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_m = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "scamper.pyx":9899
 *         inst = self._getinst(inst, "ally", sync, listallowed=False)
 * 
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             m = method.lower()
 *         else:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":9902
 *             m = method.lower()
 *         else:
 *             m = None             # <<<<<<<<<<<<<<
 * 
 *         # if user specifies ICMP csum then ensure method is icmp
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_cur_scope->__pyx_v_m = Py_None;
  }
  __pyx_L3:;

  /* "scamper.pyx":9905
 * 
 *         # if user specifies ICMP csum then ensure method is icmp
 *         if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 m = "icmp-echo"
*/
  __pyx_t_6 = (__pyx_v_icmp_sum != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9906
 *         # if user specifies ICMP csum then ensure method is icmp
 *         if icmp_sum is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):
*/
    __pyx_t_6 = (__pyx_cur_scope->__pyx_v_m == Py_None);
    if (__pyx_t_6) {

      /* "scamper.pyx":9907
 *         if icmp_sum is not None:
 *             if m is None:
 *                 m = "icmp-echo"             # <<<<<<<<<<<<<<
 *             elif not m.startswith("icmp"):
 *                 raise ValueError("do not specify icmp_sum with " + method)
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_icmp_echo);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_m);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_m, __pyx_mstate_global->__pyx_kp_u_icmp_echo);
      __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_icmp_echo);

      /* "scamper.pyx":9906
 *         # if user specifies ICMP csum then ensure method is icmp
 *         if icmp_sum is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):
*/
      goto __pyx_L5;
    }

    /* "scamper.pyx":9908
 *             if m is None:
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):             # <<<<<<<<<<<<<<
 *                 raise ValueError("do not specify icmp_sum with " + method)
 *             if sport is not None or dport is not None:
*/
    __pyx_t_5 = __pyx_cur_scope->__pyx_v_m;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_icmp};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9908, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 9908, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = (!__pyx_t_6);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":9909
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):
 *                 raise ValueError("do not specify icmp_sum with " + method)             # <<<<<<<<<<<<<<
 *             if sport is not None or dport is not None:
 *                 raise ValueError("cannot specify source or destination port with " + method)
*/
      __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_8 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_do_not_specify_icmp_sum_with, __pyx_v_method); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9909, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9909, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9909, __pyx_L1_error)

      /* "scamper.pyx":9908
 *             if m is None:
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):             # <<<<<<<<<<<<<<
 *                 raise ValueError("do not specify icmp_sum with " + method)
 *             if sport is not None or dport is not None:
*/
    }
    __pyx_L5:;

    /* "scamper.pyx":9910
 *             elif not m.startswith("icmp"):
 *                 raise ValueError("do not specify icmp_sum with " + method)
 *             if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination port with " + method)
 * 
*/
    __pyx_t_6 = (__pyx_v_sport != Py_None);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_7 = __pyx_t_6;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_dport != Py_None);
    __pyx_t_7 = __pyx_t_6;
    __pyx_L7_bool_binop_done:;
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":9911
 *                 raise ValueError("do not specify icmp_sum with " + method)
 *             if sport is not None or dport is not None:
 *                 raise ValueError("cannot specify source or destination port with " + method)             # <<<<<<<<<<<<<<
 * 
 *         # if user specifies sport/dport then ensure method is tcp or udp
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_5 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_source_or_destina_2, __pyx_v_method); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9911, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9911, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9911, __pyx_L1_error)

      /* "scamper.pyx":9910
 *             elif not m.startswith("icmp"):
 *                 raise ValueError("do not specify icmp_sum with " + method)
 *             if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination port with " + method)
 * 
*/
    }

    /* "scamper.pyx":9905
 * 
 *         # if user specifies ICMP csum then ensure method is icmp
 *         if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 m = "icmp-echo"
*/
  }

  /* "scamper.pyx":9914
 * 
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
*/
  __pyx_t_6 = (__pyx_v_sport != Py_None);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_7 = __pyx_t_6;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_dport != Py_None);
  __pyx_t_7 = __pyx_t_6;
  __pyx_L10_bool_binop_done:;
  if (__pyx_t_7) {

    /* "scamper.pyx":9915
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
*/
    __pyx_t_7 = (__pyx_cur_scope->__pyx_v_m == Py_None);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":9916
 *         if sport is not None or dport is not None:
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")             # <<<<<<<<<<<<<<
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
 *                 raise ValueError("cannot specify source or destination ports with " + method)
*/
      __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_5 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_specify_method_when_specifying_t};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9916, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 9916, __pyx_L1_error)

      /* "scamper.pyx":9915
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
*/
    }

    /* "scamper.pyx":9917
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
    __pyx_t_1 = __pyx_pf_7scamper_11ScamperCtrl_7do_ally_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_Generator_GetInlinedResult(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9917, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 9917, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = (!__pyx_t_7);
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":9918
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
 *                 raise ValueError("cannot specify source or destination ports with " + method)             # <<<<<<<<<<<<<<
 * 
 *         # if user specifies a method, then construct a probedef
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_3 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_source_or_destina, __pyx_v_method); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9918, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_3};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9918, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 9918, __pyx_L1_error)

      /* "scamper.pyx":9917
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
    }

    /* "scamper.pyx":9914
 * 
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
*/
  }

  /* "scamper.pyx":9921
 * 
 *         # if user specifies a method, then construct a probedef
 *         if m is not None:             # <<<<<<<<<<<<<<
 *             pd = []
 *             pd.append(f"-p '-P {m}")
*/
  __pyx_t_6 = (__pyx_cur_scope->__pyx_v_m != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9922
 *         # if user specifies a method, then construct a probedef
 *         if m is not None:
 *             pd = []             # <<<<<<<<<<<<<<
 *             pd.append(f"-p '-P {m}")
 *             if sport is not None:
*/
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9922, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_v_pd = ((PyObject*)__pyx_t_5);
    __pyx_t_5 = 0;

    /* "scamper.pyx":9923
 *         if m is not None:
 *             pd = []
 *             pd.append(f"-p '-P {m}")             # <<<<<<<<<<<<<<
 *             if sport is not None:
 *                 pd.append(f" -F {sport}")
*/
    __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_m, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9923, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_p_P, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9923, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_pd, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9923, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":9924
 *             pd = []
 *             pd.append(f"-p '-P {m}")
 *             if sport is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -F {sport}")
 *             if dport is not None:
*/
    __pyx_t_6 = (__pyx_v_sport != Py_None);
    if (__pyx_t_6) {

      /* "scamper.pyx":9925
 *             pd.append(f"-p '-P {m}")
 *             if sport is not None:
 *                 pd.append(f" -F {sport}")             # <<<<<<<<<<<<<<
 *             if dport is not None:
 *                 pd.append(f" -d {dport}")
*/
      __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_sport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9925, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_F_2, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9925, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_pd, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9925, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "scamper.pyx":9924
 *             pd = []
 *             pd.append(f"-p '-P {m}")
 *             if sport is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -F {sport}")
 *             if dport is not None:
*/
    }

    /* "scamper.pyx":9926
 *             if sport is not None:
 *                 pd.append(f" -F {sport}")
 *             if dport is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -d {dport}")
 *             if icmp_sum is not None:
*/
    __pyx_t_6 = (__pyx_v_dport != Py_None);
    if (__pyx_t_6) {

      /* "scamper.pyx":9927
 *                 pd.append(f" -F {sport}")
 *             if dport is not None:
 *                 pd.append(f" -d {dport}")             # <<<<<<<<<<<<<<
 *             if icmp_sum is not None:
 *                 pd.append(f" -c {icmp_sum}")
*/
      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_dport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9927, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_d_3, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9927, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_pd, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9927, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "scamper.pyx":9926
 *             if sport is not None:
 *                 pd.append(f" -F {sport}")
 *             if dport is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -d {dport}")
 *             if icmp_sum is not None:
*/
    }

    /* "scamper.pyx":9928
 *             if dport is not None:
 *                 pd.append(f" -d {dport}")
 *             if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -c {icmp_sum}")
 *             pd.append("'")
*/
    __pyx_t_6 = (__pyx_v_icmp_sum != Py_None);
    if (__pyx_t_6) {

      /* "scamper.pyx":9929
 *                 pd.append(f" -d {dport}")
 *             if icmp_sum is not None:
 *                 pd.append(f" -c {icmp_sum}")             # <<<<<<<<<<<<<<
 *             pd.append("'")
 *             args.append(''.join(pd))
*/
      __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_icmp_sum, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9929, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_c_3, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9929, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_pd, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9929, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "scamper.pyx":9928
 *             if dport is not None:
 *                 pd.append(f" -d {dport}")
 *             if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -c {icmp_sum}")
 *             pd.append("'")
*/
    }

    /* "scamper.pyx":9930
 *             if icmp_sum is not None:
 *                 pd.append(f" -c {icmp_sum}")
 *             pd.append("'")             # <<<<<<<<<<<<<<
 *             args.append(''.join(pd))
 * 
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_pd, __pyx_mstate_global->__pyx_kp_u__13); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9930, __pyx_L1_error)

    /* "scamper.pyx":9931
 *                 pd.append(f" -c {icmp_sum}")
 *             pd.append("'")
 *             args.append(''.join(pd))             # <<<<<<<<<<<<<<
 * 
 *         # other parameters to the dealias method
*/
    __pyx_t_5 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__4, __pyx_v_pd); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9931, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9931, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":9921
 * 
 *         # if user specifies a method, then construct a probedef
 *         if m is not None:             # <<<<<<<<<<<<<<
 *             pd = []
 *             pd.append(f"-p '-P {m}")
*/
  }

  /* "scamper.pyx":9934
 * 
 *         # other parameters to the dealias method
 *         if fudge is not None:             # <<<<<<<<<<<<<<
 *             if fudge == 0:
 *                 args.append("-O inseq")
*/
  __pyx_t_6 = (__pyx_v_fudge != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9935
 *         # other parameters to the dealias method
 *         if fudge is not None:
 *             if fudge == 0:             # <<<<<<<<<<<<<<
 *                 args.append("-O inseq")
 *             else:
*/
    __pyx_t_6 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_fudge, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 9935, __pyx_L1_error)
    if (__pyx_t_6) {

      /* "scamper.pyx":9936
 *         if fudge is not None:
 *             if fudge == 0:
 *                 args.append("-O inseq")             # <<<<<<<<<<<<<<
 *             else:
 *                 args.append(f"-f {fudge}")
*/
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_O_inseq); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9936, __pyx_L1_error)

      /* "scamper.pyx":9935
 *         # other parameters to the dealias method
 *         if fudge is not None:
 *             if fudge == 0:             # <<<<<<<<<<<<<<
 *                 args.append("-O inseq")
 *             else:
*/
      goto __pyx_L18;
    }

    /* "scamper.pyx":9938
 *                 args.append("-O inseq")
 *             else:
 *                 args.append(f"-f {fudge}")             # <<<<<<<<<<<<<<
 *         if userid is not None:
 *             args.append(f"-U {userid}")
*/
    /*else*/ {
      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_fudge, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9938, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_f, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9938, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9938, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    }
    __pyx_L18:;

    /* "scamper.pyx":9934
 * 
 *         # other parameters to the dealias method
 *         if fudge is not None:             # <<<<<<<<<<<<<<
 *             if fudge == 0:
 *                 args.append("-O inseq")
*/
  }

  /* "scamper.pyx":9939
 *             else:
 *                 args.append(f"-f {fudge}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
*/
  __pyx_t_6 = (__pyx_v_userid != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9940
 *                 args.append(f"-f {fudge}")
 *         if userid is not None:
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9940, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9940, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9940, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":9939
 *             else:
 *                 args.append(f"-f {fudge}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
*/
  }

  /* "scamper.pyx":9941
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  __pyx_t_6 = (__pyx_v_wait_probe != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":9942
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9942, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9942, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = PyObject_IsInstance(__pyx_v_wait_probe, __pyx_t_8); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 9942, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_7 = (!__pyx_t_6);
    if (__pyx_t_7) {

      /* "scamper.pyx":9943
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)             # <<<<<<<<<<<<<<
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         if wait_timeout is not None:
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9943, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9943, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, NULL};
        __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9943, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_probe, __pyx_t_3, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9943, __pyx_L1_error)
        __pyx_t_8 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_1, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9943, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_probe, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "scamper.pyx":9942
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
*/
    }

    /* "scamper.pyx":9944
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
*/
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_probe, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_W;
    __pyx_t_9[1] = __pyx_t_8;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9944, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9944, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":9941
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  }

  /* "scamper.pyx":9945
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  __pyx_t_7 = (__pyx_v_wait_timeout != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":9946
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9946, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9946, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = PyObject_IsInstance(__pyx_v_wait_timeout, __pyx_t_8); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 9946, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_6 = (!__pyx_t_7);
    if (__pyx_t_6) {

      /* "scamper.pyx":9947
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)             # <<<<<<<<<<<<<<
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         args.append(f"{dst1} {dst2}")
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9947, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9947, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL};
        __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9947, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_timeout, __pyx_t_3, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 9947, __pyx_L1_error)
        __pyx_t_8 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_5, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9947, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_timeout, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "scamper.pyx":9946
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
*/
    }

    /* "scamper.pyx":9948
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         args.append(f"{dst1} {dst2}")
 * 
*/
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_timeout, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_w_2;
    __pyx_t_9[1] = __pyx_t_8;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9948, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9948, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":9945
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  }

  /* "scamper.pyx":9949
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 *         args.append(f"{dst1} {dst2}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_dst1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_dst2, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 9949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_9[0] = __pyx_t_5;
  __pyx_t_9[1] = __pyx_mstate_global->__pyx_kp_u__3;
  __pyx_t_9[2] = __pyx_t_8;
  __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9949, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9949, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9951
 *         args.append(f"{dst1} {dst2}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_mercator(self, dst, userid=None, inst=None, sync=False):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_5 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 9951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_5, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9951, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":9854
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,             # <<<<<<<<<<<<<<
 *                 sport=None, method=None, attempts=None, wait_probe=None,
 *                 wait_timeout=None, userid=None, inst=None, sync=False):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_ally", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_pd);
  __Pyx_XDECREF(__pyx_gb_7scamper_11ScamperCtrl_7do_ally_2generator7);
  __Pyx_XDECREF(__pyx_v_wait_probe);
  __Pyx_XDECREF(__pyx_v_wait_timeout);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9953
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_mercator(self, dst, userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_mercator(dst, userid=None, inst=None, sync=False)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_51do_mercator(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_50do_mercator, "\n        do_mercator(dst, userid=None, inst=None, sync=False)\n        conduct a Mercator-style alias resolution measurement to the\n        specified destination.  If this method could not queue the\n        measurement, it will raise a :py:exc:`RuntimeError` exception.\n\n        :param string dst: the destination to probe\n        :param ScamperInst inst: The specific instance to issue command over\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: a task object representing the mercator alias resolution\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_51do_mercator = {"do_mercator", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_51do_mercator, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_50do_mercator};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_51do_mercator(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dst = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[4] = {0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_mercator (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dst,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9953, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9953, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9953, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9953, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9953, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_mercator", 0) < 0) __PYX_ERR(0, 9953, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_mercator", 0, 1, 4, i); __PYX_ERR(0, 9953, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9953, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9953, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9953, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9953, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_dst = values[0];
    __pyx_v_userid = values[1];
    __pyx_v_inst = values[2];
    __pyx_v_sync = values[3];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_mercator", 0, 1, 4, __pyx_nargs); __PYX_ERR(0, 9953, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_mercator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_50do_mercator(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_dst, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_50do_mercator(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_mercator", 0);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":9968
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("dealias -m mercator")
 *         inst = self._getinst(inst, "mercator", sync)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9968, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9969
 * 
 *         args = []
 *         args.append("dealias -m mercator")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "mercator", sync)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_dealias_m_mercator); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9969, __pyx_L1_error)

  /* "scamper.pyx":9970
 *         args = []
 *         args.append("dealias -m mercator")
 *         inst = self._getinst(inst, "mercator", sync)             # <<<<<<<<<<<<<<
 * 
 *         if userid is not None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_mercator, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9970, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":9972
 *         inst = self._getinst(inst, "mercator", sync)
 * 
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         args.append(f"{dst}")
*/
  __pyx_t_5 = (__pyx_v_userid != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":9973
 * 
 *         if userid is not None:
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 *         args.append(f"{dst}")
 * 
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 9973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9973, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9973, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":9972
 *         inst = self._getinst(inst, "mercator", sync)
 * 
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         args.append(f"{dst}")
*/
  }

  /* "scamper.pyx":9974
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         args.append(f"{dst}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_dst, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9974, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 9974, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9976
 *         args.append(f"{dst}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_6 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 9976, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_t_6, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9976, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":9953
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_mercator(self, dst, userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_mercator(dst, userid=None, inst=None, sync=False)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_mercator", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":9978
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,             # <<<<<<<<<<<<<<
 *                     wait_timeout=None, probedefs=None, addrs=None,
 *                     userid=None, inst=None, sync=False):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_53do_midarest(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_52do_midarest, "\n        do_midarest(rounds=None, wait_probe=None, wait_round=None,                    wait_timeout=None, probedefs=None, addrs=None,                    userid=None, inst=None, sync=False)\n        conduct MIDAR-style estimation-stage probing of a set of IP\n        addresses.  If this method could not queue the\n        measurement, it will raise a :py:exc:`RuntimeError` exception.\n\n        :param ScamperInst inst: The specific instance to issue command over\n        :param int rounds: The number of rounds to use in this measurement\n        :param int userid: The userid value to tag with this measurement\n        :param timedelta wait_probe: The minimum length of time between probes\n        :param timedelta wait_round: The minimum length of time between rounds\n        :param timedelta wait_timeout: The length of time to wait for a response\n            for a probe\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :param list probedefs: The list of probe types to use\n        :param list addrs: The list of addresses to probe\n        :returns: a task object representing the midarest alias resolution\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_53do_midarest = {"do_midarest", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_53do_midarest, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_52do_midarest};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_53do_midarest(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_rounds = 0;
  PyObject *__pyx_v_wait_probe = 0;
  PyObject *__pyx_v_wait_round = 0;
  PyObject *__pyx_v_wait_timeout = 0;
  PyObject *__pyx_v_probedefs = 0;
  PyObject *__pyx_v_addrs = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_midarest (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_rounds,&__pyx_mstate_global->__pyx_n_u_wait_probe,&__pyx_mstate_global->__pyx_n_u_wait_round,&__pyx_mstate_global->__pyx_n_u_wait_timeout,&__pyx_mstate_global->__pyx_n_u_probedefs,&__pyx_mstate_global->__pyx_n_u_addrs,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 9978, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_midarest", 0) < 0) __PYX_ERR(0, 9978, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9979
 * 
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,
 *                     wait_timeout=None, probedefs=None, addrs=None,             # <<<<<<<<<<<<<<
 *                     userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9980
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,
 *                     wait_timeout=None, probedefs=None, addrs=None,
 *                     userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_midarest(rounds=None, wait_probe=None, wait_round=None,\
*/
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_False));
    } else {
      switch (__pyx_nargs) {
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 9978, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":9978
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,             # <<<<<<<<<<<<<<
 *                     wait_timeout=None, probedefs=None, addrs=None,
 *                     userid=None, inst=None, sync=False):
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9979
 * 
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,
 *                     wait_timeout=None, probedefs=None, addrs=None,             # <<<<<<<<<<<<<<
 *                     userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":9980
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,
 *                     wait_timeout=None, probedefs=None, addrs=None,
 *                     userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_midarest(rounds=None, wait_probe=None, wait_round=None,\
*/
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_rounds = values[0];
    __pyx_v_wait_probe = values[1];
    __pyx_v_wait_round = values[2];
    __pyx_v_wait_timeout = values[3];
    __pyx_v_probedefs = values[4];
    __pyx_v_addrs = values[5];
    __pyx_v_userid = values[6];
    __pyx_v_inst = values[7];
    __pyx_v_sync = values[8];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_midarest", 0, 0, 9, __pyx_nargs); __PYX_ERR(0, 9978, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_midarest", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_52do_midarest(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_rounds, __pyx_v_wait_probe, __pyx_v_wait_round, __pyx_v_wait_timeout, __pyx_v_probedefs, __pyx_v_addrs, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":9978
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,             # <<<<<<<<<<<<<<
 *                     wait_timeout=None, probedefs=None, addrs=None,
 *                     userid=None, inst=None, sync=False):
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_52do_midarest(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_rounds, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_wait_round, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_probedefs, PyObject *__pyx_v_addrs, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_v_ms = NULL;
  PyObject *__pyx_v_s = NULL;
  PyObject *__pyx_v_pd = NULL;
  PyObject *__pyx_v_addr = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11[3];
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_midarest", 0);
  __Pyx_INCREF(__pyx_v_wait_probe);
  __Pyx_INCREF(__pyx_v_wait_round);
  __Pyx_INCREF(__pyx_v_wait_timeout);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":10004
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("dealias -m midarest")
 *         inst = self._getinst(inst, "midarest", sync, listallowed=False)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10004, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10005
 * 
 *         args = []
 *         args.append("dealias -m midarest")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "midarest", sync, listallowed=False)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_dealias_m_midarest); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10005, __pyx_L1_error)

  /* "scamper.pyx":10006
 *         args = []
 *         args.append("dealias -m midarest")
 *         inst = self._getinst(inst, "midarest", sync, listallowed=False)             # <<<<<<<<<<<<<<
 * 
 *         if probedefs is None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_midarest, __pyx_v_sync};
    __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10006, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_listallowed, Py_False, __pyx_t_5, __pyx_callargs+4, 0) < 0) __PYX_ERR(0, 10006, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10006, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10008
 *         inst = self._getinst(inst, "midarest", sync, listallowed=False)
 * 
 *         if probedefs is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("missing probedefs")
 *         if addrs is None:
*/
  __pyx_t_6 = (__pyx_v_probedefs == Py_None);
  if (unlikely(__pyx_t_6)) {

    /* "scamper.pyx":10009
 * 
 *         if probedefs is None:
 *             raise ValueError("missing probedefs")             # <<<<<<<<<<<<<<
 *         if addrs is None:
 *             raise ValueError("missing addrs")
*/
    __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_3 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_missing_probedefs};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10009, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 10009, __pyx_L1_error)

    /* "scamper.pyx":10008
 *         inst = self._getinst(inst, "midarest", sync, listallowed=False)
 * 
 *         if probedefs is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("missing probedefs")
 *         if addrs is None:
*/
  }

  /* "scamper.pyx":10010
 *         if probedefs is None:
 *             raise ValueError("missing probedefs")
 *         if addrs is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("missing addrs")
 * 
*/
  __pyx_t_6 = (__pyx_v_addrs == Py_None);
  if (unlikely(__pyx_t_6)) {

    /* "scamper.pyx":10011
 *             raise ValueError("missing probedefs")
 *         if addrs is None:
 *             raise ValueError("missing addrs")             # <<<<<<<<<<<<<<
 * 
 *         if rounds is not None:
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_5 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_missing_addrs};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10011, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 10011, __pyx_L1_error)

    /* "scamper.pyx":10010
 *         if probedefs is None:
 *             raise ValueError("missing probedefs")
 *         if addrs is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("missing addrs")
 * 
*/
  }

  /* "scamper.pyx":10013
 *             raise ValueError("missing addrs")
 * 
 *         if rounds is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(rounds, int):
 *                 raise ValueError("rounds not an integer")
*/
  __pyx_t_6 = (__pyx_v_rounds != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10014
 * 
 *         if rounds is not None:
 *             if not isinstance(rounds, int):             # <<<<<<<<<<<<<<
 *                 raise ValueError("rounds not an integer")
 *             args.append(f"-q {rounds}")
*/
    __pyx_t_6 = PyLong_Check(__pyx_v_rounds); 
    __pyx_t_7 = (!__pyx_t_6);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10015
 *         if rounds is not None:
 *             if not isinstance(rounds, int):
 *                 raise ValueError("rounds not an integer")             # <<<<<<<<<<<<<<
 *             args.append(f"-q {rounds}")
 *         if userid is not None:
*/
      __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_rounds_not_an_integer};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10015, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10015, __pyx_L1_error)

      /* "scamper.pyx":10014
 * 
 *         if rounds is not None:
 *             if not isinstance(rounds, int):             # <<<<<<<<<<<<<<
 *                 raise ValueError("rounds not an integer")
 *             args.append(f"-q {rounds}")
*/
    }

    /* "scamper.pyx":10016
 *             if not isinstance(rounds, int):
 *                 raise ValueError("rounds not an integer")
 *             args.append(f"-q {rounds}")             # <<<<<<<<<<<<<<
 *         if userid is not None:
 *             if not isinstance(userid, int):
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_rounds, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10016, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_q, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10016, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10016, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":10013
 *             raise ValueError("missing addrs")
 * 
 *         if rounds is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(rounds, int):
 *                 raise ValueError("rounds not an integer")
*/
  }

  /* "scamper.pyx":10017
 *                 raise ValueError("rounds not an integer")
 *             args.append(f"-q {rounds}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")
*/
  __pyx_t_7 = (__pyx_v_userid != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":10018
 *             args.append(f"-q {rounds}")
 *         if userid is not None:
 *             if not isinstance(userid, int):             # <<<<<<<<<<<<<<
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")
*/
    __pyx_t_7 = PyLong_Check(__pyx_v_userid); 
    __pyx_t_6 = (!__pyx_t_7);
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":10019
 *         if userid is not None:
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_5 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_userid_not_an_integer};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10019, __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_ERR(0, 10019, __pyx_L1_error)

      /* "scamper.pyx":10018
 *             args.append(f"-q {rounds}")
 *         if userid is not None:
 *             if not isinstance(userid, int):             # <<<<<<<<<<<<<<
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")
*/
    }

    /* "scamper.pyx":10020
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10020, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10020, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10020, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":10017
 *                 raise ValueError("rounds not an integer")
 *             args.append(f"-q {rounds}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")
*/
  }

  /* "scamper.pyx":10021
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  __pyx_t_6 = (__pyx_v_wait_probe != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10022
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             ms = int(wait_probe.seconds * 1000) + int(wait_probe.microseconds / 1000)
*/
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10022, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = PyObject_IsInstance(__pyx_v_wait_probe, __pyx_t_3); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 10022, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = (!__pyx_t_6);
    if (__pyx_t_7) {

      /* "scamper.pyx":10023
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)             # <<<<<<<<<<<<<<
 *             ms = int(wait_probe.seconds * 1000) + int(wait_probe.microseconds / 1000)
 *             if ms <= 0:
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10023, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10023, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, NULL};
        __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10023, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_probe, __pyx_t_1, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10023, __pyx_L1_error)
        __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_8, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10023, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_probe, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "scamper.pyx":10022
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             ms = int(wait_probe.seconds * 1000) + int(wait_probe.microseconds / 1000)
*/
    }

    /* "scamper.pyx":10024
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             ms = int(wait_probe.seconds * 1000) + int(wait_probe.microseconds / 1000)             # <<<<<<<<<<<<<<
 *             if ms <= 0:
 *                 raise ValueError("wait_probe must be at least 1ms")
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_probe, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = __Pyx_PyLong_MultiplyObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_probe, __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_1 = __Pyx_PyLong_TrueDivideObjC(__pyx_t_8, __pyx_mstate_global->__pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_t_8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10024, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_v_ms = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":10025
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             ms = int(wait_probe.seconds * 1000) + int(wait_probe.microseconds / 1000)
 *             if ms <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_probe must be at least 1ms")
 *             args.append(f"-W {ms}")
*/
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_ms, __pyx_mstate_global->__pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10025, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 10025, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10026
 *             ms = int(wait_probe.seconds * 1000) + int(wait_probe.microseconds / 1000)
 *             if ms <= 0:
 *                 raise ValueError("wait_probe must be at least 1ms")             # <<<<<<<<<<<<<<
 *             args.append(f"-W {ms}")
 *         if wait_timeout is not None:
*/
      __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_wait_probe_must_be_at_least_1ms};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10026, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10026, __pyx_L1_error)

      /* "scamper.pyx":10025
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             ms = int(wait_probe.seconds * 1000) + int(wait_probe.microseconds / 1000)
 *             if ms <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_probe must be at least 1ms")
 *             args.append(f"-W {ms}")
*/
    }

    /* "scamper.pyx":10027
 *             if ms <= 0:
 *                 raise ValueError("wait_probe must be at least 1ms")
 *             args.append(f"-W {ms}")             # <<<<<<<<<<<<<<
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_ms, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10027, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_W, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10027, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10027, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":10021
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  }

  /* "scamper.pyx":10028
 *                 raise ValueError("wait_probe must be at least 1ms")
 *             args.append(f"-W {ms}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  __pyx_t_7 = (__pyx_v_wait_timeout != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":10029
 *             args.append(f"-W {ms}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             s = int(wait_timeout.seconds)
*/
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10029, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10029, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = PyObject_IsInstance(__pyx_v_wait_timeout, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 10029, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = (!__pyx_t_7);
    if (__pyx_t_6) {

      /* "scamper.pyx":10030
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)             # <<<<<<<<<<<<<<
 *             s = int(wait_timeout.seconds)
 *             if s <= 0:
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10030, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10030, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, NULL};
        __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10030, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_timeout, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10030, __pyx_L1_error)
        __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_5, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10030, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_timeout, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "scamper.pyx":10029
 *             args.append(f"-W {ms}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             s = int(wait_timeout.seconds)
*/
    }

    /* "scamper.pyx":10031
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             s = int(wait_timeout.seconds)             # <<<<<<<<<<<<<<
 *             if s <= 0:
 *                 raise ValueError("wait_timeout must be at least 1s")
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_timeout, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10031, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10031, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_s = ((PyObject*)__pyx_t_5);
    __pyx_t_5 = 0;

    /* "scamper.pyx":10032
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             s = int(wait_timeout.seconds)
 *             if s <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {s}")
*/
    __pyx_t_5 = PyObject_RichCompare(__pyx_v_s, __pyx_mstate_global->__pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10032, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 10032, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":10033
 *             s = int(wait_timeout.seconds)
 *             if s <= 0:
 *                 raise ValueError("wait_timeout must be at least 1s")             # <<<<<<<<<<<<<<
 *             args.append(f"-w {s}")
 *         if wait_round is not None:
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_wait_timeout_must_be_at_least_1s};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10033, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 10033, __pyx_L1_error)

      /* "scamper.pyx":10032
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             s = int(wait_timeout.seconds)
 *             if s <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {s}")
*/
    }

    /* "scamper.pyx":10034
 *             if s <= 0:
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {s}")             # <<<<<<<<<<<<<<
 *         if wait_round is not None:
 *             if not isinstance(wait_round, datetime.timedelta):
*/
    __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_s, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_w_2, __pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10034, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10034, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":10028
 *                 raise ValueError("wait_probe must be at least 1ms")
 *             args.append(f"-W {ms}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  }

  /* "scamper.pyx":10035
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {s}")
 *         if wait_round is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_round, datetime.timedelta):
 *                 wait_round = datetime.timedelta(seconds=wait_round)
*/
  __pyx_t_6 = (__pyx_v_wait_round != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10036
 *             args.append(f"-w {s}")
 *         if wait_round is not None:
 *             if not isinstance(wait_round, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_round = datetime.timedelta(seconds=wait_round)
 *             ms = int(wait_round.seconds * 1000) + int(wait_round.microseconds / 1000)
*/
    __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10036, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_6 = PyObject_IsInstance(__pyx_v_wait_round, __pyx_t_5); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 10036, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = (!__pyx_t_6);
    if (__pyx_t_7) {

      /* "scamper.pyx":10037
 *         if wait_round is not None:
 *             if not isinstance(wait_round, datetime.timedelta):
 *                 wait_round = datetime.timedelta(seconds=wait_round)             # <<<<<<<<<<<<<<
 *             ms = int(wait_round.seconds * 1000) + int(wait_round.microseconds / 1000)
 *             if ms <= 0:
*/
      __pyx_t_8 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10037, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10037, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_3))) {
        __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
        assert(__pyx_t_8);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_8, NULL};
        __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10037, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_round, __pyx_t_1, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10037, __pyx_L1_error)
        __pyx_t_5 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1);
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10037, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_round, __pyx_t_5);
      __pyx_t_5 = 0;

      /* "scamper.pyx":10036
 *             args.append(f"-w {s}")
 *         if wait_round is not None:
 *             if not isinstance(wait_round, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_round = datetime.timedelta(seconds=wait_round)
 *             ms = int(wait_round.seconds * 1000) + int(wait_round.microseconds / 1000)
*/
    }

    /* "scamper.pyx":10038
 *             if not isinstance(wait_round, datetime.timedelta):
 *                 wait_round = datetime.timedelta(seconds=wait_round)
 *             ms = int(wait_round.seconds * 1000) + int(wait_round.microseconds / 1000)             # <<<<<<<<<<<<<<
 *             if ms <= 0:
 *                 raise ValueError("wait_round must be at least 1ms")
*/
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_round, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyLong_MultiplyObjC(__pyx_t_5, __pyx_mstate_global->__pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_round, __pyx_mstate_global->__pyx_n_u_microseconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyLong_TrueDivideObjC(__pyx_t_3, __pyx_mstate_global->__pyx_int_1000, 0x3E8, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Add(__pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10038, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_XDECREF_SET(__pyx_v_ms, ((PyObject*)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "scamper.pyx":10039
 *                 wait_round = datetime.timedelta(seconds=wait_round)
 *             ms = int(wait_round.seconds * 1000) + int(wait_round.microseconds / 1000)
 *             if ms <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_round must be at least 1ms")
 *             args.append(f"-r {ms}")
*/
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_ms, __pyx_mstate_global->__pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10039, __pyx_L1_error)
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 10039, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10040
 *             ms = int(wait_round.seconds * 1000) + int(wait_round.microseconds / 1000)
 *             if ms <= 0:
 *                 raise ValueError("wait_round must be at least 1ms")             # <<<<<<<<<<<<<<
 *             args.append(f"-r {ms}")
 * 
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_5 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_wait_round_must_be_at_least_1ms};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10040, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10040, __pyx_L1_error)

      /* "scamper.pyx":10039
 *                 wait_round = datetime.timedelta(seconds=wait_round)
 *             ms = int(wait_round.seconds * 1000) + int(wait_round.microseconds / 1000)
 *             if ms <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_round must be at least 1ms")
 *             args.append(f"-r {ms}")
*/
    }

    /* "scamper.pyx":10041
 *             if ms <= 0:
 *                 raise ValueError("wait_round must be at least 1ms")
 *             args.append(f"-r {ms}")             # <<<<<<<<<<<<<<
 * 
 *         for pd in probedefs:
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_ms, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_r_2, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10041, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10041, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":10035
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {s}")
 *         if wait_round is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_round, datetime.timedelta):
 *                 wait_round = datetime.timedelta(seconds=wait_round)
*/
  }

  /* "scamper.pyx":10043
 *             args.append(f"-r {ms}")
 * 
 *         for pd in probedefs:             # <<<<<<<<<<<<<<
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
*/
  if (likely(PyList_CheckExact(__pyx_v_probedefs)) || PyTuple_CheckExact(__pyx_v_probedefs)) {
    __pyx_t_5 = __pyx_v_probedefs; __Pyx_INCREF(__pyx_t_5);
    __pyx_t_9 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_probedefs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10043, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10043, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10043, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRef(__pyx_t_5, __pyx_t_9);
        ++__pyx_t_9;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10043, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_9);
        #endif
        ++__pyx_t_9;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10043, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_10(__pyx_t_5);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 10043, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_pd, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":10044
 * 
 *         for pd in probedefs:
 *             if not isinstance(pd, ScamperDealiasProbedef):             # <<<<<<<<<<<<<<
 *                 raise ValueError("expected probedef in probedefs")
 *             args.append(f"-p '{pd}'")
*/
    __pyx_t_7 = __Pyx_TypeCheck(__pyx_v_pd, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasProbedef); 
    __pyx_t_6 = (!__pyx_t_7);
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":10045
 *         for pd in probedefs:
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")             # <<<<<<<<<<<<<<
 *             args.append(f"-p '{pd}'")
 *         for addr in addrs:
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_expected_probedef_in_probedefs};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10045, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10045, __pyx_L1_error)

      /* "scamper.pyx":10044
 * 
 *         for pd in probedefs:
 *             if not isinstance(pd, ScamperDealiasProbedef):             # <<<<<<<<<<<<<<
 *                 raise ValueError("expected probedef in probedefs")
 *             args.append(f"-p '{pd}'")
*/
    }

    /* "scamper.pyx":10046
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
 *             args.append(f"-p '{pd}'")             # <<<<<<<<<<<<<<
 *         for addr in addrs:
 *             if not isinstance(addr, str) and not isinstance(addr, ScamperAddr):
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_pd, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_p_2;
    __pyx_t_11[1] = __pyx_t_1;
    __pyx_t_11[2] = __pyx_mstate_global->__pyx_kp_u__13;
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, 4 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10046, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10046, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":10043
 *             args.append(f"-r {ms}")
 * 
 *         for pd in probedefs:             # <<<<<<<<<<<<<<
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
*/
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "scamper.pyx":10047
 *                 raise ValueError("expected probedef in probedefs")
 *             args.append(f"-p '{pd}'")
 *         for addr in addrs:             # <<<<<<<<<<<<<<
 *             if not isinstance(addr, str) and not isinstance(addr, ScamperAddr):
 *                 raise ValueError("expected str in addrs")
*/
  if (likely(PyList_CheckExact(__pyx_v_addrs)) || PyTuple_CheckExact(__pyx_v_addrs)) {
    __pyx_t_5 = __pyx_v_addrs; __Pyx_INCREF(__pyx_t_5);
    __pyx_t_9 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_v_addrs); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10047, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_5); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10047, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_5))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10047, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        __pyx_t_8 = __Pyx_PyList_GetItemRef(__pyx_t_5, __pyx_t_9);
        ++__pyx_t_9;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_5);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10047, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_8 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_9));
        #else
        __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_5, __pyx_t_9);
        #endif
        ++__pyx_t_9;
      }
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10047, __pyx_L1_error)
    } else {
      __pyx_t_8 = __pyx_t_10(__pyx_t_5);
      if (unlikely(!__pyx_t_8)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 10047, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_XDECREF_SET(__pyx_v_addr, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "scamper.pyx":10048
 *             args.append(f"-p '{pd}'")
 *         for addr in addrs:
 *             if not isinstance(addr, str) and not isinstance(addr, ScamperAddr):             # <<<<<<<<<<<<<<
 *                 raise ValueError("expected str in addrs")
 *             args.append(f"{addr}")
*/
    __pyx_t_7 = PyUnicode_Check(__pyx_v_addr); 
    __pyx_t_12 = (!__pyx_t_7);
    if (__pyx_t_12) {
    } else {
      __pyx_t_6 = __pyx_t_12;
      goto __pyx_L25_bool_binop_done;
    }
    __pyx_t_12 = __Pyx_TypeCheck(__pyx_v_addr, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr); 
    __pyx_t_7 = (!__pyx_t_12);
    __pyx_t_6 = __pyx_t_7;
    __pyx_L25_bool_binop_done:;
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":10049
 *         for addr in addrs:
 *             if not isinstance(addr, str) and not isinstance(addr, ScamperAddr):
 *                 raise ValueError("expected str in addrs")             # <<<<<<<<<<<<<<
 *             args.append(f"{addr}")
 * 
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_expected_str_in_addrs};
        __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10049, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(0, 10049, __pyx_L1_error)

      /* "scamper.pyx":10048
 *             args.append(f"-p '{pd}'")
 *         for addr in addrs:
 *             if not isinstance(addr, str) and not isinstance(addr, ScamperAddr):             # <<<<<<<<<<<<<<
 *                 raise ValueError("expected str in addrs")
 *             args.append(f"{addr}")
*/
    }

    /* "scamper.pyx":10050
 *             if not isinstance(addr, str) and not isinstance(addr, ScamperAddr):
 *                 raise ValueError("expected str in addrs")
 *             args.append(f"{addr}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_addr, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10050, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10050, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":10047
 *                 raise ValueError("expected probedef in probedefs")
 *             args.append(f"-p '{pd}'")
 *         for addr in addrs:             # <<<<<<<<<<<<<<
 *             if not isinstance(addr, str) and not isinstance(addr, ScamperAddr):
 *                 raise ValueError("expected str in addrs")
*/
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "scamper.pyx":10052
 *             args.append(f"{addr}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_midardisc(self, probedefs=None, schedule=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10052, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_3, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_5 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10052, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
  }
  __pyx_r = __pyx_t_5;
  __pyx_t_5 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":9978
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,             # <<<<<<<<<<<<<<
 *                     wait_timeout=None, probedefs=None, addrs=None,
 *                     userid=None, inst=None, sync=False):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_midarest", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_ms);
  __Pyx_XDECREF(__pyx_v_s);
  __Pyx_XDECREF(__pyx_v_pd);
  __Pyx_XDECREF(__pyx_v_addr);
  __Pyx_XDECREF(__pyx_v_wait_probe);
  __Pyx_XDECREF(__pyx_v_wait_round);
  __Pyx_XDECREF(__pyx_v_wait_timeout);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10054
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midardisc(self, probedefs=None, schedule=None,             # <<<<<<<<<<<<<<
 *                      startat=None, wait_timeout=None,
 *                      userid=None, inst=None, sync=False):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_55do_midardisc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_54do_midardisc, "\n        do_midardisc(probedefs=None, schedule=None,                     startat=None, wait_timeout=None,                     userid=None, inst=None, sync=False)\n        conduct MIDAR-style discovery-stage probing of a set of IP\n        addresses.  If this method could not queue the\n        measurement, it will raise a :py:exc:`RuntimeError` exception.\n\n        :param ScamperInst inst: The specific instance to issue command over\n        :param int userid: The userid value to tag with this measurement\n        :param datetime startat: The time to start the measurement at\n        :param timedelta wait_timeout: The length of time to wait for a\n            response to a probe\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :param list probedefs: The list of probe types and IPs to probe\n        :returns: a task object representing the midardisc alias resolution\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_55do_midardisc = {"do_midardisc", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_55do_midardisc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_54do_midardisc};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_55do_midardisc(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_probedefs = 0;
  PyObject *__pyx_v_schedule = 0;
  PyObject *__pyx_v_startat = 0;
  PyObject *__pyx_v_wait_timeout = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[7] = {0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_midardisc (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_probedefs,&__pyx_mstate_global->__pyx_n_u_schedule,&__pyx_mstate_global->__pyx_n_u_startat,&__pyx_mstate_global->__pyx_n_u_wait_timeout,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 10054, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_midardisc", 0) < 0) __PYX_ERR(0, 10054, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10055
 * 
 *     def do_midardisc(self, probedefs=None, schedule=None,
 *                      startat=None, wait_timeout=None,             # <<<<<<<<<<<<<<
 *                      userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10056
 *     def do_midardisc(self, probedefs=None, schedule=None,
 *                      startat=None, wait_timeout=None,
 *                      userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_midardisc(probedefs=None, schedule=None,\
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_False));
    } else {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10054, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":10054
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midardisc(self, probedefs=None, schedule=None,             # <<<<<<<<<<<<<<
 *                      startat=None, wait_timeout=None,
 *                      userid=None, inst=None, sync=False):
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10055
 * 
 *     def do_midardisc(self, probedefs=None, schedule=None,
 *                      startat=None, wait_timeout=None,             # <<<<<<<<<<<<<<
 *                      userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10056
 *     def do_midardisc(self, probedefs=None, schedule=None,
 *                      startat=None, wait_timeout=None,
 *                      userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_midardisc(probedefs=None, schedule=None,\
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_probedefs = values[0];
    __pyx_v_schedule = values[1];
    __pyx_v_startat = values[2];
    __pyx_v_wait_timeout = values[3];
    __pyx_v_userid = values[4];
    __pyx_v_inst = values[5];
    __pyx_v_sync = values[6];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_midardisc", 0, 0, 7, __pyx_nargs); __PYX_ERR(0, 10054, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_midardisc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_54do_midardisc(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_probedefs, __pyx_v_schedule, __pyx_v_startat, __pyx_v_wait_timeout, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":10054
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midardisc(self, probedefs=None, schedule=None,             # <<<<<<<<<<<<<<
 *                      startat=None, wait_timeout=None,
 *                      userid=None, inst=None, sync=False):
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_54do_midardisc(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_probedefs, PyObject *__pyx_v_schedule, PyObject *__pyx_v_startat, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_v_s = NULL;
  PyObject *__pyx_v_pd = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_midardisc", 0);
  __Pyx_INCREF(__pyx_v_wait_timeout);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":10077
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("dealias -m midardisc")
 *         inst = self._getinst(inst, "midardisc", sync, listallowed=False)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10077, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10078
 * 
 *         args = []
 *         args.append("dealias -m midardisc")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "midardisc", sync, listallowed=False)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_dealias_m_midardisc); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10078, __pyx_L1_error)

  /* "scamper.pyx":10079
 *         args = []
 *         args.append("dealias -m midardisc")
 *         inst = self._getinst(inst, "midardisc", sync, listallowed=False)             # <<<<<<<<<<<<<<
 * 
 *         if probedefs is None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_midardisc, __pyx_v_sync};
    __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_listallowed, Py_False, __pyx_t_5, __pyx_callargs+4, 0) < 0) __PYX_ERR(0, 10079, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10079, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10081
 *         inst = self._getinst(inst, "midardisc", sync, listallowed=False)
 * 
 *         if probedefs is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("missing probedefs")
 *         if schedule is None:
*/
  __pyx_t_6 = (__pyx_v_probedefs == Py_None);
  if (unlikely(__pyx_t_6)) {

    /* "scamper.pyx":10082
 * 
 *         if probedefs is None:
 *             raise ValueError("missing probedefs")             # <<<<<<<<<<<<<<
 *         if schedule is None:
 *             raise ValueError("missing schedule")
*/
    __pyx_t_5 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_3 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_missing_probedefs};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10082, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 10082, __pyx_L1_error)

    /* "scamper.pyx":10081
 *         inst = self._getinst(inst, "midardisc", sync, listallowed=False)
 * 
 *         if probedefs is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("missing probedefs")
 *         if schedule is None:
*/
  }

  /* "scamper.pyx":10083
 *         if probedefs is None:
 *             raise ValueError("missing probedefs")
 *         if schedule is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("missing schedule")
 * 
*/
  __pyx_t_6 = (__pyx_v_schedule == Py_None);
  if (unlikely(__pyx_t_6)) {

    /* "scamper.pyx":10084
 *             raise ValueError("missing probedefs")
 *         if schedule is None:
 *             raise ValueError("missing schedule")             # <<<<<<<<<<<<<<
 * 
 *         if userid is not None:
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_5 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_missing_schedule};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10084, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 10084, __pyx_L1_error)

    /* "scamper.pyx":10083
 *         if probedefs is None:
 *             raise ValueError("missing probedefs")
 *         if schedule is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("missing schedule")
 * 
*/
  }

  /* "scamper.pyx":10086
 *             raise ValueError("missing schedule")
 * 
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")
*/
  __pyx_t_6 = (__pyx_v_userid != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10087
 * 
 *         if userid is not None:
 *             if not isinstance(userid, int):             # <<<<<<<<<<<<<<
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")
*/
    __pyx_t_6 = PyLong_Check(__pyx_v_userid); 
    __pyx_t_7 = (!__pyx_t_6);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10088
 *         if userid is not None:
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
*/
      __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_userid_not_an_integer};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10088, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10088, __pyx_L1_error)

      /* "scamper.pyx":10087
 * 
 *         if userid is not None:
 *             if not isinstance(userid, int):             # <<<<<<<<<<<<<<
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")
*/
    }

    /* "scamper.pyx":10089
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10089, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10089, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10089, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":10086
 *             raise ValueError("missing schedule")
 * 
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")
*/
  }

  /* "scamper.pyx":10090
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  __pyx_t_7 = (__pyx_v_wait_timeout != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":10091
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             s = int(wait_timeout.seconds)
*/
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10091, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = PyObject_IsInstance(__pyx_v_wait_timeout, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 10091, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_6 = (!__pyx_t_7);
    if (__pyx_t_6) {

      /* "scamper.pyx":10092
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)             # <<<<<<<<<<<<<<
 *             s = int(wait_timeout.seconds)
 *             if s <= 0:
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10092, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10092, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, NULL};
        __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10092, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_timeout, __pyx_t_5, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10092, __pyx_L1_error)
        __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_8, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10092, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_timeout, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "scamper.pyx":10091
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             s = int(wait_timeout.seconds)
*/
    }

    /* "scamper.pyx":10093
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             s = int(wait_timeout.seconds)             # <<<<<<<<<<<<<<
 *             if s <= 0:
 *                 raise ValueError("wait_timeout must be at least 1s")
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_timeout, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10093, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_v_s = __pyx_t_8;
    __pyx_t_8 = 0;

    /* "scamper.pyx":10094
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             s = int(wait_timeout.seconds)
 *             if s <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {s}")
*/
    __pyx_t_8 = PyObject_RichCompare(__pyx_v_s, __pyx_mstate_global->__pyx_int_0, Py_LE); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10094, __pyx_L1_error)
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_8); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 10094, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":10095
 *             s = int(wait_timeout.seconds)
 *             if s <= 0:
 *                 raise ValueError("wait_timeout must be at least 1s")             # <<<<<<<<<<<<<<
 *             args.append(f"-w {s}")
 *         if startat is not None:
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_5 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_wait_timeout_must_be_at_least_1s};
        __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10095, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(0, 10095, __pyx_L1_error)

      /* "scamper.pyx":10094
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             s = int(wait_timeout.seconds)
 *             if s <= 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {s}")
*/
    }

    /* "scamper.pyx":10096
 *             if s <= 0:
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {s}")             # <<<<<<<<<<<<<<
 *         if startat is not None:
 *             if not isinstance(startat, datetime.datetime):
*/
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_s, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_w_2, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10096, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10096, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":10090
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  }

  /* "scamper.pyx":10097
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {s}")
 *         if startat is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(startat, datetime.datetime):
 *                 raise ValueError("startat not a datetime")
*/
  __pyx_t_6 = (__pyx_v_startat != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10098
 *             args.append(f"-w {s}")
 *         if startat is not None:
 *             if not isinstance(startat, datetime.datetime):             # <<<<<<<<<<<<<<
 *                 raise ValueError("startat not a datetime")
 *             args.append(f"-@ {startat.timestamp()}")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10098, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10098, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = PyObject_IsInstance(__pyx_v_startat, __pyx_t_8); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 10098, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_7 = (!__pyx_t_6);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10099
 *         if startat is not None:
 *             if not isinstance(startat, datetime.datetime):
 *                 raise ValueError("startat not a datetime")             # <<<<<<<<<<<<<<
 *             args.append(f"-@ {startat.timestamp()}")
 * 
*/
      __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_1 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_startat_not_a_datetime};
        __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10099, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(0, 10099, __pyx_L1_error)

      /* "scamper.pyx":10098
 *             args.append(f"-w {s}")
 *         if startat is not None:
 *             if not isinstance(startat, datetime.datetime):             # <<<<<<<<<<<<<<
 *                 raise ValueError("startat not a datetime")
 *             args.append(f"-@ {startat.timestamp()}")
*/
    }

    /* "scamper.pyx":10100
 *             if not isinstance(startat, datetime.datetime):
 *                 raise ValueError("startat not a datetime")
 *             args.append(f"-@ {startat.timestamp()}")             # <<<<<<<<<<<<<<
 * 
 *         for pd in probedefs:
*/
    __pyx_t_1 = __pyx_v_startat;
    __Pyx_INCREF(__pyx_t_1);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
      __pyx_t_8 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_timestamp, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10100, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
    }
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u__20, __pyx_t_1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10100, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10100, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":10097
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {s}")
 *         if startat is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(startat, datetime.datetime):
 *                 raise ValueError("startat not a datetime")
*/
  }

  /* "scamper.pyx":10102
 *             args.append(f"-@ {startat.timestamp()}")
 * 
 *         for pd in probedefs:             # <<<<<<<<<<<<<<
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
*/
  if (likely(PyList_CheckExact(__pyx_v_probedefs)) || PyTuple_CheckExact(__pyx_v_probedefs)) {
    __pyx_t_8 = __pyx_v_probedefs; __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_probedefs); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10102, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10102, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_8))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10102, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        __pyx_t_1 = __Pyx_PyList_GetItemRef(__pyx_t_8, __pyx_t_9);
        ++__pyx_t_9;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10102, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_1 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9));
        #else
        __pyx_t_1 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_9);
        #endif
        ++__pyx_t_9;
      }
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10102, __pyx_L1_error)
    } else {
      __pyx_t_1 = __pyx_t_10(__pyx_t_8);
      if (unlikely(!__pyx_t_1)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 10102, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_pd, __pyx_t_1);
    __pyx_t_1 = 0;

    /* "scamper.pyx":10103
 * 
 *         for pd in probedefs:
 *             if not isinstance(pd, ScamperDealiasProbedef):             # <<<<<<<<<<<<<<
 *                 raise ValueError("expected probedef in probedefs")
 *             if pd.dst is None:
*/
    __pyx_t_7 = __Pyx_TypeCheck(__pyx_v_pd, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasProbedef); 
    __pyx_t_6 = (!__pyx_t_7);
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":10104
 *         for pd in probedefs:
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")             # <<<<<<<<<<<<<<
 *             if pd.dst is None:
 *                 raise ValueError("missing IP address in probedef")
*/
      __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_kp_u_expected_probedef_in_probedefs};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10104, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10104, __pyx_L1_error)

      /* "scamper.pyx":10103
 * 
 *         for pd in probedefs:
 *             if not isinstance(pd, ScamperDealiasProbedef):             # <<<<<<<<<<<<<<
 *                 raise ValueError("expected probedef in probedefs")
 *             if pd.dst is None:
*/
    }

    /* "scamper.pyx":10105
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
 *             if pd.dst is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("missing IP address in probedef")
 *             args.append(f"-p '{pd}'")
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_dst); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10105, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = (__pyx_t_1 == Py_None);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":10106
 *                 raise ValueError("expected probedef in probedefs")
 *             if pd.dst is None:
 *                 raise ValueError("missing IP address in probedef")             # <<<<<<<<<<<<<<
 *             args.append(f"-p '{pd}'")
 * 
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_5 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_missing_IP_address_in_probedef};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10106, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10106, __pyx_L1_error)

      /* "scamper.pyx":10105
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
 *             if pd.dst is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("missing IP address in probedef")
 *             args.append(f"-p '{pd}'")
*/
    }

    /* "scamper.pyx":10107
 *             if pd.dst is None:
 *                 raise ValueError("missing IP address in probedef")
 *             args.append(f"-p '{pd}'")             # <<<<<<<<<<<<<<
 * 
 *         for s in schedule:
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_pd, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_11[0] = __pyx_mstate_global->__pyx_kp_u_p_2;
    __pyx_t_11[1] = __pyx_t_1;
    __pyx_t_11[2] = __pyx_mstate_global->__pyx_kp_u__13;
    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_11, 3, 4 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10107, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10107, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":10102
 *             args.append(f"-@ {startat.timestamp()}")
 * 
 *         for pd in probedefs:             # <<<<<<<<<<<<<<
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
*/
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "scamper.pyx":10109
 *             args.append(f"-p '{pd}'")
 * 
 *         for s in schedule:             # <<<<<<<<<<<<<<
 *             if not isinstance(s, ScamperDealiasMidardiscRound):
 *                 raise ValueError("expected round in schedule")
*/
  if (likely(PyList_CheckExact(__pyx_v_schedule)) || PyTuple_CheckExact(__pyx_v_schedule)) {
    __pyx_t_8 = __pyx_v_schedule; __Pyx_INCREF(__pyx_t_8);
    __pyx_t_9 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_schedule); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10109, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_10 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10109, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_10)) {
      if (likely(PyList_CheckExact(__pyx_t_8))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10109, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        __pyx_t_5 = __Pyx_PyList_GetItemRef(__pyx_t_8, __pyx_t_9);
        ++__pyx_t_9;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10109, __pyx_L1_error)
          #endif
          if (__pyx_t_9 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_5 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_9));
        #else
        __pyx_t_5 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_9);
        #endif
        ++__pyx_t_9;
      }
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10109, __pyx_L1_error)
    } else {
      __pyx_t_5 = __pyx_t_10(__pyx_t_8);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 10109, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_XDECREF_SET(__pyx_v_s, __pyx_t_5);
    __pyx_t_5 = 0;

    /* "scamper.pyx":10110
 * 
 *         for s in schedule:
 *             if not isinstance(s, ScamperDealiasMidardiscRound):             # <<<<<<<<<<<<<<
 *                 raise ValueError("expected round in schedule")
 *             args.append(f"-S {s}")
*/
    __pyx_t_6 = __Pyx_TypeCheck(__pyx_v_s, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound); 
    __pyx_t_7 = (!__pyx_t_6);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10111
 *         for s in schedule:
 *             if not isinstance(s, ScamperDealiasMidardiscRound):
 *                 raise ValueError("expected round in schedule")             # <<<<<<<<<<<<<<
 *             args.append(f"-S {s}")
 * 
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_expected_round_in_schedule};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10111, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 10111, __pyx_L1_error)

      /* "scamper.pyx":10110
 * 
 *         for s in schedule:
 *             if not isinstance(s, ScamperDealiasMidardiscRound):             # <<<<<<<<<<<<<<
 *                 raise ValueError("expected round in schedule")
 *             args.append(f"-S {s}")
*/
    }

    /* "scamper.pyx":10112
 *             if not isinstance(s, ScamperDealiasMidardiscRound):
 *                 raise ValueError("expected round in schedule")
 *             args.append(f"-S {s}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
    __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_s, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_S_2, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10112, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10112, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":10109
 *             args.append(f"-p '{pd}'")
 * 
 *         for s in schedule:             # <<<<<<<<<<<<<<
 *             if not isinstance(s, ScamperDealiasMidardiscRound):
 *                 raise ValueError("expected round in schedule")
*/
  }
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "scamper.pyx":10114
 *             args.append(f"-S {s}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_radargun(self, addrs=None, rounds=None, probedefs=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_5 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10114, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_t_5, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_8 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10114, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  }
  __pyx_r = __pyx_t_8;
  __pyx_t_8 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10054
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midardisc(self, probedefs=None, schedule=None,             # <<<<<<<<<<<<<<
 *                      startat=None, wait_timeout=None,
 *                      userid=None, inst=None, sync=False):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_midardisc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_s);
  __Pyx_XDECREF(__pyx_v_pd);
  __Pyx_XDECREF(__pyx_v_wait_timeout);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10116
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_radargun(self, addrs=None, rounds=None, probedefs=None,             # <<<<<<<<<<<<<<
 *                     wait_probe=None, wait_round=None, wait_timeout=None,
 *                     userid=None, inst=None, sync=False):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_57do_radargun(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_56do_radargun, "\n        do_radargun(addrs=None, rounds=None, probedefs=None,                    wait_probe=None, wait_round=None, wait_timeout=None,                    userid=None, inst=None, sync=False):\n        conduct Radargun-style probing of a set of IP addresses.\n        If this method could not queue the measurement, it will raise a\n        :py:exc:`RuntimeError` exception.\n\n        :param list addrs: The addresses to probe.  This parameter is\n        :param int rounds: The number of rounds for this measurement.\n        :param list probedefs: The list of probe types to use.\n            This parameter is mandatory.\n            If a list of addresses is provided, then the probedefs must\n            not also contain IP addresses.\n            If a list of addresses is not provided, then the probedefs must\n            contain IP addresses.\n        :param timedelta wait_probe: The minimum delay between two probes.\n        :param timedelta wait_round: The length of time between starting\n            consecutive rounds.\n        :param timedelta wait_timeout: The length of time to wait for a\n            response to a probe.\n        :param int userid: The userid value to tag with this measurement\n        :param ScamperInst inst: The specific instance to issue command over\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: a task object representing the radargun alias resolution\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_57do_radargun = {"do_radargun", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_57do_radargun, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_56do_radargun};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_57do_radargun(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_addrs = 0;
  PyObject *__pyx_v_rounds = 0;
  PyObject *__pyx_v_probedefs = 0;
  PyObject *__pyx_v_wait_probe = 0;
  PyObject *__pyx_v_wait_round = 0;
  PyObject *__pyx_v_wait_timeout = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_radargun (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_addrs,&__pyx_mstate_global->__pyx_n_u_rounds,&__pyx_mstate_global->__pyx_n_u_probedefs,&__pyx_mstate_global->__pyx_n_u_wait_probe,&__pyx_mstate_global->__pyx_n_u_wait_round,&__pyx_mstate_global->__pyx_n_u_wait_timeout,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 10116, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_radargun", 0) < 0) __PYX_ERR(0, 10116, __pyx_L3_error)
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10117
 * 
 *     def do_radargun(self, addrs=None, rounds=None, probedefs=None,
 *                     wait_probe=None, wait_round=None, wait_timeout=None,             # <<<<<<<<<<<<<<
 *                     userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10118
 *     def do_radargun(self, addrs=None, rounds=None, probedefs=None,
 *                     wait_probe=None, wait_round=None, wait_timeout=None,
 *                     userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_radargun(addrs=None, rounds=None, probedefs=None,\
*/
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_False));
    } else {
      switch (__pyx_nargs) {
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10116, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":10116
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_radargun(self, addrs=None, rounds=None, probedefs=None,             # <<<<<<<<<<<<<<
 *                     wait_probe=None, wait_round=None, wait_timeout=None,
 *                     userid=None, inst=None, sync=False):
*/
      if (!values[0]) values[0] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10117
 * 
 *     def do_radargun(self, addrs=None, rounds=None, probedefs=None,
 *                     wait_probe=None, wait_round=None, wait_timeout=None,             # <<<<<<<<<<<<<<
 *                     userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10118
 *     def do_radargun(self, addrs=None, rounds=None, probedefs=None,
 *                     wait_probe=None, wait_round=None, wait_timeout=None,
 *                     userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_radargun(addrs=None, rounds=None, probedefs=None,\
*/
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_addrs = values[0];
    __pyx_v_rounds = values[1];
    __pyx_v_probedefs = values[2];
    __pyx_v_wait_probe = values[3];
    __pyx_v_wait_round = values[4];
    __pyx_v_wait_timeout = values[5];
    __pyx_v_userid = values[6];
    __pyx_v_inst = values[7];
    __pyx_v_sync = values[8];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_radargun", 0, 0, 9, __pyx_nargs); __PYX_ERR(0, 10116, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_radargun", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_56do_radargun(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_addrs, __pyx_v_rounds, __pyx_v_probedefs, __pyx_v_wait_probe, __pyx_v_wait_round, __pyx_v_wait_timeout, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":10116
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_radargun(self, addrs=None, rounds=None, probedefs=None,             # <<<<<<<<<<<<<<
 *                     wait_probe=None, wait_round=None, wait_timeout=None,
 *                     userid=None, inst=None, sync=False):
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_56do_radargun(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_addrs, PyObject *__pyx_v_rounds, PyObject *__pyx_v_probedefs, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_wait_round, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_v_pd = NULL;
  PyObject *__pyx_v_a = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[3];
  Py_ssize_t __pyx_t_10;
  PyObject *(*__pyx_t_11)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_radargun", 0);
  __Pyx_INCREF(__pyx_v_wait_probe);
  __Pyx_INCREF(__pyx_v_wait_round);
  __Pyx_INCREF(__pyx_v_wait_timeout);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":10148
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("dealias -m radargun")
 *         inst = self._getinst(inst, "radargun", sync)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10148, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10149
 * 
 *         args = []
 *         args.append("dealias -m radargun")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "radargun", sync)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_dealias_m_radargun); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10149, __pyx_L1_error)

  /* "scamper.pyx":10150
 *         args = []
 *         args.append("dealias -m radargun")
 *         inst = self._getinst(inst, "radargun", sync)             # <<<<<<<<<<<<<<
 * 
 *         if probedefs is None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_radargun, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10150, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10152
 *         inst = self._getinst(inst, "radargun", sync)
 * 
 *         if probedefs is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("missing probedefs")
 * 
*/
  __pyx_t_5 = (__pyx_v_probedefs == Py_None);
  if (unlikely(__pyx_t_5)) {

    /* "scamper.pyx":10153
 * 
 *         if probedefs is None:
 *             raise ValueError("missing probedefs")             # <<<<<<<<<<<<<<
 * 
 *         if rounds is not None:
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_6 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_missing_probedefs};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10153, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 10153, __pyx_L1_error)

    /* "scamper.pyx":10152
 *         inst = self._getinst(inst, "radargun", sync)
 * 
 *         if probedefs is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("missing probedefs")
 * 
*/
  }

  /* "scamper.pyx":10155
 *             raise ValueError("missing probedefs")
 * 
 *         if rounds is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(rounds, int):
 *                 raise ValueError("rounds not an integer")
*/
  __pyx_t_5 = (__pyx_v_rounds != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10156
 * 
 *         if rounds is not None:
 *             if not isinstance(rounds, int):             # <<<<<<<<<<<<<<
 *                 raise ValueError("rounds not an integer")
 *             args.append(f"-q {rounds}")
*/
    __pyx_t_5 = PyLong_Check(__pyx_v_rounds); 
    __pyx_t_7 = (!__pyx_t_5);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10157
 *         if rounds is not None:
 *             if not isinstance(rounds, int):
 *                 raise ValueError("rounds not an integer")             # <<<<<<<<<<<<<<
 *             args.append(f"-q {rounds}")
 * 
*/
      __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_rounds_not_an_integer};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10157, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10157, __pyx_L1_error)

      /* "scamper.pyx":10156
 * 
 *         if rounds is not None:
 *             if not isinstance(rounds, int):             # <<<<<<<<<<<<<<
 *                 raise ValueError("rounds not an integer")
 *             args.append(f"-q {rounds}")
*/
    }

    /* "scamper.pyx":10158
 *             if not isinstance(rounds, int):
 *                 raise ValueError("rounds not an integer")
 *             args.append(f"-q {rounds}")             # <<<<<<<<<<<<<<
 * 
 *         if userid is not None:
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_rounds, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_q, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10158, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10158, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":10155
 *             raise ValueError("missing probedefs")
 * 
 *         if rounds is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(rounds, int):
 *                 raise ValueError("rounds not an integer")
*/
  }

  /* "scamper.pyx":10160
 *             args.append(f"-q {rounds}")
 * 
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")
*/
  __pyx_t_7 = (__pyx_v_userid != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":10161
 * 
 *         if userid is not None:
 *             if not isinstance(userid, int):             # <<<<<<<<<<<<<<
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")
*/
    __pyx_t_7 = PyLong_Check(__pyx_v_userid); 
    __pyx_t_5 = (!__pyx_t_7);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":10162
 *         if userid is not None:
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 * 
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_6 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_userid_not_an_integer};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10162, __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_ERR(0, 10162, __pyx_L1_error)

      /* "scamper.pyx":10161
 * 
 *         if userid is not None:
 *             if not isinstance(userid, int):             # <<<<<<<<<<<<<<
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")
*/
    }

    /* "scamper.pyx":10163
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 * 
 *         if wait_probe is not None:
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10163, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_6); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10163, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "scamper.pyx":10160
 *             args.append(f"-q {rounds}")
 * 
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(userid, int):
 *                 raise ValueError("userid not an integer")
*/
  }

  /* "scamper.pyx":10165
 *             args.append(f"-U {userid}")
 * 
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  __pyx_t_5 = (__pyx_v_wait_probe != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10166
 * 
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             if wait_probe <= datetime.timedelta(seconds=0):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10166, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_5 = PyObject_IsInstance(__pyx_v_wait_probe, __pyx_t_3); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 10166, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = (!__pyx_t_5);
    if (__pyx_t_7) {

      /* "scamper.pyx":10167
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)             # <<<<<<<<<<<<<<
 *             if wait_probe <= datetime.timedelta(seconds=0):
 *                 raise ValueError("wait_probe must be greater than zero")
*/
      __pyx_t_6 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10167, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10167, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_6);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_6, NULL};
        __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10167, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_probe, __pyx_t_1, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10167, __pyx_L1_error)
        __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_8, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1);
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10167, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_probe, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "scamper.pyx":10166
 * 
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             if wait_probe <= datetime.timedelta(seconds=0):
*/
    }

    /* "scamper.pyx":10168
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             if wait_probe <= datetime.timedelta(seconds=0):             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_probe must be greater than zero")
 *             args.append(f"-W {wait_probe.total_seconds()}s")
*/
    __pyx_t_8 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10168, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_4 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_8, NULL};
      __pyx_t_1 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10168, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_mstate_global->__pyx_int_0, __pyx_t_1, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10168, __pyx_L1_error)
      __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_6, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_1);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10168, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_wait_probe, __pyx_t_3, Py_LE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10168, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 10168, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10169
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             if wait_probe <= datetime.timedelta(seconds=0):
 *                 raise ValueError("wait_probe must be greater than zero")             # <<<<<<<<<<<<<<
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 * 
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_1 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_wait_probe_must_be_greater_than};
        __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10169, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_Raise(__pyx_t_6, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __PYX_ERR(0, 10169, __pyx_L1_error)

      /* "scamper.pyx":10168
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             if wait_probe <= datetime.timedelta(seconds=0):             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_probe must be greater than zero")
 *             args.append(f"-W {wait_probe.total_seconds()}s")
*/
    }

    /* "scamper.pyx":10170
 *             if wait_probe <= datetime.timedelta(seconds=0):
 *                 raise ValueError("wait_probe must be greater than zero")
 *             args.append(f"-W {wait_probe.total_seconds()}s")             # <<<<<<<<<<<<<<
 * 
 *         if wait_round is not None:
*/
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_probe, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_W;
    __pyx_t_9[1] = __pyx_t_6;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6));
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10170, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10170, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":10165
 *             args.append(f"-U {userid}")
 * 
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  }

  /* "scamper.pyx":10172
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 * 
 *         if wait_round is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_round, datetime.timedelta):
 *                 wait_round = datetime.timedelta(seconds=wait_round)
*/
  __pyx_t_7 = (__pyx_v_wait_round != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":10173
 * 
 *         if wait_round is not None:
 *             if not isinstance(wait_round, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_round = datetime.timedelta(seconds=wait_round)
 *             if wait_round <= datetime.timedelta(seconds=0):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10173, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = PyObject_IsInstance(__pyx_v_wait_round, __pyx_t_6); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 10173, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_5 = (!__pyx_t_7);
    if (__pyx_t_5) {

      /* "scamper.pyx":10174
 *         if wait_round is not None:
 *             if not isinstance(wait_round, datetime.timedelta):
 *                 wait_round = datetime.timedelta(seconds=wait_round)             # <<<<<<<<<<<<<<
 *             if wait_round <= datetime.timedelta(seconds=0):
 *                 raise ValueError("wait_round must be greater than zero")
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10174, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10174, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL};
        __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_round, __pyx_t_3, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10174, __pyx_L1_error)
        __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_8, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10174, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_round, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "scamper.pyx":10173
 * 
 *         if wait_round is not None:
 *             if not isinstance(wait_round, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_round = datetime.timedelta(seconds=wait_round)
 *             if wait_round <= datetime.timedelta(seconds=0):
*/
    }

    /* "scamper.pyx":10175
 *             if not isinstance(wait_round, datetime.timedelta):
 *                 wait_round = datetime.timedelta(seconds=wait_round)
 *             if wait_round <= datetime.timedelta(seconds=0):             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_round must be greater than zero")
 *             args.append(f"-r {wait_round.total_seconds()}s")
*/
    __pyx_t_8 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10175, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_4 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_1))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_1);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
      __pyx_t_4 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_8, NULL};
      __pyx_t_3 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10175, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_mstate_global->__pyx_int_0, __pyx_t_3, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10175, __pyx_L1_error)
      __pyx_t_6 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_1, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_3);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10175, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
    }
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_wait_round, __pyx_t_6, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10175, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 10175, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":10176
 *                 wait_round = datetime.timedelta(seconds=wait_round)
 *             if wait_round <= datetime.timedelta(seconds=0):
 *                 raise ValueError("wait_round must be greater than zero")             # <<<<<<<<<<<<<<
 *             args.append(f"-r {wait_round.total_seconds()}s")
 * 
*/
      __pyx_t_6 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_wait_round_must_be_greater_than};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10176, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10176, __pyx_L1_error)

      /* "scamper.pyx":10175
 *             if not isinstance(wait_round, datetime.timedelta):
 *                 wait_round = datetime.timedelta(seconds=wait_round)
 *             if wait_round <= datetime.timedelta(seconds=0):             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_round must be greater than zero")
 *             args.append(f"-r {wait_round.total_seconds()}s")
*/
    }

    /* "scamper.pyx":10177
 *             if wait_round <= datetime.timedelta(seconds=0):
 *                 raise ValueError("wait_round must be greater than zero")
 *             args.append(f"-r {wait_round.total_seconds()}s")             # <<<<<<<<<<<<<<
 * 
 *         if wait_timeout is not None:
*/
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_round, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_CallNoArg(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_r_2;
    __pyx_t_9[1] = __pyx_t_1;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10177, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10177, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":10172
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 * 
 *         if wait_round is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_round, datetime.timedelta):
 *                 wait_round = datetime.timedelta(seconds=wait_round)
*/
  }

  /* "scamper.pyx":10179
 *             args.append(f"-r {wait_round.total_seconds()}s")
 * 
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  __pyx_t_5 = (__pyx_v_wait_timeout != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10180
 * 
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             if not wait_timeout >= datetime.timedelta(seconds=1):
*/
    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10180, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = PyObject_IsInstance(__pyx_v_wait_timeout, __pyx_t_1); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 10180, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = (!__pyx_t_5);
    if (__pyx_t_7) {

      /* "scamper.pyx":10181
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)             # <<<<<<<<<<<<<<
 *             if not wait_timeout >= datetime.timedelta(seconds=1):
 *                 raise ValueError("wait_timeout must be at least 1s")
*/
      __pyx_t_3 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10181, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10181, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_3);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, NULL};
        __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10181, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_timeout, __pyx_t_6, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10181, __pyx_L1_error)
        __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_8, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10181, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_timeout, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "scamper.pyx":10180
 * 
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             if not wait_timeout >= datetime.timedelta(seconds=1):
*/
    }

    /* "scamper.pyx":10182
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             if not wait_timeout >= datetime.timedelta(seconds=1):             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
*/
    __pyx_t_8 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10182, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_4 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_3))) {
      __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_3);
      assert(__pyx_t_8);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_3);
      __Pyx_INCREF(__pyx_t_8);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_3, __pyx__function);
      __pyx_t_4 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_8, NULL};
      __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10182, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_mstate_global->__pyx_int_1, __pyx_t_6, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10182, __pyx_L1_error)
      __pyx_t_1 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_3, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10182, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_3 = PyObject_RichCompare(__pyx_v_wait_timeout, __pyx_t_1, Py_GE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10182, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 10182, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = (!__pyx_t_7);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":10183
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             if not wait_timeout >= datetime.timedelta(seconds=1):
 *                 raise ValueError("wait_timeout must be at least 1s")             # <<<<<<<<<<<<<<
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 * 
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_6 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_wait_timeout_must_be_at_least_1s};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10183, __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_ERR(0, 10183, __pyx_L1_error)

      /* "scamper.pyx":10182
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             if not wait_timeout >= datetime.timedelta(seconds=1):             # <<<<<<<<<<<<<<
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
*/
    }

    /* "scamper.pyx":10184
 *             if not wait_timeout >= datetime.timedelta(seconds=1):
 *                 raise ValueError("wait_timeout must be at least 1s")
 *             args.append(f"-w {wait_timeout.total_seconds()}s")             # <<<<<<<<<<<<<<
 * 
 *         for pd in probedefs:
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_timeout, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_6, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_w_2;
    __pyx_t_9[1] = __pyx_t_3;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10184, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_6); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10184, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "scamper.pyx":10179
 *             args.append(f"-r {wait_round.total_seconds()}s")
 * 
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  }

  /* "scamper.pyx":10186
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 * 
 *         for pd in probedefs:             # <<<<<<<<<<<<<<
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
*/
  if (likely(PyList_CheckExact(__pyx_v_probedefs)) || PyTuple_CheckExact(__pyx_v_probedefs)) {
    __pyx_t_6 = __pyx_v_probedefs; __Pyx_INCREF(__pyx_t_6);
    __pyx_t_10 = 0;
    __pyx_t_11 = NULL;
  } else {
    __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_probedefs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10186, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 10186, __pyx_L1_error)
  }
  for (;;) {
    if (likely(!__pyx_t_11)) {
      if (likely(PyList_CheckExact(__pyx_t_6))) {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_6);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10186, __pyx_L1_error)
          #endif
          if (__pyx_t_10 >= __pyx_temp) break;
        }
        __pyx_t_3 = __Pyx_PyList_GetItemRef(__pyx_t_6, __pyx_t_10);
        ++__pyx_t_10;
      } else {
        {
          Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_6);
          #if !CYTHON_ASSUME_SAFE_SIZE
          if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10186, __pyx_L1_error)
          #endif
          if (__pyx_t_10 >= __pyx_temp) break;
        }
        #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10));
        #else
        __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_10);
        #endif
        ++__pyx_t_10;
      }
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10186, __pyx_L1_error)
    } else {
      __pyx_t_3 = __pyx_t_11(__pyx_t_6);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 10186, __pyx_L1_error)
          PyErr_Clear();
        }
        break;
      }
    }
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XDECREF_SET(__pyx_v_pd, __pyx_t_3);
    __pyx_t_3 = 0;

    /* "scamper.pyx":10187
 * 
 *         for pd in probedefs:
 *             if not isinstance(pd, ScamperDealiasProbedef):             # <<<<<<<<<<<<<<
 *                 raise ValueError("expected probedef in probedefs")
 *             if addrs is None and pd.dst is None:
*/
    __pyx_t_5 = __Pyx_TypeCheck(__pyx_v_pd, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasProbedef); 
    __pyx_t_7 = (!__pyx_t_5);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10188
 *         for pd in probedefs:
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")             # <<<<<<<<<<<<<<
 *             if addrs is None and pd.dst is None:
 *                 raise ValueError("missing IP address in probedef")
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_expected_probedef_in_probedefs};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10188, __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_ERR(0, 10188, __pyx_L1_error)

      /* "scamper.pyx":10187
 * 
 *         for pd in probedefs:
 *             if not isinstance(pd, ScamperDealiasProbedef):             # <<<<<<<<<<<<<<
 *                 raise ValueError("expected probedef in probedefs")
 *             if addrs is None and pd.dst is None:
*/
    }

    /* "scamper.pyx":10189
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
 *             if addrs is None and pd.dst is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("missing IP address in probedef")
 *             elif addrs is not None and pd.dst is not None:
*/
    __pyx_t_5 = (__pyx_v_addrs == Py_None);
    if (__pyx_t_5) {
    } else {
      __pyx_t_7 = __pyx_t_5;
      goto __pyx_L21_bool_binop_done;
    }
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_dst); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10189, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = (__pyx_t_3 == Py_None);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __pyx_t_5;
    __pyx_L21_bool_binop_done:;
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10190
 *                 raise ValueError("expected probedef in probedefs")
 *             if addrs is None and pd.dst is None:
 *                 raise ValueError("missing IP address in probedef")             # <<<<<<<<<<<<<<
 *             elif addrs is not None and pd.dst is not None:
 *                 raise ValueError("unexpected IP address in probedef")
*/
      __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_1 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_missing_IP_address_in_probedef};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10190, __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_ERR(0, 10190, __pyx_L1_error)

      /* "scamper.pyx":10189
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
 *             if addrs is None and pd.dst is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("missing IP address in probedef")
 *             elif addrs is not None and pd.dst is not None:
*/
    }

    /* "scamper.pyx":10191
 *             if addrs is None and pd.dst is None:
 *                 raise ValueError("missing IP address in probedef")
 *             elif addrs is not None and pd.dst is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("unexpected IP address in probedef")
 *             args.append(f"-p '{pd}'")
*/
    __pyx_t_5 = (__pyx_v_addrs != Py_None);
    if (__pyx_t_5) {
    } else {
      __pyx_t_7 = __pyx_t_5;
      goto __pyx_L23_bool_binop_done;
    }
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pd, __pyx_mstate_global->__pyx_n_u_dst); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10191, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = (__pyx_t_3 != Py_None);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = __pyx_t_5;
    __pyx_L23_bool_binop_done:;
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10192
 *                 raise ValueError("missing IP address in probedef")
 *             elif addrs is not None and pd.dst is not None:
 *                 raise ValueError("unexpected IP address in probedef")             # <<<<<<<<<<<<<<
 *             args.append(f"-p '{pd}'")
 * 
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_unexpected_IP_address_in_probede};
        __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10192, __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_ERR(0, 10192, __pyx_L1_error)

      /* "scamper.pyx":10191
 *             if addrs is None and pd.dst is None:
 *                 raise ValueError("missing IP address in probedef")
 *             elif addrs is not None and pd.dst is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("unexpected IP address in probedef")
 *             args.append(f"-p '{pd}'")
*/
    }

    /* "scamper.pyx":10193
 *             elif addrs is not None and pd.dst is not None:
 *                 raise ValueError("unexpected IP address in probedef")
 *             args.append(f"-p '{pd}'")             # <<<<<<<<<<<<<<
 * 
 *         if addrs is not None:
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_pd, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_p_2;
    __pyx_t_9[1] = __pyx_t_3;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_kp_u__13;
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 4 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10193, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10193, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":10186
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 * 
 *         for pd in probedefs:             # <<<<<<<<<<<<<<
 *             if not isinstance(pd, ScamperDealiasProbedef):
 *                 raise ValueError("expected probedef in probedefs")
*/
  }
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

  /* "scamper.pyx":10195
 *             args.append(f"-p '{pd}'")
 * 
 *         if addrs is not None:             # <<<<<<<<<<<<<<
 *             for a in addrs:
 *                 args.append(f"{a}")
*/
  __pyx_t_7 = (__pyx_v_addrs != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":10196
 * 
 *         if addrs is not None:
 *             for a in addrs:             # <<<<<<<<<<<<<<
 *                 args.append(f"{a}")
 * 
*/
    if (likely(PyList_CheckExact(__pyx_v_addrs)) || PyTuple_CheckExact(__pyx_v_addrs)) {
      __pyx_t_6 = __pyx_v_addrs; __Pyx_INCREF(__pyx_t_6);
      __pyx_t_10 = 0;
      __pyx_t_11 = NULL;
    } else {
      __pyx_t_10 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_v_addrs); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10196, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 10196, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_11)) {
        if (likely(PyList_CheckExact(__pyx_t_6))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_6);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10196, __pyx_L1_error)
            #endif
            if (__pyx_t_10 >= __pyx_temp) break;
          }
          __pyx_t_8 = __Pyx_PyList_GetItemRef(__pyx_t_6, __pyx_t_10);
          ++__pyx_t_10;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_6);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10196, __pyx_L1_error)
            #endif
            if (__pyx_t_10 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_8 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_10));
          #else
          __pyx_t_8 = __Pyx_PySequence_ITEM(__pyx_t_6, __pyx_t_10);
          #endif
          ++__pyx_t_10;
        }
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10196, __pyx_L1_error)
      } else {
        __pyx_t_8 = __pyx_t_11(__pyx_t_6);
        if (unlikely(!__pyx_t_8)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 10196, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_XDECREF_SET(__pyx_v_a, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "scamper.pyx":10197
 *         if addrs is not None:
 *             for a in addrs:
 *                 args.append(f"{a}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
      __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_a, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10197, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10197, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

      /* "scamper.pyx":10196
 * 
 *         if addrs is not None:
 *             for a in addrs:             # <<<<<<<<<<<<<<
 *                 args.append(f"{a}")
 * 
*/
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "scamper.pyx":10195
 *             args.append(f"-p '{pd}'")
 * 
 *         if addrs is not None:             # <<<<<<<<<<<<<<
 *             for a in addrs:
 *                 args.append(f"{a}")
*/
  }

  /* "scamper.pyx":10199
 *                 args.append(f"{a}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_3, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10199, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
  }
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10116
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_radargun(self, addrs=None, rounds=None, probedefs=None,             # <<<<<<<<<<<<<<
 *                     wait_probe=None, wait_round=None, wait_timeout=None,
 *                     userid=None, inst=None, sync=False):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_radargun", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_pd);
  __Pyx_XDECREF(__pyx_v_a);
  __Pyx_XDECREF(__pyx_v_wait_probe);
  __Pyx_XDECREF(__pyx_v_wait_round);
  __Pyx_XDECREF(__pyx_v_wait_timeout);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10201
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,             # <<<<<<<<<<<<<<
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_59do_prefixscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_58do_prefixscan, "\n        do_prefixscan(near, far, prefixlen, fudge=None,                      icmp_sum=None, dport=None, sport=None, method=None,                      attempts=None, wait_probe=None, wait_timeout=None,                      userid=None, inst=None, sync=False)\n        find an alias on near that is within a subnet containing far.\n        This measurement requires two addresses defining a link to probe,\n        and the size of the prefix to search.\n        The other parameters are optional, and scamper will use its\n        built-in defaults if they are not provided.  If any\n        parameters conflict with other parameters (e.g., specifying a sport\n        or dport while also specifying icmp-echo method) then this method\n        will raise a :py:exc:`ValueError` exception.  If this method could\n        not queue the measurement, it will raise a :py:exc:`RuntimeError`\n        exception.\n\n        :param string near: the near hop in a traceroute\n        :param string far: the far hop in a traceroute, consecutive to near\n        :param int prefixlen: the size of the subnet to search\n        :param ScamperInst inst: The specific instance to issue command over\n        :param int attempts: The number of probes to use in this measurement\n        :param int dport: The TCP/UDP destination port to use in probes\n        :param int fudge: The maximum difference between IPID values to\n            still consider as possibly from the same counter\n        :param int icmp_sum: The ICMP checksum to use in probes\n        :param string method: The method to use when sending probes.\n            Choices: udp, udp-dport, tcp-ack, tcp-ack-sport, tcp-syn-sport,\n            and icmp-echo.\n        :param int sport: The TCP/UDP source port to use in probes\n        :param int userid: The userid value to tag with this measurement\n        :param timedelta wait_probe: The minimum length of time between probes\n        :param timedelta wait_timeout: The length of time to wait ""for a response\n            for a probe\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: a task object representing the prefixscan alias resolution\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_59do_prefixscan = {"do_prefixscan", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_59do_prefixscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_58do_prefixscan};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_59do_prefixscan(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_near = 0;
  PyObject *__pyx_v_far = 0;
  PyObject *__pyx_v_prefixlen = 0;
  PyObject *__pyx_v_fudge = 0;
  PyObject *__pyx_v_icmp_sum = 0;
  PyObject *__pyx_v_dport = 0;
  PyObject *__pyx_v_sport = 0;
  PyObject *__pyx_v_method = 0;
  CYTHON_UNUSED PyObject *__pyx_v_attempts = 0;
  PyObject *__pyx_v_wait_probe = 0;
  PyObject *__pyx_v_wait_timeout = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[14] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_prefixscan (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_near,&__pyx_mstate_global->__pyx_n_u_far,&__pyx_mstate_global->__pyx_n_u_prefixlen,&__pyx_mstate_global->__pyx_n_u_fudge,&__pyx_mstate_global->__pyx_n_u_icmp_sum,&__pyx_mstate_global->__pyx_n_u_dport,&__pyx_mstate_global->__pyx_n_u_sport,&__pyx_mstate_global->__pyx_n_u_method,&__pyx_mstate_global->__pyx_n_u_attempts,&__pyx_mstate_global->__pyx_n_u_wait_probe,&__pyx_mstate_global->__pyx_n_u_wait_timeout,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 10201, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case 14:
        values[13] = __Pyx_ArgRef_FASTCALL(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_prefixscan", 0) < 0) __PYX_ERR(0, 10201, __pyx_L3_error)
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10202
 * 
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,
 *                       icmp_sum=None, dport=None, sport=None, method=None,             # <<<<<<<<<<<<<<
 *                       attempts=None, wait_probe=None, wait_timeout=None,
 *                       userid=None, inst=None, sync=False):
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10203
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,             # <<<<<<<<<<<<<<
 *                       userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10204
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,
 *                       userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_prefixscan(near, far, prefixlen, fudge=None,\
*/
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_prefixscan", 0, 3, 14, i); __PYX_ERR(0, 10201, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case 14:
        values[13] = __Pyx_ArgRef_FASTCALL(__pyx_args, 13);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[13])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 13:
        values[12] = __Pyx_ArgRef_FASTCALL(__pyx_args, 12);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[12])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 12:
        values[11] = __Pyx_ArgRef_FASTCALL(__pyx_args, 11);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[11])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 11:
        values[10] = __Pyx_ArgRef_FASTCALL(__pyx_args, 10);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[10])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case 10:
        values[9] = __Pyx_ArgRef_FASTCALL(__pyx_args, 9);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[9])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10201, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10201, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10201, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10201, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":10201
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,             # <<<<<<<<<<<<<<
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10202
 * 
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,
 *                       icmp_sum=None, dport=None, sport=None, method=None,             # <<<<<<<<<<<<<<
 *                       attempts=None, wait_probe=None, wait_timeout=None,
 *                       userid=None, inst=None, sync=False):
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10203
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,             # <<<<<<<<<<<<<<
 *                       userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[9]) values[9] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[10]) values[10] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10204
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,
 *                       userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_prefixscan(near, far, prefixlen, fudge=None,\
*/
      if (!values[11]) values[11] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[12]) values[12] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[13]) values[13] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_near = values[0];
    __pyx_v_far = values[1];
    __pyx_v_prefixlen = values[2];
    __pyx_v_fudge = values[3];
    __pyx_v_icmp_sum = values[4];
    __pyx_v_dport = values[5];
    __pyx_v_sport = values[6];
    __pyx_v_method = values[7];
    __pyx_v_attempts = values[8];
    __pyx_v_wait_probe = values[9];
    __pyx_v_wait_timeout = values[10];
    __pyx_v_userid = values[11];
    __pyx_v_inst = values[12];
    __pyx_v_sync = values[13];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_prefixscan", 0, 3, 14, __pyx_nargs); __PYX_ERR(0, 10201, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_prefixscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_58do_prefixscan(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_near, __pyx_v_far, __pyx_v_prefixlen, __pyx_v_fudge, __pyx_v_icmp_sum, __pyx_v_dport, __pyx_v_sport, __pyx_v_method, __pyx_v_attempts, __pyx_v_wait_probe, __pyx_v_wait_timeout, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":10201
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,             # <<<<<<<<<<<<<<
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_7scamper_11ScamperCtrl_13do_prefixscan_2generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */

/* "scamper.pyx":10266
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_13do_prefixscan_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *)__pyx_tp_new_7scamper___pyx_scope_struct_13_genexpr(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 10266, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *) __pyx_self;
  __Pyx_INCREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  __Pyx_GIVEREF((PyObject *)__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_CoroutineObject *gen = __Pyx_Generator_New((__pyx_coroutine_body_t) __pyx_gb_7scamper_11ScamperCtrl_13do_prefixscan_2generator8, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[8]), (PyObject *) __pyx_cur_scope, __pyx_mstate_global->__pyx_n_u_genexpr, __pyx_mstate_global->__pyx_n_u_do_prefixscan_locals_genexpr, __pyx_mstate_global->__pyx_n_u_scamper); if (unlikely(!gen)) __PYX_ERR(0, 10266, __pyx_L1_error)
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_prefixscan.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_7scamper_11ScamperCtrl_13do_prefixscan_2generator8(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *__pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("genexpr", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) __PYX_ERR(0, 10266, __pyx_L1_error)
  __pyx_t_1 = __pyx_mstate_global->__pyx_tuple[0]; __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= 2) break;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    __pyx_t_3 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2));
    #else
    __pyx_t_3 = __Pyx_PySequence_ITEM(__pyx_t_1, __pyx_t_2);
    #endif
    ++__pyx_t_2;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_s);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_s, ((PyObject*)__pyx_t_3));
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_m)) { __Pyx_RaiseClosureNameError("m"); __PYX_ERR(0, 10266, __pyx_L1_error) }
    __pyx_t_4 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_m;
    __Pyx_INCREF(__pyx_t_4);
    __pyx_t_5 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_cur_scope->__pyx_v_s};
      __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10266, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 10266, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (__pyx_t_6) {
      __Pyx_XDECREF(__pyx_r);
      __Pyx_INCREF(Py_True);
      __pyx_r = Py_True;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      goto __pyx_L0;
    }
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  /*else*/ {
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;
  }
  CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  if (__Pyx_PyErr_Occurred()) {
    __Pyx_Generator_Replace_StopIteration(0);
    __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  }
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  #if !CYTHON_USE_EXC_INFO_STACK
  __Pyx_Coroutine_ResetAndClearException(__pyx_generator);
  #endif
  __pyx_generator->resume_label = -1;
  __Pyx_Coroutine_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10201
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,             # <<<<<<<<<<<<<<
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,
*/

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_58do_prefixscan(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_near, PyObject *__pyx_v_far, PyObject *__pyx_v_prefixlen, PyObject *__pyx_v_fudge, PyObject *__pyx_v_icmp_sum, PyObject *__pyx_v_dport, PyObject *__pyx_v_sport, PyObject *__pyx_v_method, CYTHON_UNUSED PyObject *__pyx_v_attempts, PyObject *__pyx_v_wait_probe, PyObject *__pyx_v_wait_timeout, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *__pyx_cur_scope;
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_v_pd = NULL;
  PyObject *__pyx_gb_7scamper_11ScamperCtrl_13do_prefixscan_2generator8 = 0;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[3];
  PyObject *__pyx_t_10[5];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_prefixscan", 0);
  __pyx_cur_scope = (struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *)__pyx_tp_new_7scamper___pyx_scope_struct_12_do_prefixscan(__pyx_mstate_global->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan, __pyx_mstate_global->__pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __pyx_cur_scope = ((struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *)Py_None);
    __Pyx_INCREF(Py_None);
    __PYX_ERR(0, 10201, __pyx_L1_error)
  } else {
    __Pyx_GOTREF((PyObject *)__pyx_cur_scope);
  }
  __Pyx_INCREF(__pyx_v_wait_probe);
  __Pyx_INCREF(__pyx_v_wait_timeout);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":10244
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("dealias -m prefixscan")
 *         inst = self._getinst(inst, "prefixscan", sync, listallowed=False)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10244, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10245
 * 
 *         args = []
 *         args.append("dealias -m prefixscan")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "prefixscan", sync, listallowed=False)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_dealias_m_prefixscan); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10245, __pyx_L1_error)

  /* "scamper.pyx":10246
 *         args = []
 *         args.append("dealias -m prefixscan")
 *         inst = self._getinst(inst, "prefixscan", sync, listallowed=False)             # <<<<<<<<<<<<<<
 * 
 *         if method is not None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_prefixscan, __pyx_v_sync};
    __pyx_t_5 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_listallowed, Py_False, __pyx_t_5, __pyx_callargs+4, 0) < 0) __PYX_ERR(0, 10246, __pyx_L1_error)
    __pyx_t_1 = __Pyx_Object_VectorcallMethod_CallFromBuilder(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_5);
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10246, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10248
 *         inst = self._getinst(inst, "prefixscan", sync, listallowed=False)
 * 
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             m = method.lower()
 *         else:
*/
  __pyx_t_6 = (__pyx_v_method != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10249
 * 
 *         if method is not None:
 *             m = method.lower()             # <<<<<<<<<<<<<<
 *         else:
 *             m = None
*/
    __pyx_t_5 = __pyx_v_method;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, NULL};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_lower, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10249, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_v_m = __pyx_t_1;
    __pyx_t_1 = 0;

    /* "scamper.pyx":10248
 *         inst = self._getinst(inst, "prefixscan", sync, listallowed=False)
 * 
 *         if method is not None:             # <<<<<<<<<<<<<<
 *             m = method.lower()
 *         else:
*/
    goto __pyx_L3;
  }

  /* "scamper.pyx":10251
 *             m = method.lower()
 *         else:
 *             m = None             # <<<<<<<<<<<<<<
 * 
 *         # if user specifies ICMP csum then ensure method is icmp
*/
  /*else*/ {
    __Pyx_INCREF(Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_cur_scope->__pyx_v_m = Py_None;
  }
  __pyx_L3:;

  /* "scamper.pyx":10254
 * 
 *         # if user specifies ICMP csum then ensure method is icmp
 *         if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 m = "icmp-echo"
*/
  __pyx_t_6 = (__pyx_v_icmp_sum != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10255
 *         # if user specifies ICMP csum then ensure method is icmp
 *         if icmp_sum is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):
*/
    __pyx_t_6 = (__pyx_cur_scope->__pyx_v_m == Py_None);
    if (__pyx_t_6) {

      /* "scamper.pyx":10256
 *         if icmp_sum is not None:
 *             if m is None:
 *                 m = "icmp-echo"             # <<<<<<<<<<<<<<
 *             elif not m.startswith("icmp"):
 *                 raise ValueError("do not specify icmp_sum with " + method)
*/
      __Pyx_INCREF(__pyx_mstate_global->__pyx_kp_u_icmp_echo);
      __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_m);
      __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_m, __pyx_mstate_global->__pyx_kp_u_icmp_echo);
      __Pyx_GIVEREF(__pyx_mstate_global->__pyx_kp_u_icmp_echo);

      /* "scamper.pyx":10255
 *         # if user specifies ICMP csum then ensure method is icmp
 *         if icmp_sum is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):
*/
      goto __pyx_L5;
    }

    /* "scamper.pyx":10257
 *             if m is None:
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):             # <<<<<<<<<<<<<<
 *                 raise ValueError("do not specify icmp_sum with " + method)
 *             if sport is not None or dport is not None:
*/
    __pyx_t_5 = __pyx_cur_scope->__pyx_v_m;
    __Pyx_INCREF(__pyx_t_5);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_mstate_global->__pyx_n_u_icmp};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_startswith, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10257, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 10257, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = (!__pyx_t_6);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10258
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):
 *                 raise ValueError("do not specify icmp_sum with " + method)             # <<<<<<<<<<<<<<
 *             if sport is not None or dport is not None:
 *                 raise ValueError("cannot specify source or destination port with " + method)
*/
      __pyx_t_5 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_3 = __pyx_builtin_ValueError; 
      __pyx_t_8 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_do_not_specify_icmp_sum_with, __pyx_v_method); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10258, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_8};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10258, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10258, __pyx_L1_error)

      /* "scamper.pyx":10257
 *             if m is None:
 *                 m = "icmp-echo"
 *             elif not m.startswith("icmp"):             # <<<<<<<<<<<<<<
 *                 raise ValueError("do not specify icmp_sum with " + method)
 *             if sport is not None or dport is not None:
*/
    }
    __pyx_L5:;

    /* "scamper.pyx":10259
 *             elif not m.startswith("icmp"):
 *                 raise ValueError("do not specify icmp_sum with " + method)
 *             if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination port with " + method)
 * 
*/
    __pyx_t_6 = (__pyx_v_sport != Py_None);
    if (!__pyx_t_6) {
    } else {
      __pyx_t_7 = __pyx_t_6;
      goto __pyx_L7_bool_binop_done;
    }
    __pyx_t_6 = (__pyx_v_dport != Py_None);
    __pyx_t_7 = __pyx_t_6;
    __pyx_L7_bool_binop_done:;
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10260
 *                 raise ValueError("do not specify icmp_sum with " + method)
 *             if sport is not None or dport is not None:
 *                 raise ValueError("cannot specify source or destination port with " + method)             # <<<<<<<<<<<<<<
 * 
 *         # if user specifies sport/dport then ensure method is tcp or udp
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_5 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_source_or_destina_2, __pyx_v_method); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10260, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_t_5};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10260, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10260, __pyx_L1_error)

      /* "scamper.pyx":10259
 *             elif not m.startswith("icmp"):
 *                 raise ValueError("do not specify icmp_sum with " + method)
 *             if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination port with " + method)
 * 
*/
    }

    /* "scamper.pyx":10254
 * 
 *         # if user specifies ICMP csum then ensure method is icmp
 *         if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 m = "icmp-echo"
*/
  }

  /* "scamper.pyx":10263
 * 
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
*/
  __pyx_t_6 = (__pyx_v_sport != Py_None);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_7 = __pyx_t_6;
    goto __pyx_L10_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_dport != Py_None);
  __pyx_t_7 = __pyx_t_6;
  __pyx_L10_bool_binop_done:;
  if (__pyx_t_7) {

    /* "scamper.pyx":10264
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
*/
    __pyx_t_7 = (__pyx_cur_scope->__pyx_v_m == Py_None);
    if (unlikely(__pyx_t_7)) {

      /* "scamper.pyx":10265
 *         if sport is not None or dport is not None:
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")             # <<<<<<<<<<<<<<
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
 *                 raise ValueError("cannot specify source or destination ports with " + method)
*/
      __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_5 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_specify_method_when_specifying_t};
        __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10265, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_1);
      }
      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __PYX_ERR(0, 10265, __pyx_L1_error)

      /* "scamper.pyx":10264
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:
 *             if m is None:             # <<<<<<<<<<<<<<
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
*/
    }

    /* "scamper.pyx":10266
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
    __pyx_t_1 = __pyx_pf_7scamper_11ScamperCtrl_13do_prefixscan_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = __Pyx_Generator_GetInlinedResult(__pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10266, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 10266, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = (!__pyx_t_7);
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":10267
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):
 *                 raise ValueError("cannot specify source or destination ports with " + method)             # <<<<<<<<<<<<<<
 * 
 *         # if user specifies fudge, validate it
*/
      __pyx_t_1 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_8 = __pyx_builtin_ValueError; 
      __pyx_t_3 = PyNumber_Add(__pyx_mstate_global->__pyx_kp_u_cannot_specify_source_or_destina, __pyx_v_method); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10267, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_t_3};
        __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_8, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10267, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_5);
      }
      __Pyx_Raise(__pyx_t_5, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __PYX_ERR(0, 10267, __pyx_L1_error)

      /* "scamper.pyx":10266
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
    }

    /* "scamper.pyx":10263
 * 
 *         # if user specifies sport/dport then ensure method is tcp or udp
 *         if sport is not None or dport is not None:             # <<<<<<<<<<<<<<
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
*/
  }

  /* "scamper.pyx":10270
 * 
 *         # if user specifies fudge, validate it
 *         if fudge is not None and (fudge < 0 or fudge > 65535):             # <<<<<<<<<<<<<<
 *             raise ValueError("fudge value must be between 0-65535")
 * 
*/
  __pyx_t_7 = (__pyx_v_fudge != Py_None);
  if (__pyx_t_7) {
  } else {
    __pyx_t_6 = __pyx_t_7;
    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_5 = PyObject_RichCompare(__pyx_v_fudge, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10270, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 10270, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (!__pyx_t_7) {
  } else {
    __pyx_t_6 = __pyx_t_7;
    goto __pyx_L14_bool_binop_done;
  }
  __pyx_t_5 = PyObject_RichCompare(__pyx_v_fudge, __pyx_mstate_global->__pyx_int_65535, Py_GT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10270, __pyx_L1_error)
  __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely((__pyx_t_7 < 0))) __PYX_ERR(0, 10270, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_6 = __pyx_t_7;
  __pyx_L14_bool_binop_done:;
  if (unlikely(__pyx_t_6)) {

    /* "scamper.pyx":10271
 *         # if user specifies fudge, validate it
 *         if fudge is not None and (fudge < 0 or fudge > 65535):
 *             raise ValueError("fudge value must be between 0-65535")             # <<<<<<<<<<<<<<
 * 
 *         # set probe method to udp by default
*/
    __pyx_t_8 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_3 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_fudge_value_must_be_between_0_65};
      __pyx_t_5 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10271, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __PYX_ERR(0, 10271, __pyx_L1_error)

    /* "scamper.pyx":10270
 * 
 *         # if user specifies fudge, validate it
 *         if fudge is not None and (fudge < 0 or fudge > 65535):             # <<<<<<<<<<<<<<
 *             raise ValueError("fudge value must be between 0-65535")
 * 
*/
  }

  /* "scamper.pyx":10274
 * 
 *         # set probe method to udp by default
 *         if m is None:             # <<<<<<<<<<<<<<
 *             m = "udp"
 * 
*/
  __pyx_t_6 = (__pyx_cur_scope->__pyx_v_m == Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10275
 *         # set probe method to udp by default
 *         if m is None:
 *             m = "udp"             # <<<<<<<<<<<<<<
 * 
 *         # if user specifies a method, then construct a probedef
*/
    __Pyx_INCREF(__pyx_mstate_global->__pyx_n_u_udp);
    __Pyx_GOTREF(__pyx_cur_scope->__pyx_v_m);
    __Pyx_DECREF_SET(__pyx_cur_scope->__pyx_v_m, __pyx_mstate_global->__pyx_n_u_udp);
    __Pyx_GIVEREF(__pyx_mstate_global->__pyx_n_u_udp);

    /* "scamper.pyx":10274
 * 
 *         # set probe method to udp by default
 *         if m is None:             # <<<<<<<<<<<<<<
 *             m = "udp"
 * 
*/
  }

  /* "scamper.pyx":10278
 * 
 *         # if user specifies a method, then construct a probedef
 *         if m is not None:             # <<<<<<<<<<<<<<
 *             pd = []
 *             pd.append(f"-p '-P {m}")
*/
  __pyx_t_6 = (__pyx_cur_scope->__pyx_v_m != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10279
 *         # if user specifies a method, then construct a probedef
 *         if m is not None:
 *             pd = []             # <<<<<<<<<<<<<<
 *             pd.append(f"-p '-P {m}")
 *             if sport is not None:
*/
    __pyx_t_5 = PyList_New(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10279, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_v_pd = ((PyObject*)__pyx_t_5);
    __pyx_t_5 = 0;

    /* "scamper.pyx":10280
 *         if m is not None:
 *             pd = []
 *             pd.append(f"-p '-P {m}")             # <<<<<<<<<<<<<<
 *             if sport is not None:
 *                 pd.append(f" -F {sport}")
*/
    __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_cur_scope->__pyx_v_m, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_p_P, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10280, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_pd, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10280, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":10281
 *             pd = []
 *             pd.append(f"-p '-P {m}")
 *             if sport is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -F {sport}")
 *             if dport is not None:
*/
    __pyx_t_6 = (__pyx_v_sport != Py_None);
    if (__pyx_t_6) {

      /* "scamper.pyx":10282
 *             pd.append(f"-p '-P {m}")
 *             if sport is not None:
 *                 pd.append(f" -F {sport}")             # <<<<<<<<<<<<<<
 *             if dport is not None:
 *                 pd.append(f" -d {dport}")
*/
      __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_sport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10282, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_F_2, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10282, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_pd, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10282, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "scamper.pyx":10281
 *             pd = []
 *             pd.append(f"-p '-P {m}")
 *             if sport is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -F {sport}")
 *             if dport is not None:
*/
    }

    /* "scamper.pyx":10283
 *             if sport is not None:
 *                 pd.append(f" -F {sport}")
 *             if dport is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -d {dport}")
 *             if icmp_sum is not None:
*/
    __pyx_t_6 = (__pyx_v_dport != Py_None);
    if (__pyx_t_6) {

      /* "scamper.pyx":10284
 *                 pd.append(f" -F {sport}")
 *             if dport is not None:
 *                 pd.append(f" -d {dport}")             # <<<<<<<<<<<<<<
 *             if icmp_sum is not None:
 *                 pd.append(f" -c {icmp_sum}")
*/
      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_dport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10284, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_d_3, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10284, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_pd, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10284, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "scamper.pyx":10283
 *             if sport is not None:
 *                 pd.append(f" -F {sport}")
 *             if dport is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -d {dport}")
 *             if icmp_sum is not None:
*/
    }

    /* "scamper.pyx":10285
 *             if dport is not None:
 *                 pd.append(f" -d {dport}")
 *             if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -c {icmp_sum}")
 *             pd.append("'")
*/
    __pyx_t_6 = (__pyx_v_icmp_sum != Py_None);
    if (__pyx_t_6) {

      /* "scamper.pyx":10286
 *                 pd.append(f" -d {dport}")
 *             if icmp_sum is not None:
 *                 pd.append(f" -c {icmp_sum}")             # <<<<<<<<<<<<<<
 *             pd.append("'")
 *             args.append(''.join(pd))
*/
      __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_icmp_sum, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_c_3, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10286, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_pd, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10286, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

      /* "scamper.pyx":10285
 *             if dport is not None:
 *                 pd.append(f" -d {dport}")
 *             if icmp_sum is not None:             # <<<<<<<<<<<<<<
 *                 pd.append(f" -c {icmp_sum}")
 *             pd.append("'")
*/
    }

    /* "scamper.pyx":10287
 *             if icmp_sum is not None:
 *                 pd.append(f" -c {icmp_sum}")
 *             pd.append("'")             # <<<<<<<<<<<<<<
 *             args.append(''.join(pd))
 * 
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_pd, __pyx_mstate_global->__pyx_kp_u__13); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10287, __pyx_L1_error)

    /* "scamper.pyx":10288
 *                 pd.append(f" -c {icmp_sum}")
 *             pd.append("'")
 *             args.append(''.join(pd))             # <<<<<<<<<<<<<<
 * 
 *         # other parameters to the dealias method
*/
    __pyx_t_5 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__4, __pyx_v_pd); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10288, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10288, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":10278
 * 
 *         # if user specifies a method, then construct a probedef
 *         if m is not None:             # <<<<<<<<<<<<<<
 *             pd = []
 *             pd.append(f"-p '-P {m}")
*/
  }

  /* "scamper.pyx":10291
 * 
 *         # other parameters to the dealias method
 *         if fudge is not None:             # <<<<<<<<<<<<<<
 *             if fudge == 0:
 *                 args.append("-O inseq")
*/
  __pyx_t_6 = (__pyx_v_fudge != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10292
 *         # other parameters to the dealias method
 *         if fudge is not None:
 *             if fudge == 0:             # <<<<<<<<<<<<<<
 *                 args.append("-O inseq")
 *             else:
*/
    __pyx_t_6 = (__Pyx_PyLong_BoolEqObjC(__pyx_v_fudge, __pyx_mstate_global->__pyx_int_0, 0, 0)); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 10292, __pyx_L1_error)
    if (__pyx_t_6) {

      /* "scamper.pyx":10293
 *         if fudge is not None:
 *             if fudge == 0:
 *                 args.append("-O inseq")             # <<<<<<<<<<<<<<
 *             else:
 *                 args.append(f"-f {fudge}")
*/
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_O_inseq); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10293, __pyx_L1_error)

      /* "scamper.pyx":10292
 *         # other parameters to the dealias method
 *         if fudge is not None:
 *             if fudge == 0:             # <<<<<<<<<<<<<<
 *                 args.append("-O inseq")
 *             else:
*/
      goto __pyx_L23;
    }

    /* "scamper.pyx":10295
 *                 args.append("-O inseq")
 *             else:
 *                 args.append(f"-f {fudge}")             # <<<<<<<<<<<<<<
 *         if userid is not None:
 *             args.append(f"-U {userid}")
*/
    /*else*/ {
      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_fudge, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10295, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_f, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10295, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10295, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    }
    __pyx_L23:;

    /* "scamper.pyx":10291
 * 
 *         # other parameters to the dealias method
 *         if fudge is not None:             # <<<<<<<<<<<<<<
 *             if fudge == 0:
 *                 args.append("-O inseq")
*/
  }

  /* "scamper.pyx":10296
 *             else:
 *                 args.append(f"-f {fudge}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
*/
  __pyx_t_6 = (__pyx_v_userid != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10297
 *                 args.append(f"-f {fudge}")
 *         if userid is not None:
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10297, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10297, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":10296
 *             else:
 *                 args.append(f"-f {fudge}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
*/
  }

  /* "scamper.pyx":10298
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  __pyx_t_6 = (__pyx_v_wait_probe != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10299
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10299, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = PyObject_IsInstance(__pyx_v_wait_probe, __pyx_t_3); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 10299, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = (!__pyx_t_6);
    if (__pyx_t_7) {

      /* "scamper.pyx":10300
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)             # <<<<<<<<<<<<<<
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         if wait_timeout is not None:
*/
      __pyx_t_5 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10300, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10300, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_1))) {
        __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_1);
        assert(__pyx_t_5);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_5);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_1, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_5, NULL};
        __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10300, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_probe, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10300, __pyx_L1_error)
        __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_1, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10300, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_probe, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "scamper.pyx":10299
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:
 *             if not isinstance(wait_probe, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
*/
    }

    /* "scamper.pyx":10301
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_probe, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_W;
    __pyx_t_9[1] = __pyx_t_3;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10301, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10301, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":10298
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         if wait_probe is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_probe, datetime.timedelta):
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
*/
  }

  /* "scamper.pyx":10302
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  __pyx_t_7 = (__pyx_v_wait_timeout != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":10303
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10303, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_7 = PyObject_IsInstance(__pyx_v_wait_timeout, __pyx_t_3); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 10303, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = (!__pyx_t_7);
    if (__pyx_t_6) {

      /* "scamper.pyx":10304
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)             # <<<<<<<<<<<<<<
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 * 
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10304, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10304, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_5))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_5);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_5, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL};
        __pyx_t_8 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10304, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_wait_timeout, __pyx_t_8, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10304, __pyx_L1_error)
        __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_5, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_8);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10304, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_DECREF_SET(__pyx_v_wait_timeout, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "scamper.pyx":10303
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         if wait_timeout is not None:
 *             if not isinstance(wait_timeout, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
*/
    }

    /* "scamper.pyx":10305
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
 *             args.append(f"-w {wait_timeout.total_seconds()}s")             # <<<<<<<<<<<<<<
 * 
 *         args.append(f"{near} {far}/{prefixlen}")
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_wait_timeout, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_5 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_w_2;
    __pyx_t_9[1] = __pyx_t_3;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10305, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_5); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10305, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "scamper.pyx":10302
 *                 wait_probe = datetime.timedelta(seconds=wait_probe)
 *             args.append(f"-W {wait_probe.total_seconds()}s")
 *         if wait_timeout is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(wait_timeout, datetime.timedelta):
 *                 wait_timeout = datetime.timedelta(seconds=wait_timeout)
*/
  }

  /* "scamper.pyx":10307
 *             args.append(f"-w {wait_timeout.total_seconds()}s")
 * 
 *         args.append(f"{near} {far}/{prefixlen}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_near, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_far, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_prefixlen, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10[0] = __pyx_t_5;
  __pyx_t_10[1] = __pyx_mstate_global->__pyx_kp_u__3;
  __pyx_t_10[2] = __pyx_t_3;
  __pyx_t_10[3] = __pyx_mstate_global->__pyx_kp_u__19;
  __pyx_t_10[4] = __pyx_t_8;
  __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_10, 5, __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5) + 1 * 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8));
  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10307, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10307, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "scamper.pyx":10309
 *         args.append(f"{near} {far}/{prefixlen}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_sniff(self, src, icmp_id, limit_pkt_count=None, limit_time=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_8 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_8);
  __pyx_t_3 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10309, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_8, __pyx_t_3, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10309, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10201
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,             # <<<<<<<<<<<<<<
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_prefixscan", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_pd);
  __Pyx_XDECREF(__pyx_gb_7scamper_11ScamperCtrl_13do_prefixscan_2generator8);
  __Pyx_XDECREF(__pyx_v_wait_probe);
  __Pyx_XDECREF(__pyx_v_wait_timeout);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_DECREF((PyObject *)__pyx_cur_scope);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10311
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_sniff(self, src, icmp_id, limit_pkt_count=None, limit_time=None,             # <<<<<<<<<<<<<<
 *                  userid=None, inst=None, sync=False):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_61do_sniff(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_60do_sniff, "\n        do_sniff(src, icmp_id, limit_pkt_count=None, limit_time=None,                 userid=None, inst=None, sync=False)\n        capture packets matching a specific ICMP ID value on an interface\n        identified by a source IP address.\n\n        :param string src: The source address of the interface to listen on\n        :param int icmp_id: The ICMP ID value to match\n        :param ScamperInst inst: The specific instance to issue command over\n        :param int limit_pkt_count: The maximum number of packets to capture\n        :param timedelta limit_time: The maximum length of time to listen\n        :param int userid: The userid value to tag with this measurement\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: a task object representing the sniff capture\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_61do_sniff = {"do_sniff", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_61do_sniff, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_60do_sniff};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_61do_sniff(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_src = 0;
  PyObject *__pyx_v_icmp_id = 0;
  PyObject *__pyx_v_limit_pkt_count = 0;
  PyObject *__pyx_v_limit_time = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[7] = {0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_sniff (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_src,&__pyx_mstate_global->__pyx_n_u_icmp_id,&__pyx_mstate_global->__pyx_n_u_limit_pkt_count,&__pyx_mstate_global->__pyx_n_u_limit_time,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 10311, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_sniff", 0) < 0) __PYX_ERR(0, 10311, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10312
 * 
 *     def do_sniff(self, src, icmp_id, limit_pkt_count=None, limit_time=None,
 *                  userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_sniff(src, icmp_id, limit_pkt_count=None, limit_time=None,\
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_sniff", 0, 2, 7, i); __PYX_ERR(0, 10311, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10311, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10311, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10311, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":10311
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_sniff(self, src, icmp_id, limit_pkt_count=None, limit_time=None,             # <<<<<<<<<<<<<<
 *                  userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10312
 * 
 *     def do_sniff(self, src, icmp_id, limit_pkt_count=None, limit_time=None,
 *                  userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_sniff(src, icmp_id, limit_pkt_count=None, limit_time=None,\
*/
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_src = values[0];
    __pyx_v_icmp_id = values[1];
    __pyx_v_limit_pkt_count = values[2];
    __pyx_v_limit_time = values[3];
    __pyx_v_userid = values[4];
    __pyx_v_inst = values[5];
    __pyx_v_sync = values[6];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_sniff", 0, 2, 7, __pyx_nargs); __PYX_ERR(0, 10311, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_sniff", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_60do_sniff(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_src, __pyx_v_icmp_id, __pyx_v_limit_pkt_count, __pyx_v_limit_time, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":10311
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_sniff(self, src, icmp_id, limit_pkt_count=None, limit_time=None,             # <<<<<<<<<<<<<<
 *                  userid=None, inst=None, sync=False):
 *         """
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_60do_sniff(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_src, PyObject *__pyx_v_icmp_id, PyObject *__pyx_v_limit_pkt_count, PyObject *__pyx_v_limit_time, PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  size_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[3];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_sniff", 0);
  __Pyx_INCREF(__pyx_v_limit_time);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":10331
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append(f"sniff -S {src}")
 *         inst = self._getinst(inst, "sniff", sync)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10332
 * 
 *         args = []
 *         args.append(f"sniff -S {src}")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "sniff", sync)
 * 
*/
  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_src, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_sniff_S, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10332, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 10332, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":10333
 *         args = []
 *         args.append(f"sniff -S {src}")
 *         inst = self._getinst(inst, "sniff", sync)             # <<<<<<<<<<<<<<
 * 
 *         if icmp_id < 0 or icmp_id > 65535:
*/
  __pyx_t_1 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_sniff, __pyx_v_sync};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10333, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":10335
 *         inst = self._getinst(inst, "sniff", sync)
 * 
 *         if icmp_id < 0 or icmp_id > 65535:             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid ICMP ID")
 * 
*/
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_icmp_id, __pyx_mstate_global->__pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10335, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 10335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_2 = PyObject_RichCompare(__pyx_v_icmp_id, __pyx_mstate_global->__pyx_int_65535, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10335, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 10335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_5)) {

    /* "scamper.pyx":10336
 * 
 *         if icmp_id < 0 or icmp_id > 65535:
 *             raise ValueError("invalid ICMP ID")             # <<<<<<<<<<<<<<
 * 
 *         if limit_pkt_count is not None:
*/
    __pyx_t_1 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_7 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_invalid_ICMP_ID};
      __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10336, __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_ERR(0, 10336, __pyx_L1_error)

    /* "scamper.pyx":10335
 *         inst = self._getinst(inst, "sniff", sync)
 * 
 *         if icmp_id < 0 or icmp_id > 65535:             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid ICMP ID")
 * 
*/
  }

  /* "scamper.pyx":10338
 *             raise ValueError("invalid ICMP ID")
 * 
 *         if limit_pkt_count is not None:             # <<<<<<<<<<<<<<
 *             if limit_pkt_count < 1:
 *                 raise ValueError("invalid limit_pkt_count")
*/
  __pyx_t_5 = (__pyx_v_limit_pkt_count != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10339
 * 
 *         if limit_pkt_count is not None:
 *             if limit_pkt_count < 1:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid limit_pkt_count")
 *             args.append(f"-c {limit_pkt_count}")
*/
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_limit_pkt_count, __pyx_mstate_global->__pyx_int_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10339, __pyx_L1_error)
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_5 < 0))) __PYX_ERR(0, 10339, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":10340
 *         if limit_pkt_count is not None:
 *             if limit_pkt_count < 1:
 *                 raise ValueError("invalid limit_pkt_count")             # <<<<<<<<<<<<<<
 *             args.append(f"-c {limit_pkt_count}")
 *         if limit_time is not None:
*/
      __pyx_t_7 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_1 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_mstate_global->__pyx_kp_u_invalid_limit_pkt_count};
        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10340, __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_ERR(0, 10340, __pyx_L1_error)

      /* "scamper.pyx":10339
 * 
 *         if limit_pkt_count is not None:
 *             if limit_pkt_count < 1:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid limit_pkt_count")
 *             args.append(f"-c {limit_pkt_count}")
*/
    }

    /* "scamper.pyx":10341
 *             if limit_pkt_count < 1:
 *                 raise ValueError("invalid limit_pkt_count")
 *             args.append(f"-c {limit_pkt_count}")             # <<<<<<<<<<<<<<
 *         if limit_time is not None:
 *             if not isinstance(limit_time, datetime.timedelta):
*/
    __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_limit_pkt_count, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_c_2, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10341, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 10341, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "scamper.pyx":10338
 *             raise ValueError("invalid ICMP ID")
 * 
 *         if limit_pkt_count is not None:             # <<<<<<<<<<<<<<
 *             if limit_pkt_count < 1:
 *                 raise ValueError("invalid limit_pkt_count")
*/
  }

  /* "scamper.pyx":10342
 *                 raise ValueError("invalid limit_pkt_count")
 *             args.append(f"-c {limit_pkt_count}")
 *         if limit_time is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(limit_time, datetime.timedelta):
 *                 limit_time = datetime.timedelta(seconds=limit_time)
*/
  __pyx_t_5 = (__pyx_v_limit_time != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10343
 *             args.append(f"-c {limit_pkt_count}")
 *         if limit_time is not None:
 *             if not isinstance(limit_time, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 limit_time = datetime.timedelta(seconds=limit_time)
 *             if int(limit_time.seconds) < 1:
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10343, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = PyObject_IsInstance(__pyx_v_limit_time, __pyx_t_2); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 10343, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_6 = (!__pyx_t_5);
    if (__pyx_t_6) {

      /* "scamper.pyx":10344
 *         if limit_time is not None:
 *             if not isinstance(limit_time, datetime.timedelta):
 *                 limit_time = datetime.timedelta(seconds=limit_time)             # <<<<<<<<<<<<<<
 *             if int(limit_time.seconds) < 1:
 *                 raise ValueError("invalid limit_time")
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10344, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10344, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL};
        __pyx_t_7 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10344, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_limit_time, __pyx_t_7, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10344, __pyx_L1_error)
        __pyx_t_2 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_8, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_7);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10344, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_2);
      }
      __Pyx_DECREF_SET(__pyx_v_limit_time, __pyx_t_2);
      __pyx_t_2 = 0;

      /* "scamper.pyx":10343
 *             args.append(f"-c {limit_pkt_count}")
 *         if limit_time is not None:
 *             if not isinstance(limit_time, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 limit_time = datetime.timedelta(seconds=limit_time)
 *             if int(limit_time.seconds) < 1:
*/
    }

    /* "scamper.pyx":10345
 *             if not isinstance(limit_time, datetime.timedelta):
 *                 limit_time = datetime.timedelta(seconds=limit_time)
 *             if int(limit_time.seconds) < 1:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid limit_time")
 *             args.append(f"-G {limit_time.total_seconds()}s")
*/
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_limit_time, __pyx_mstate_global->__pyx_n_u_seconds); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_8 = __Pyx_PyNumber_Int(__pyx_t_2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10345, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_8, __pyx_mstate_global->__pyx_int_1, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10345, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 10345, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (unlikely(__pyx_t_6)) {

      /* "scamper.pyx":10346
 *                 limit_time = datetime.timedelta(seconds=limit_time)
 *             if int(limit_time.seconds) < 1:
 *                 raise ValueError("invalid limit_time")             # <<<<<<<<<<<<<<
 *             args.append(f"-G {limit_time.total_seconds()}s")
 *         if userid is not None:
*/
      __pyx_t_8 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_7 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_8, __pyx_mstate_global->__pyx_kp_u_invalid_limit_time};
        __pyx_t_2 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10346, __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_ERR(0, 10346, __pyx_L1_error)

      /* "scamper.pyx":10345
 *             if not isinstance(limit_time, datetime.timedelta):
 *                 limit_time = datetime.timedelta(seconds=limit_time)
 *             if int(limit_time.seconds) < 1:             # <<<<<<<<<<<<<<
 *                 raise ValueError("invalid limit_time")
 *             args.append(f"-G {limit_time.total_seconds()}s")
*/
    }

    /* "scamper.pyx":10347
 *             if int(limit_time.seconds) < 1:
 *                 raise ValueError("invalid limit_time")
 *             args.append(f"-G {limit_time.total_seconds()}s")             # <<<<<<<<<<<<<<
 *         if userid is not None:
 *             args.append(f"-U {userid}")
*/
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_limit_time, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_t_7, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_G;
    __pyx_t_9[1] = __pyx_t_2;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_2));
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10347, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 10347, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":10342
 *                 raise ValueError("invalid limit_pkt_count")
 *             args.append(f"-c {limit_pkt_count}")
 *         if limit_time is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(limit_time, datetime.timedelta):
 *                 limit_time = datetime.timedelta(seconds=limit_time)
*/
  }

  /* "scamper.pyx":10348
 *                 raise ValueError("invalid limit_time")
 *             args.append(f"-G {limit_time.total_seconds()}s")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 * 
*/
  __pyx_t_6 = (__pyx_v_userid != Py_None);
  if (__pyx_t_6) {

    /* "scamper.pyx":10349
 *             args.append(f"-G {limit_time.total_seconds()}s")
 *         if userid is not None:
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 * 
 *         args.append(f"icmp[icmpid] == {icmp_id}")
*/
    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10349, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_2); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 10349, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "scamper.pyx":10348
 *                 raise ValueError("invalid limit_time")
 *             args.append(f"-G {limit_time.total_seconds()}s")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 * 
*/
  }

  /* "scamper.pyx":10351
 *             args.append(f"-U {userid}")
 * 
 *         args.append(f"icmp[icmpid] == {icmp_id}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_2 = __Pyx_PyObject_FormatSimple(__pyx_v_icmp_id, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_icmp_icmpid, __pyx_t_2); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10351, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 10351, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "scamper.pyx":10353
 *         args.append(f"icmp[icmpid] == {icmp_id}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_http(self, dst, url, headers=None, insecure=False, limit_time=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_8 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10353, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_2, __pyx_t_8, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_7 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10353, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
  }
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10311
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_sniff(self, src, icmp_id, limit_pkt_count=None, limit_time=None,             # <<<<<<<<<<<<<<
 *                  userid=None, inst=None, sync=False):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_sniff", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_limit_time);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10355
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_http(self, dst, url, headers=None, insecure=False, limit_time=None,             # <<<<<<<<<<<<<<
 *                 userid=None, inst=None, sync=False):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_63do_http(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_62do_http, "\n        do_http(dst, url, headers=None, insecure=False, limit_time=None,                userid=None, inst=None, sync=False)\n        conduct a HTTP request of the URL with the specified\n        destination.  If this method could not queue the measurement,\n        it will raise a :py:exc:`RuntimeError` exception.\n\n        :param string dst: the destination IP address to connect to\n        :param string url: the URL to use for this HTTP request\n        :param dict headers: a dictionary of headers to include in the request\n        :param bool insecure: do not do TLS validation on certificate\n        :param timedelta limit_time: the maximum time for this measurement to run\n        :param int userid: the userid value to tag with this measurement\n        :param ScamperInst inst: The specific instance to issue command over\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: a task object representing the HTTP request\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_63do_http = {"do_http", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_63do_http, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_62do_http};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_63do_http(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dst = 0;
  PyObject *__pyx_v_url = 0;
  PyObject *__pyx_v_headers = 0;
  PyObject *__pyx_v_insecure = 0;
  PyObject *__pyx_v_limit_time = 0;
  CYTHON_UNUSED PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[8] = {0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_http (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dst,&__pyx_mstate_global->__pyx_n_u_url,&__pyx_mstate_global->__pyx_n_u_headers,&__pyx_mstate_global->__pyx_n_u_insecure,&__pyx_mstate_global->__pyx_n_u_limit_time,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 10355, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_http", 0) < 0) __PYX_ERR(0, 10355, __pyx_L3_error)
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10356
 * 
 *     def do_http(self, dst, url, headers=None, insecure=False, limit_time=None,
 *                 userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_http(dst, url, headers=None, insecure=False, limit_time=None,\
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 2; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_http", 0, 2, 8, i); __PYX_ERR(0, 10355, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10355, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10355, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10355, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":10355
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_http(self, dst, url, headers=None, insecure=False, limit_time=None,             # <<<<<<<<<<<<<<
 *                 userid=None, inst=None, sync=False):
 *         """
*/
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_False));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10356
 * 
 *     def do_http(self, dst, url, headers=None, insecure=False, limit_time=None,
 *                 userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_http(dst, url, headers=None, insecure=False, limit_time=None,\
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_dst = values[0];
    __pyx_v_url = values[1];
    __pyx_v_headers = values[2];
    __pyx_v_insecure = values[3];
    __pyx_v_limit_time = values[4];
    __pyx_v_userid = values[5];
    __pyx_v_inst = values[6];
    __pyx_v_sync = values[7];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_http", 0, 2, 8, __pyx_nargs); __PYX_ERR(0, 10355, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_http", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_62do_http(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_dst, __pyx_v_url, __pyx_v_headers, __pyx_v_insecure, __pyx_v_limit_time, __pyx_v_userid, __pyx_v_inst, __pyx_v_sync);

  /* "scamper.pyx":10355
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_http(self, dst, url, headers=None, insecure=False, limit_time=None,             # <<<<<<<<<<<<<<
 *                 userid=None, inst=None, sync=False):
 *         """
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_62do_http(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_url, PyObject *__pyx_v_headers, PyObject *__pyx_v_insecure, PyObject *__pyx_v_limit_time, CYTHON_UNUSED PyObject *__pyx_v_userid, PyObject *__pyx_v_inst, PyObject *__pyx_v_sync) {
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_v_fname = NULL;
  PyObject *__pyx_v_fbody = NULL;
  PyObject *__pyx_v_esc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_t_7;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9[3];
  Py_ssize_t __pyx_t_10;
  PyObject *(*__pyx_t_11)(PyObject *);
  int __pyx_t_12;
  PyObject *__pyx_t_13[5];
  PyObject *__pyx_t_14[4];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_http", 0);
  __Pyx_INCREF(__pyx_v_limit_time);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":10377
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("http")
 *         inst = self._getinst(inst, "http", sync)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10378
 * 
 *         args = []
 *         args.append("http")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "http", sync)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_n_u_http); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10378, __pyx_L1_error)

  /* "scamper.pyx":10379
 *         args = []
 *         args.append("http")
 *         inst = self._getinst(inst, "http", sync)             # <<<<<<<<<<<<<<
 * 
 *         if dst is None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_http, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10379, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10381
 *         inst = self._getinst(inst, "http", sync)
 * 
 *         if dst is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid dst")
 *         if url is None:
*/
  __pyx_t_5 = (__pyx_v_dst == Py_None);
  if (unlikely(__pyx_t_5)) {

    /* "scamper.pyx":10382
 * 
 *         if dst is None:
 *             raise ValueError("invalid dst")             # <<<<<<<<<<<<<<
 *         if url is None:
 *             raise ValueError("invalid url")
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_6 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_invalid_dst};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10382, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 10382, __pyx_L1_error)

    /* "scamper.pyx":10381
 *         inst = self._getinst(inst, "http", sync)
 * 
 *         if dst is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid dst")
 *         if url is None:
*/
  }

  /* "scamper.pyx":10383
 *         if dst is None:
 *             raise ValueError("invalid dst")
 *         if url is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid url")
 * 
*/
  __pyx_t_5 = (__pyx_v_url == Py_None);
  if (unlikely(__pyx_t_5)) {

    /* "scamper.pyx":10384
 *             raise ValueError("invalid dst")
 *         if url is None:
 *             raise ValueError("invalid url")             # <<<<<<<<<<<<<<
 * 
 *         if insecure is True:
*/
    __pyx_t_6 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_3 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_kp_u_invalid_url};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10384, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 10384, __pyx_L1_error)

    /* "scamper.pyx":10383
 *         if dst is None:
 *             raise ValueError("invalid dst")
 *         if url is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("invalid url")
 * 
*/
  }

  /* "scamper.pyx":10386
 *             raise ValueError("invalid url")
 * 
 *         if insecure is True:             # <<<<<<<<<<<<<<
 *             args.append("-O insecure")
 * 
*/
  __pyx_t_5 = (__pyx_v_insecure == Py_True);
  if (__pyx_t_5) {

    /* "scamper.pyx":10387
 * 
 *         if insecure is True:
 *             args.append("-O insecure")             # <<<<<<<<<<<<<<
 * 
 *         if limit_time is not None:
*/
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_kp_u_O_insecure); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10387, __pyx_L1_error)

    /* "scamper.pyx":10386
 *             raise ValueError("invalid url")
 * 
 *         if insecure is True:             # <<<<<<<<<<<<<<
 *             args.append("-O insecure")
 * 
*/
  }

  /* "scamper.pyx":10389
 *             args.append("-O insecure")
 * 
 *         if limit_time is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(limit_time, datetime.timedelta):
 *                 limit_time = datetime.timedelta(seconds=limit_time)
*/
  __pyx_t_5 = (__pyx_v_limit_time != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10390
 * 
 *         if limit_time is not None:
 *             if not isinstance(limit_time, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 limit_time = datetime.timedelta(seconds=limit_time)
 *             args.append(f"-m {limit_time.total_seconds()}s")
*/
    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10390, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_5 = PyObject_IsInstance(__pyx_v_limit_time, __pyx_t_3); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 10390, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_7 = (!__pyx_t_5);
    if (__pyx_t_7) {

      /* "scamper.pyx":10391
 *         if limit_time is not None:
 *             if not isinstance(limit_time, datetime.timedelta):
 *                 limit_time = datetime.timedelta(seconds=limit_time)             # <<<<<<<<<<<<<<
 *             args.append(f"-m {limit_time.total_seconds()}s")
 * 
*/
      __pyx_t_1 = NULL;
      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_datetime); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10391, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_timedelta); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10391, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_4 = 1;
      #if CYTHON_UNPACK_METHODS
      if (unlikely(PyMethod_Check(__pyx_t_8))) {
        __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_8);
        assert(__pyx_t_1);
        PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx__function);
        __Pyx_DECREF_SET(__pyx_t_8, __pyx__function);
        __pyx_t_4 = 0;
      }
      #endif
      {
        PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_1, NULL};
        __pyx_t_6 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_seconds, __pyx_v_limit_time, __pyx_t_6, __pyx_callargs+1, 0) < 0) __PYX_ERR(0, 10391, __pyx_L1_error)
        __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_8, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_6);
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10391, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __Pyx_DECREF_SET(__pyx_v_limit_time, __pyx_t_3);
      __pyx_t_3 = 0;

      /* "scamper.pyx":10390
 * 
 *         if limit_time is not None:
 *             if not isinstance(limit_time, datetime.timedelta):             # <<<<<<<<<<<<<<
 *                 limit_time = datetime.timedelta(seconds=limit_time)
 *             args.append(f"-m {limit_time.total_seconds()}s")
*/
    }

    /* "scamper.pyx":10392
 *             if not isinstance(limit_time, datetime.timedelta):
 *                 limit_time = datetime.timedelta(seconds=limit_time)
 *             args.append(f"-m {limit_time.total_seconds()}s")             # <<<<<<<<<<<<<<
 * 
 *         if headers is not None:
*/
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_limit_time, __pyx_mstate_global->__pyx_n_u_total_seconds); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_8 = __Pyx_PyObject_CallNoArg(__pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_t_8, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_9[0] = __pyx_mstate_global->__pyx_kp_u_m;
    __pyx_t_9[1] = __pyx_t_3;
    __pyx_t_9[2] = __pyx_mstate_global->__pyx_n_u_s_2;
    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_9, 3, 3 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10392, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10392, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":10389
 *             args.append("-O insecure")
 * 
 *         if limit_time is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(limit_time, datetime.timedelta):
 *                 limit_time = datetime.timedelta(seconds=limit_time)
*/
  }

  /* "scamper.pyx":10394
 *             args.append(f"-m {limit_time.total_seconds()}s")
 * 
 *         if headers is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(headers, dict):
 *                 raise ValueError("headers not dictionary")
*/
  __pyx_t_7 = (__pyx_v_headers != Py_None);
  if (__pyx_t_7) {

    /* "scamper.pyx":10395
 * 
 *         if headers is not None:
 *             if not isinstance(headers, dict):             # <<<<<<<<<<<<<<
 *                 raise ValueError("headers not dictionary")
 *             for fname in headers:
*/
    __pyx_t_7 = PyDict_Check(__pyx_v_headers); 
    __pyx_t_5 = (!__pyx_t_7);
    if (unlikely(__pyx_t_5)) {

      /* "scamper.pyx":10396
 *         if headers is not None:
 *             if not isinstance(headers, dict):
 *                 raise ValueError("headers not dictionary")             # <<<<<<<<<<<<<<
 *             for fname in headers:
 *                 if not isinstance(fname, str) or not fname.isascii():
*/
      __pyx_t_3 = NULL;
      __Pyx_INCREF(__pyx_builtin_ValueError);
      __pyx_t_6 = __pyx_builtin_ValueError; 
      __pyx_t_4 = 1;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_headers_not_dictionary};
        __pyx_t_8 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10396, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_8);
      }
      __Pyx_Raise(__pyx_t_8, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __PYX_ERR(0, 10396, __pyx_L1_error)

      /* "scamper.pyx":10395
 * 
 *         if headers is not None:
 *             if not isinstance(headers, dict):             # <<<<<<<<<<<<<<
 *                 raise ValueError("headers not dictionary")
 *             for fname in headers:
*/
    }

    /* "scamper.pyx":10397
 *             if not isinstance(headers, dict):
 *                 raise ValueError("headers not dictionary")
 *             for fname in headers:             # <<<<<<<<<<<<<<
 *                 if not isinstance(fname, str) or not fname.isascii():
 *                     raise ValueError("header field-name is not ascii")
*/
    if (likely(PyList_CheckExact(__pyx_v_headers)) || PyTuple_CheckExact(__pyx_v_headers)) {
      __pyx_t_8 = __pyx_v_headers; __Pyx_INCREF(__pyx_t_8);
      __pyx_t_10 = 0;
      __pyx_t_11 = NULL;
    } else {
      __pyx_t_10 = -1; __pyx_t_8 = PyObject_GetIter(__pyx_v_headers); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10397, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_11 = (CYTHON_COMPILING_IN_LIMITED_API) ? PyIter_Next : __Pyx_PyObject_GetIterNextFunc(__pyx_t_8); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 10397, __pyx_L1_error)
    }
    for (;;) {
      if (likely(!__pyx_t_11)) {
        if (likely(PyList_CheckExact(__pyx_t_8))) {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyList_GET_SIZE(__pyx_t_8);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10397, __pyx_L1_error)
            #endif
            if (__pyx_t_10 >= __pyx_temp) break;
          }
          __pyx_t_6 = __Pyx_PyList_GetItemRef(__pyx_t_8, __pyx_t_10);
          ++__pyx_t_10;
        } else {
          {
            Py_ssize_t __pyx_temp = __Pyx_PyTuple_GET_SIZE(__pyx_t_8);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely((__pyx_temp < 0))) __PYX_ERR(0, 10397, __pyx_L1_error)
            #endif
            if (__pyx_t_10 >= __pyx_temp) break;
          }
          #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
          __pyx_t_6 = __Pyx_NewRef(PyTuple_GET_ITEM(__pyx_t_8, __pyx_t_10));
          #else
          __pyx_t_6 = __Pyx_PySequence_ITEM(__pyx_t_8, __pyx_t_10);
          #endif
          ++__pyx_t_10;
        }
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10397, __pyx_L1_error)
      } else {
        __pyx_t_6 = __pyx_t_11(__pyx_t_8);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (unlikely(!__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) __PYX_ERR(0, 10397, __pyx_L1_error)
            PyErr_Clear();
          }
          break;
        }
      }
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_fname, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "scamper.pyx":10398
 *                 raise ValueError("headers not dictionary")
 *             for fname in headers:
 *                 if not isinstance(fname, str) or not fname.isascii():             # <<<<<<<<<<<<<<
 *                     raise ValueError("header field-name is not ascii")
 *                 fbody = headers[fname]
*/
      __pyx_t_7 = PyUnicode_Check(__pyx_v_fname); 
      __pyx_t_12 = (!__pyx_t_7);
      if (!__pyx_t_12) {
      } else {
        __pyx_t_5 = __pyx_t_12;
        goto __pyx_L13_bool_binop_done;
      }
      __pyx_t_3 = __pyx_v_fname;
      __Pyx_INCREF(__pyx_t_3);
      __pyx_t_4 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
        __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_isascii, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10398, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 10398, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = (!__pyx_t_12);
      __pyx_t_5 = __pyx_t_7;
      __pyx_L13_bool_binop_done:;
      if (unlikely(__pyx_t_5)) {

        /* "scamper.pyx":10399
 *             for fname in headers:
 *                 if not isinstance(fname, str) or not fname.isascii():
 *                     raise ValueError("header field-name is not ascii")             # <<<<<<<<<<<<<<
 *                 fbody = headers[fname]
 *                 if not isinstance(fbody, str) or not fbody.isascii():
*/
        __pyx_t_3 = NULL;
        __Pyx_INCREF(__pyx_builtin_ValueError);
        __pyx_t_1 = __pyx_builtin_ValueError; 
        __pyx_t_4 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_header_field_name_is_not_ascii};
          __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_1, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10399, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(0, 10399, __pyx_L1_error)

        /* "scamper.pyx":10398
 *                 raise ValueError("headers not dictionary")
 *             for fname in headers:
 *                 if not isinstance(fname, str) or not fname.isascii():             # <<<<<<<<<<<<<<
 *                     raise ValueError("header field-name is not ascii")
 *                 fbody = headers[fname]
*/
      }

      /* "scamper.pyx":10400
 *                 if not isinstance(fname, str) or not fname.isascii():
 *                     raise ValueError("header field-name is not ascii")
 *                 fbody = headers[fname]             # <<<<<<<<<<<<<<
 *                 if not isinstance(fbody, str) or not fbody.isascii():
 *                     raise ValueError("header field-body is not ascii")
*/
      __pyx_t_6 = __Pyx_PyObject_GetItem(__pyx_v_headers, __pyx_v_fname); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10400, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_XDECREF_SET(__pyx_v_fbody, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "scamper.pyx":10401
 *                     raise ValueError("header field-name is not ascii")
 *                 fbody = headers[fname]
 *                 if not isinstance(fbody, str) or not fbody.isascii():             # <<<<<<<<<<<<<<
 *                     raise ValueError("header field-body is not ascii")
 *                 args.append(f"-H '{fname}: {fbody}'")
*/
      __pyx_t_7 = PyUnicode_Check(__pyx_v_fbody); 
      __pyx_t_12 = (!__pyx_t_7);
      if (!__pyx_t_12) {
      } else {
        __pyx_t_5 = __pyx_t_12;
        goto __pyx_L16_bool_binop_done;
      }
      __pyx_t_1 = __pyx_v_fbody;
      __Pyx_INCREF(__pyx_t_1);
      __pyx_t_4 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_1, NULL};
        __pyx_t_6 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_isascii, __pyx_callargs+__pyx_t_4, (1-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
        if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10401, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_6);
      }
      __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely((__pyx_t_12 < 0))) __PYX_ERR(0, 10401, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_7 = (!__pyx_t_12);
      __pyx_t_5 = __pyx_t_7;
      __pyx_L16_bool_binop_done:;
      if (unlikely(__pyx_t_5)) {

        /* "scamper.pyx":10402
 *                 fbody = headers[fname]
 *                 if not isinstance(fbody, str) or not fbody.isascii():
 *                     raise ValueError("header field-body is not ascii")             # <<<<<<<<<<<<<<
 *                 args.append(f"-H '{fname}: {fbody}'")
 * 
*/
        __pyx_t_1 = NULL;
        __Pyx_INCREF(__pyx_builtin_ValueError);
        __pyx_t_3 = __pyx_builtin_ValueError; 
        __pyx_t_4 = 1;
        {
          PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_kp_u_header_field_body_is_not_ascii};
          __pyx_t_6 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
          __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10402, __pyx_L1_error)
          __Pyx_GOTREF(__pyx_t_6);
        }
        __Pyx_Raise(__pyx_t_6, 0, 0, 0);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __PYX_ERR(0, 10402, __pyx_L1_error)

        /* "scamper.pyx":10401
 *                     raise ValueError("header field-name is not ascii")
 *                 fbody = headers[fname]
 *                 if not isinstance(fbody, str) or not fbody.isascii():             # <<<<<<<<<<<<<<
 *                     raise ValueError("header field-body is not ascii")
 *                 args.append(f"-H '{fname}: {fbody}'")
*/
      }

      /* "scamper.pyx":10403
 *                 if not isinstance(fbody, str) or not fbody.isascii():
 *                     raise ValueError("header field-body is not ascii")
 *                 args.append(f"-H '{fname}: {fbody}'")             # <<<<<<<<<<<<<<
 * 
 *         esc = str(url).replace("'", "\\'")
*/
      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_fname, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10403, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_fbody, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10403, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_13[0] = __pyx_mstate_global->__pyx_kp_u_H;
      __pyx_t_13[1] = __pyx_t_6;
      __pyx_t_13[2] = __pyx_mstate_global->__pyx_kp_u__18;
      __pyx_t_13[3] = __pyx_t_3;
      __pyx_t_13[4] = __pyx_mstate_global->__pyx_kp_u__13;
      __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_13, 5, 4 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3) + 1, 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3));
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10403, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_1); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10403, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "scamper.pyx":10397
 *             if not isinstance(headers, dict):
 *                 raise ValueError("headers not dictionary")
 *             for fname in headers:             # <<<<<<<<<<<<<<
 *                 if not isinstance(fname, str) or not fname.isascii():
 *                     raise ValueError("header field-name is not ascii")
*/
    }
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "scamper.pyx":10394
 *             args.append(f"-m {limit_time.total_seconds()}s")
 * 
 *         if headers is not None:             # <<<<<<<<<<<<<<
 *             if not isinstance(headers, dict):
 *                 raise ValueError("headers not dictionary")
*/
  }

  /* "scamper.pyx":10405
 *                 args.append(f"-H '{fname}: {fbody}'")
 * 
 *         esc = str(url).replace("'", "\\'")             # <<<<<<<<<<<<<<
 *         args.append(f"-u '{esc}' {dst}")
 * 
*/
  __pyx_t_8 = __Pyx_PyObject_Unicode(__pyx_v_url); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_1 = PyUnicode_Replace(((PyObject*)__pyx_t_8), __pyx_mstate_global->__pyx_kp_u__13, __pyx_mstate_global->__pyx_kp_u__21, -1L); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10405, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_v_esc = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10406
 * 
 *         esc = str(url).replace("'", "\\'")
 *         args.append(f"-u '{esc}' {dst}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_dst, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_14[0] = __pyx_mstate_global->__pyx_kp_u_u;
  __pyx_t_14[1] = __pyx_v_esc;
  __pyx_t_14[2] = __pyx_mstate_global->__pyx_kp_u__22;
  __pyx_t_14[3] = __pyx_t_1;
  __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_14, 4, 4 + __Pyx_PyUnicode_GET_LENGTH(__pyx_v_esc) + 2 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_esc) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1));
  if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10406, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_8); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10406, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

  /* "scamper.pyx":10408
 *         args.append(f"-u '{esc}' {dst}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_udpprobe(self, dst, dport, payload, attempts=None, src=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_3 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_1, __pyx_t_3, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_8 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10408, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
  }
  __pyx_r = __pyx_t_8;
  __pyx_t_8 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10355
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_http(self, dst, url, headers=None, insecure=False, limit_time=None,             # <<<<<<<<<<<<<<
 *                 userid=None, inst=None, sync=False):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_http", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_fname);
  __Pyx_XDECREF(__pyx_v_fbody);
  __Pyx_XDECREF(__pyx_v_esc);
  __Pyx_XDECREF(__pyx_v_limit_time);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10410
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_udpprobe(self, dst, dport, payload, attempts=None, src=None,             # <<<<<<<<<<<<<<
 *                     stop_count=None, inst=None, userid=None, sync=False):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_65do_udpprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_64do_udpprobe, "\n        do_udpprobe(dst, dport, payload, attempts=None, src=None,                    stop_count=None, inst=None, userid=None, sync=False)\n        conduct a UDP probe specified destination, port, and payload.\n        If this method could not queue the measurement,\n        it will raise a :py:exc:`RuntimeError` exception.\n\n        :param string dst: the destination address to send the probe to\n        :param int dport: the destination port to send the probe to\n        :param bytes payload: the payload to include in the probe\n        :param int attempts: the number of probes to send\n        :param string src: The source IP address to use in probes.\n        :param int stop_count: stop after receiving replies to this many probes\n        :param ScamperInst inst: The specific instance to issue command over\n        :param int userid: the userid value to tag with this measurement\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: an object representing the UDP probe task.\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_65do_udpprobe = {"do_udpprobe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_65do_udpprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_64do_udpprobe};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_65do_udpprobe(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dst = 0;
  PyObject *__pyx_v_dport = 0;
  PyObject *__pyx_v_payload = 0;
  PyObject *__pyx_v_attempts = 0;
  PyObject *__pyx_v_src = 0;
  PyObject *__pyx_v_stop_count = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[9] = {0,0,0,0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_udpprobe (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dst,&__pyx_mstate_global->__pyx_n_u_dport,&__pyx_mstate_global->__pyx_n_u_payload,&__pyx_mstate_global->__pyx_n_u_attempts,&__pyx_mstate_global->__pyx_n_u_src,&__pyx_mstate_global->__pyx_n_u_stop_count,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 10410, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_udpprobe", 0) < 0) __PYX_ERR(0, 10410, __pyx_L3_error)
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10411
 * 
 *     def do_udpprobe(self, dst, dport, payload, attempts=None, src=None,
 *                     stop_count=None, inst=None, userid=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_udpprobe(dst, dport, payload, attempts=None, src=None,\
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 3; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_udpprobe", 0, 3, 9, i); __PYX_ERR(0, 10410, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  9:
        values[8] = __Pyx_ArgRef_FASTCALL(__pyx_args, 8);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[8])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  8:
        values[7] = __Pyx_ArgRef_FASTCALL(__pyx_args, 7);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[7])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  7:
        values[6] = __Pyx_ArgRef_FASTCALL(__pyx_args, 6);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[6])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10410, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10410, __pyx_L3_error)
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10410, __pyx_L3_error)
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10410, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":10410
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_udpprobe(self, dst, dport, payload, attempts=None, src=None,             # <<<<<<<<<<<<<<
 *                     stop_count=None, inst=None, userid=None, sync=False):
 *         """
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10411
 * 
 *     def do_udpprobe(self, dst, dport, payload, attempts=None, src=None,
 *                     stop_count=None, inst=None, userid=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_udpprobe(dst, dport, payload, attempts=None, src=None,\
*/
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[6]) values[6] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[7]) values[7] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[8]) values[8] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_dst = values[0];
    __pyx_v_dport = values[1];
    __pyx_v_payload = values[2];
    __pyx_v_attempts = values[3];
    __pyx_v_src = values[4];
    __pyx_v_stop_count = values[5];
    __pyx_v_inst = values[6];
    __pyx_v_userid = values[7];
    __pyx_v_sync = values[8];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_udpprobe", 0, 3, 9, __pyx_nargs); __PYX_ERR(0, 10410, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_udpprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_64do_udpprobe(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_dst, __pyx_v_dport, __pyx_v_payload, __pyx_v_attempts, __pyx_v_src, __pyx_v_stop_count, __pyx_v_inst, __pyx_v_userid, __pyx_v_sync);

  /* "scamper.pyx":10410
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_udpprobe(self, dst, dport, payload, attempts=None, src=None,             # <<<<<<<<<<<<<<
 *                     stop_count=None, inst=None, userid=None, sync=False):
 *         """
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_64do_udpprobe(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_dport, PyObject *__pyx_v_payload, PyObject *__pyx_v_attempts, PyObject *__pyx_v_src, PyObject *__pyx_v_stop_count, PyObject *__pyx_v_inst, PyObject *__pyx_v_userid, PyObject *__pyx_v_sync) {
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_udpprobe", 0);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":10433
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("udpprobe")
 *         inst = self._getinst(inst, "udpprobe", sync)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10433, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10434
 * 
 *         args = []
 *         args.append("udpprobe")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "udpprobe", sync)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_n_u_udpprobe); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10434, __pyx_L1_error)

  /* "scamper.pyx":10435
 *         args = []
 *         args.append("udpprobe")
 *         inst = self._getinst(inst, "udpprobe", sync)             # <<<<<<<<<<<<<<
 * 
 *         if dst is None or dport is None or payload is None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_udpprobe, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10435, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10437
 *         inst = self._getinst(inst, "udpprobe", sync)
 * 
 *         if dst is None or dport is None or payload is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("must specify destination address, port, and payload")
 *         if dport < 1 or dport > 65535:
*/
  __pyx_t_6 = (__pyx_v_dst == Py_None);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_dport == Py_None);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_payload == Py_None);
  __pyx_t_5 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_5)) {

    /* "scamper.pyx":10438
 * 
 *         if dst is None or dport is None or payload is None:
 *             raise ValueError("must specify destination address, port, and payload")             # <<<<<<<<<<<<<<
 *         if dport < 1 or dport > 65535:
 *             raise ValueError(f"invalid destination port {dport}")
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_7 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_must_specify_destination_address};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10438, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 10438, __pyx_L1_error)

    /* "scamper.pyx":10437
 *         inst = self._getinst(inst, "udpprobe", sync)
 * 
 *         if dst is None or dport is None or payload is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("must specify destination address, port, and payload")
 *         if dport < 1 or dport > 65535:
*/
  }

  /* "scamper.pyx":10439
 *         if dst is None or dport is None or payload is None:
 *             raise ValueError("must specify destination address, port, and payload")
 *         if dport < 1 or dport > 65535:             # <<<<<<<<<<<<<<
 *             raise ValueError(f"invalid destination port {dport}")
 * 
*/
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_dport, __pyx_mstate_global->__pyx_int_1, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10439, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 10439, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L8_bool_binop_done;
  }
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_dport, __pyx_mstate_global->__pyx_int_65535, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10439, __pyx_L1_error)
  __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely((__pyx_t_6 < 0))) __PYX_ERR(0, 10439, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __pyx_t_6;
  __pyx_L8_bool_binop_done:;
  if (unlikely(__pyx_t_5)) {

    /* "scamper.pyx":10440
 *             raise ValueError("must specify destination address, port, and payload")
 *         if dport < 1 or dport > 65535:
 *             raise ValueError(f"invalid destination port {dport}")             # <<<<<<<<<<<<<<
 * 
 *         args.append(f"-d {dport}")
*/
    __pyx_t_7 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_3 = __pyx_builtin_ValueError; 
    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_dport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10440, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_invalid_destination_port, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10440, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_t_9};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10440, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 10440, __pyx_L1_error)

    /* "scamper.pyx":10439
 *         if dst is None or dport is None or payload is None:
 *             raise ValueError("must specify destination address, port, and payload")
 *         if dport < 1 or dport > 65535:             # <<<<<<<<<<<<<<
 *             raise ValueError(f"invalid destination port {dport}")
 * 
*/
  }

  /* "scamper.pyx":10442
 *             raise ValueError(f"invalid destination port {dport}")
 * 
 *         args.append(f"-d {dport}")             # <<<<<<<<<<<<<<
 *         args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")
 *         if attempts is not None:
*/
  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_dport, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_d_2, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10442, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10442, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10443
 * 
 *         args.append(f"-d {dport}")
 *         args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")             # <<<<<<<<<<<<<<
 *         if attempts is not None:
 *             args.append(f"-c {attempts}")
*/
  __pyx_t_7 = NULL;
  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_binascii); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 10443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_8);
  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_mstate_global->__pyx_n_u_hexlify); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_10);
  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  __pyx_t_4 = 1;
  #if CYTHON_UNPACK_METHODS
  if (unlikely(PyMethod_Check(__pyx_t_10))) {
    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_10);
    assert(__pyx_t_7);
    PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_10);
    __Pyx_INCREF(__pyx_t_7);
    __Pyx_INCREF(__pyx__function);
    __Pyx_DECREF_SET(__pyx_t_10, __pyx__function);
    __pyx_t_4 = 0;
  }
  #endif
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_7, __pyx_v_payload};
    __pyx_t_9 = __Pyx_PyObject_FastCall(__pyx_t_10, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
    if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
  }
  __pyx_t_1 = __pyx_t_9;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_1, __pyx_mstate_global->__pyx_n_u_ascii};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_decode, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10443, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_t_3, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_9);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_p, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10443, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10444
 *         args.append(f"-d {dport}")
 *         args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")
 *         if attempts is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-c {attempts}")
 *         if stop_count is not None:
*/
  __pyx_t_5 = (__pyx_v_attempts != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10445
 *         args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")
 *         if attempts is not None:
 *             args.append(f"-c {attempts}")             # <<<<<<<<<<<<<<
 *         if stop_count is not None:
 *             args.append(f"-o {stop_count}")
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_attempts, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_c_2, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10445, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10445, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":10444
 *         args.append(f"-d {dport}")
 *         args.append(f"-p {binascii.hexlify(payload).decode('ascii')}")
 *         if attempts is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-c {attempts}")
 *         if stop_count is not None:
*/
  }

  /* "scamper.pyx":10446
 *         if attempts is not None:
 *             args.append(f"-c {attempts}")
 *         if stop_count is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-o {stop_count}")
 *         if src is not None:
*/
  __pyx_t_5 = (__pyx_v_stop_count != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10447
 *             args.append(f"-c {attempts}")
 *         if stop_count is not None:
 *             args.append(f"-o {stop_count}")             # <<<<<<<<<<<<<<
 *         if src is not None:
 *             args.append(f"-S {src}")
*/
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_stop_count, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_o, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10447, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10447, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":10446
 *         if attempts is not None:
 *             args.append(f"-c {attempts}")
 *         if stop_count is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-o {stop_count}")
 *         if src is not None:
*/
  }

  /* "scamper.pyx":10448
 *         if stop_count is not None:
 *             args.append(f"-o {stop_count}")
 *         if src is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-S {src}")
 *         if userid is not None:
*/
  __pyx_t_5 = (__pyx_v_src != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10449
 *             args.append(f"-o {stop_count}")
 *         if src is not None:
 *             args.append(f"-S {src}")             # <<<<<<<<<<<<<<
 *         if userid is not None:
 *             args.append(f"-U {userid}")
*/
    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_src, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_9 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_S_2, __pyx_t_3); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10449, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_9); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10449, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;

    /* "scamper.pyx":10448
 *         if stop_count is not None:
 *             args.append(f"-o {stop_count}")
 *         if src is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-S {src}")
 *         if userid is not None:
*/
  }

  /* "scamper.pyx":10450
 *         if src is not None:
 *             args.append(f"-S {src}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         args.append(f"{dst}")
*/
  __pyx_t_5 = (__pyx_v_userid != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10451
 *             args.append(f"-S {src}")
 *         if userid is not None:
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 *         args.append(f"{dst}")
 * 
*/
    __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 10451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_3 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_9); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10451, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10451, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "scamper.pyx":10450
 *         if src is not None:
 *             args.append(f"-S {src}")
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 *         args.append(f"{dst}")
*/
  }

  /* "scamper.pyx":10452
 *         if userid is not None:
 *             args.append(f"-U {userid}")
 *         args.append(f"{dst}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_dst, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10452, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10454
 *         args.append(f"{dst}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def do_tbit(self, dst, method=None, url=None,
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_9 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_9);
  __pyx_t_1 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10454, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_9, __pyx_t_1, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10454, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10410
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_udpprobe(self, dst, dport, payload, attempts=None, src=None,             # <<<<<<<<<<<<<<
 *                     stop_count=None, inst=None, userid=None, sync=False):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_udpprobe", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10456
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tbit(self, dst, method=None, url=None,             # <<<<<<<<<<<<<<
 *                 inst=None, userid=None, sync=False):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_67do_tbit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_66do_tbit, "\n        do_tbit(dst, method=None, url=None,\n                inst=None, userid=None, sync=False)\n        conduct a TBIT test using the specified destination and method.\n        If this method could not queue the measurement,\n        it will raise a :py:exc:`RuntimeError` exception.\n\n        :param string dst: the destination address to measure\n        :param string method: the tbit test method to use\n        :param string url: a URL specifying an object to fetch as part of test\n        :param ScamperInst inst: The specific instance to issue command over\n        :param int userid: the userid value to tag with this measurement\n        :param bool sync: operate the measurement synchronously\n            (the method returns when the measurement completes).\n        :returns: an object representing the UDP probe task.\n        :rtype: ScamperTask\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_67do_tbit = {"do_tbit", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_67do_tbit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_66do_tbit};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_67do_tbit(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  PyObject *__pyx_v_dst = 0;
  PyObject *__pyx_v_method = 0;
  PyObject *__pyx_v_url = 0;
  PyObject *__pyx_v_inst = 0;
  PyObject *__pyx_v_userid = 0;
  PyObject *__pyx_v_sync = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[6] = {0,0,0,0,0,0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("do_tbit (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_dst,&__pyx_mstate_global->__pyx_n_u_method,&__pyx_mstate_global->__pyx_n_u_url,&__pyx_mstate_global->__pyx_n_u_inst,&__pyx_mstate_global->__pyx_n_u_userid,&__pyx_mstate_global->__pyx_n_u_sync,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(0, 10456, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "do_tbit", 0) < 0) __PYX_ERR(0, 10456, __pyx_L3_error)
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10457
 * 
 *     def do_tbit(self, dst, method=None, url=None,
 *                 inst=None, userid=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_tbit(dst, method=None, url=None,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_False));
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("do_tbit", 0, 1, 6, i); __PYX_ERR(0, 10456, __pyx_L3_error) }
      }
    } else {
      switch (__pyx_nargs) {
        case  6:
        values[5] = __Pyx_ArgRef_FASTCALL(__pyx_args, 5);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[5])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  5:
        values[4] = __Pyx_ArgRef_FASTCALL(__pyx_args, 4);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[4])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  4:
        values[3] = __Pyx_ArgRef_FASTCALL(__pyx_args, 3);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[3])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  3:
        values[2] = __Pyx_ArgRef_FASTCALL(__pyx_args, 2);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[2])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  2:
        values[1] = __Pyx_ArgRef_FASTCALL(__pyx_args, 1);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[1])) __PYX_ERR(0, 10456, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(0, 10456, __pyx_L3_error)
        break;
        default: goto __pyx_L5_argtuple_error;
      }

      /* "scamper.pyx":10456
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tbit(self, dst, method=None, url=None,             # <<<<<<<<<<<<<<
 *                 inst=None, userid=None, sync=False):
 *         """
*/
      if (!values[1]) values[1] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[2]) values[2] = __Pyx_NewRef(((PyObject *)Py_None));

      /* "scamper.pyx":10457
 * 
 *     def do_tbit(self, dst, method=None, url=None,
 *                 inst=None, userid=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_tbit(dst, method=None, url=None,
*/
      if (!values[3]) values[3] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[4]) values[4] = __Pyx_NewRef(((PyObject *)Py_None));
      if (!values[5]) values[5] = __Pyx_NewRef(((PyObject *)Py_False));
    }
    __pyx_v_dst = values[0];
    __pyx_v_method = values[1];
    __pyx_v_url = values[2];
    __pyx_v_inst = values[3];
    __pyx_v_userid = values[4];
    __pyx_v_sync = values[5];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("do_tbit", 0, 1, 6, __pyx_nargs); __PYX_ERR(0, 10456, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_tbit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_66do_tbit(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v_dst, __pyx_v_method, __pyx_v_url, __pyx_v_inst, __pyx_v_userid, __pyx_v_sync);

  /* "scamper.pyx":10456
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tbit(self, dst, method=None, url=None,             # <<<<<<<<<<<<<<
 *                 inst=None, userid=None, sync=False):
 *         """
*/

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_66do_tbit(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_dst, PyObject *__pyx_v_method, PyObject *__pyx_v_url, PyObject *__pyx_v_inst, PyObject *__pyx_v_userid, PyObject *__pyx_v_sync) {
  PyObject *__pyx_v_args = NULL;
  PyObject *__pyx_v_esc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8[6];
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("do_tbit", 0);
  __Pyx_INCREF(__pyx_v_inst);

  /* "scamper.pyx":10476
 *         """
 * 
 *         args = []             # <<<<<<<<<<<<<<
 *         args.append("tbit")
 *         inst = self._getinst(inst, "tbit", sync)
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10476, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_args = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10477
 * 
 *         args = []
 *         args.append("tbit")             # <<<<<<<<<<<<<<
 *         inst = self._getinst(inst, "tbit", sync)
 * 
*/
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_mstate_global->__pyx_n_u_tbit); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10477, __pyx_L1_error)

  /* "scamper.pyx":10478
 *         args = []
 *         args.append("tbit")
 *         inst = self._getinst(inst, "tbit", sync)             # <<<<<<<<<<<<<<
 * 
 *         if dst is None or method is None or url is None:
*/
  __pyx_t_3 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_3, __pyx_v_inst, __pyx_mstate_global->__pyx_n_u_tbit, __pyx_v_sync};
    __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_getinst, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10478, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_DECREF_SET(__pyx_v_inst, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10480
 *         inst = self._getinst(inst, "tbit", sync)
 * 
 *         if dst is None or method is None or url is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("must specify dst, method, and url")
 * 
*/
  __pyx_t_6 = (__pyx_v_dst == Py_None);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_method == Py_None);
  if (!__pyx_t_6) {
  } else {
    __pyx_t_5 = __pyx_t_6;
    goto __pyx_L4_bool_binop_done;
  }
  __pyx_t_6 = (__pyx_v_url == Py_None);
  __pyx_t_5 = __pyx_t_6;
  __pyx_L4_bool_binop_done:;
  if (unlikely(__pyx_t_5)) {

    /* "scamper.pyx":10481
 * 
 *         if dst is None or method is None or url is None:
 *             raise ValueError("must specify dst, method, and url")             # <<<<<<<<<<<<<<
 * 
 *         if userid is not None:
*/
    __pyx_t_3 = NULL;
    __Pyx_INCREF(__pyx_builtin_ValueError);
    __pyx_t_7 = __pyx_builtin_ValueError; 
    __pyx_t_4 = 1;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, __pyx_mstate_global->__pyx_kp_u_must_specify_dst_method_and_url};
      __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_7, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10481, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __PYX_ERR(0, 10481, __pyx_L1_error)

    /* "scamper.pyx":10480
 *         inst = self._getinst(inst, "tbit", sync)
 * 
 *         if dst is None or method is None or url is None:             # <<<<<<<<<<<<<<
 *             raise ValueError("must specify dst, method, and url")
 * 
*/
  }

  /* "scamper.pyx":10483
 *             raise ValueError("must specify dst, method, and url")
 * 
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 * 
*/
  __pyx_t_5 = (__pyx_v_userid != Py_None);
  if (__pyx_t_5) {

    /* "scamper.pyx":10484
 * 
 *         if userid is not None:
 *             args.append(f"-U {userid}")             # <<<<<<<<<<<<<<
 * 
 *         esc = str(url).replace("'", "\\'")
*/
    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_userid, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = __Pyx_PyUnicode_Concat(__pyx_mstate_global->__pyx_kp_u_U, __pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10484, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_7); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10484, __pyx_L1_error)
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "scamper.pyx":10483
 *             raise ValueError("must specify dst, method, and url")
 * 
 *         if userid is not None:             # <<<<<<<<<<<<<<
 *             args.append(f"-U {userid}")
 * 
*/
  }

  /* "scamper.pyx":10486
 *             args.append(f"-U {userid}")
 * 
 *         esc = str(url).replace("'", "\\'")             # <<<<<<<<<<<<<<
 *         args.append(f"-u '{esc}' -t {method} {dst}")
 * 
*/
  __pyx_t_7 = __Pyx_PyObject_Unicode(__pyx_v_url); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_1 = PyUnicode_Replace(((PyObject*)__pyx_t_7), __pyx_mstate_global->__pyx_kp_u__13, __pyx_mstate_global->__pyx_kp_u__21, -1L); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10486, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_v_esc = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10487
 * 
 *         esc = str(url).replace("'", "\\'")
 *         args.append(f"-u '{esc}' -t {method} {dst}")             # <<<<<<<<<<<<<<
 * 
 *         return self._dotasks(' '.join(args), inst, sync)
*/
  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_method, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_dst, __pyx_mstate_global->__pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 10487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_t_8[0] = __pyx_mstate_global->__pyx_kp_u_u;
  __pyx_t_8[1] = __pyx_v_esc;
  __pyx_t_8[2] = __pyx_mstate_global->__pyx_kp_u_t_2;
  __pyx_t_8[3] = __pyx_t_1;
  __pyx_t_8[4] = __pyx_mstate_global->__pyx_kp_u__3;
  __pyx_t_8[5] = __pyx_t_7;
  __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_8, 6, 4 + __Pyx_PyUnicode_GET_LENGTH(__pyx_v_esc) + 5 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1) + 1 + __Pyx_PyUnicode_GET_LENGTH(__pyx_t_7), 127 | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_v_esc) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) | __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_7));
  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10487, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  __pyx_t_2 = __Pyx_PyList_Append(__pyx_v_args, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 10487, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10489
 *         args.append(f"-u '{esc}' -t {method} {dst}")
 * 
 *         return self._dotasks(' '.join(args), inst, sync)             # <<<<<<<<<<<<<<
 * 
 *     def is_done(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = ((PyObject *)__pyx_v_self);
  __Pyx_INCREF(__pyx_t_7);
  __pyx_t_1 = PyUnicode_Join(__pyx_mstate_global->__pyx_kp_u__3, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10489, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = 0;
  {
    PyObject *__pyx_callargs[4] = {__pyx_t_7, __pyx_t_1, __pyx_v_inst, __pyx_v_sync};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_dotasks, __pyx_callargs+__pyx_t_4, (4-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10489, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10456
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tbit(self, dst, method=None, url=None,             # <<<<<<<<<<<<<<
 *                 inst=None, userid=None, sync=False):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("scamper.ScamperCtrl.do_tbit", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_args);
  __Pyx_XDECREF(__pyx_v_esc);
  __Pyx_XDECREF(__pyx_v_inst);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10491
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def is_done(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if all of the :class:`ScamperInst` have
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_69is_done(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperCtrl_68is_done, "\n        get method to determine if all of the :class:`ScamperInst` have\n        signalled that they are now finished\n\n        :returns: True if all done\n        :rtype: bool\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_69is_done = {"is_done", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_69is_done, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_68is_done};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_69is_done(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_done (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_done", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_done", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_68is_done(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_68is_done(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("is_done", 0);

  /* "scamper.pyx":10499
 *         :rtype: bool
 *         """
 *         if len(self._objs) > 0:             # <<<<<<<<<<<<<<
 *             return False
 *         return clibscamperctrl.scamper_ctrl_isdone(self._c)
*/
  __pyx_t_1 = __pyx_v_self->_objs;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10499, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 > 0);
  if (__pyx_t_3) {

    /* "scamper.pyx":10500
 *         """
 *         if len(self._objs) > 0:
 *             return False             # <<<<<<<<<<<<<<
 *         return clibscamperctrl.scamper_ctrl_isdone(self._c)
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_False);
    __pyx_r = Py_False;
    goto __pyx_L0;

    /* "scamper.pyx":10499
 *         :rtype: bool
 *         """
 *         if len(self._objs) > 0:             # <<<<<<<<<<<<<<
 *             return False
 *         return clibscamperctrl.scamper_ctrl_isdone(self._c)
*/
  }

  /* "scamper.pyx":10501
 *         if len(self._objs) > 0:
 *             return False
 *         return clibscamperctrl.scamper_ctrl_isdone(self._c)             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperMux:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(scamper_ctrl_isdone(__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10501, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10491
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def is_done(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if all of the :class:`ScamperInst` have
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperCtrl.is_done", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8891
 *     cdef clibscamperctrl.scamper_ctrl_t *_c
 *     cdef clibscamperctrl.scamper_task_t *_c_synctask
 *     cdef public object _morecb             # <<<<<<<<<<<<<<
 *     cdef public object _eofcb
 *     cdef public object _syncdata
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_7_morecb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_7_morecb_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_7_morecb___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_7_morecb___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_morecb);
  __pyx_r = __pyx_v_self->_morecb;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_7_morecb_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_7_morecb_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_7_morecb_2__set__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_7_morecb_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_morecb);
  __Pyx_DECREF(__pyx_v_self->_morecb);
  __pyx_v_self->_morecb = __pyx_v_value;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_7_morecb_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_7_morecb_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_7_morecb_4__del__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_7_morecb_4__del__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_morecb);
  __Pyx_DECREF(__pyx_v_self->_morecb);
  __pyx_v_self->_morecb = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8892
 *     cdef clibscamperctrl.scamper_task_t *_c_synctask
 *     cdef public object _morecb
 *     cdef public object _eofcb             # <<<<<<<<<<<<<<
 *     cdef public object _syncdata
 *     cdef public object _outfile
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_6_eofcb_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_6_eofcb_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_6_eofcb___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_6_eofcb___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_eofcb);
  __pyx_r = __pyx_v_self->_eofcb;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_6_eofcb_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_6_eofcb_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_6_eofcb_2__set__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_6_eofcb_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_eofcb);
  __Pyx_DECREF(__pyx_v_self->_eofcb);
  __pyx_v_self->_eofcb = __pyx_v_value;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_6_eofcb_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_6_eofcb_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_6_eofcb_4__del__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_6_eofcb_4__del__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_eofcb);
  __Pyx_DECREF(__pyx_v_self->_eofcb);
  __pyx_v_self->_eofcb = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8893
 *     cdef public object _morecb
 *     cdef public object _eofcb
 *     cdef public object _syncdata             # <<<<<<<<<<<<<<
 *     cdef public object _outfile
 *     cdef public object _param
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_9_syncdata_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_9_syncdata_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_9_syncdata___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_9_syncdata___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_syncdata);
  __pyx_r = __pyx_v_self->_syncdata;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_9_syncdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_9_syncdata_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_9_syncdata_2__set__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_9_syncdata_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_syncdata);
  __Pyx_DECREF(__pyx_v_self->_syncdata);
  __pyx_v_self->_syncdata = __pyx_v_value;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_9_syncdata_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_9_syncdata_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_9_syncdata_4__del__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_9_syncdata_4__del__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_syncdata);
  __Pyx_DECREF(__pyx_v_self->_syncdata);
  __pyx_v_self->_syncdata = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8894
 *     cdef public object _eofcb
 *     cdef public object _syncdata
 *     cdef public object _outfile             # <<<<<<<<<<<<<<
 *     cdef public object _param
 *     cdef bint _meta
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_8_outfile_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_8_outfile_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_8_outfile___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_8_outfile___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_outfile);
  __pyx_r = __pyx_v_self->_outfile;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_8_outfile_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_8_outfile_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_8_outfile_2__set__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_8_outfile_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_outfile);
  __Pyx_DECREF(__pyx_v_self->_outfile);
  __pyx_v_self->_outfile = __pyx_v_value;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_8_outfile_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_8_outfile_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_8_outfile_4__del__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_8_outfile_4__del__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_outfile);
  __Pyx_DECREF(__pyx_v_self->_outfile);
  __pyx_v_self->_outfile = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":8895
 *     cdef public object _syncdata
 *     cdef public object _outfile
 *     cdef public object _param             # <<<<<<<<<<<<<<
 *     cdef bint _meta
 * 
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_6_param_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_6_param_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_6_param___get__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_6_param___get__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_self->_param);
  __pyx_r = __pyx_v_self->_param;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_6_param_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_6_param_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_6_param_2__set__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_6_param_2__set__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__", 0);
  __Pyx_INCREF(__pyx_v_value);
  __Pyx_GIVEREF(__pyx_v_value);
  __Pyx_GOTREF(__pyx_v_self->_param);
  __Pyx_DECREF(__pyx_v_self->_param);
  __pyx_v_self->_param = __pyx_v_value;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperCtrl_6_param_5__del__(PyObject *__pyx_v_self); /*proto*/
static int __pyx_pw_7scamper_11ScamperCtrl_6_param_5__del__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_6_param_4__del__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperCtrl_6_param_4__del__(struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__del__", 0);
  __Pyx_INCREF(Py_None);
  __Pyx_GIVEREF(Py_None);
  __Pyx_GOTREF(__pyx_v_self->_param);
  __Pyx_DECREF(__pyx_v_self->_param);
  __pyx_v_self->_param = Py_None;

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_71__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_71__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_71__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_71__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_70__reduce_cython__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_70__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_self__c_synctask_cannot, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCtrl.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_73__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperCtrl_73__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_73__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperCtrl_73__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperCtrl.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperCtrl_72__setstate_cython__(((struct __pyx_obj_7scamper_ScamperCtrl *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperCtrl_72__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperCtrl *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_self__c_synctask_cannot, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperCtrl.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10508
 *     cdef clibscamperctrl.scamper_mux_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_10ScamperMux_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_10ScamperMux_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_10ScamperMux___init__(((struct __pyx_obj_7scamper_ScamperMux *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_10ScamperMux___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperMux *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":10509
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10509, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 10509, __pyx_L1_error)

  /* "scamper.pyx":10508
 *     cdef clibscamperctrl.scamper_mux_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperMux.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10511
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperMux from_ptr(clibscamperctrl.scamper_mux_t *ptr):
 *         cdef ScamperMux mux = ScamperMux.__new__(ScamperMux)
*/

static struct __pyx_obj_7scamper_ScamperMux *__pyx_f_7scamper_10ScamperMux_from_ptr(scamper_mux_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperMux *__pyx_v_mux = 0;
  struct __pyx_obj_7scamper_ScamperMux *__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("from_ptr", 0);

  /* "scamper.pyx":10513
 *     @staticmethod
 *     cdef ScamperMux from_ptr(clibscamperctrl.scamper_mux_t *ptr):
 *         cdef ScamperMux mux = ScamperMux.__new__(ScamperMux)             # <<<<<<<<<<<<<<
 *         mux._c = ptr
 *         return mux
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperMux(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperMux), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10513, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_mux = ((struct __pyx_obj_7scamper_ScamperMux *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10514
 *     cdef ScamperMux from_ptr(clibscamperctrl.scamper_mux_t *ptr):
 *         cdef ScamperMux mux = ScamperMux.__new__(ScamperMux)
 *         mux._c = ptr             # <<<<<<<<<<<<<<
 *         return mux
 * 
*/
  __pyx_v_mux->_c = __pyx_v_ptr;

  /* "scamper.pyx":10515
 *         cdef ScamperMux mux = ScamperMux.__new__(ScamperMux)
 *         mux._c = ptr
 *         return mux             # <<<<<<<<<<<<<<
 * 
 *     def vps(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_mux);
  __pyx_r = __pyx_v_mux;
  goto __pyx_L0;

  /* "scamper.pyx":10511
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperMux from_ptr(clibscamperctrl.scamper_mux_t *ptr):
 *         cdef ScamperMux mux = ScamperMux.__new__(ScamperMux)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperMux.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_mux);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10517
 *         return mux
 * 
 *     def vps(self):             # <<<<<<<<<<<<<<
 *         vps = []
 *         vpset = clibscamperctrl.scamper_vpset_get(self._c)
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_10ScamperMux_3vps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_10ScamperMux_3vps = {"vps", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_10ScamperMux_3vps, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_10ScamperMux_3vps(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("vps (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("vps", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("vps", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_10ScamperMux_2vps(((struct __pyx_obj_7scamper_ScamperMux *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_10ScamperMux_2vps(struct __pyx_obj_7scamper_ScamperMux *__pyx_v_self) {
  PyObject *__pyx_v_vps = NULL;
  scamper_vpset_t *__pyx_v_vpset;
  size_t __pyx_v_count;
  size_t __pyx_v_i;
  scamper_vp_t *__pyx_v_vp_c;
  struct __pyx_obj_7scamper_ScamperVp *__pyx_v_vp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  size_t __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("vps", 0);

  /* "scamper.pyx":10518
 * 
 *     def vps(self):
 *         vps = []             # <<<<<<<<<<<<<<
 *         vpset = clibscamperctrl.scamper_vpset_get(self._c)
 *         if vpset == NULL:
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vps = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10519
 *     def vps(self):
 *         vps = []
 *         vpset = clibscamperctrl.scamper_vpset_get(self._c)             # <<<<<<<<<<<<<<
 *         if vpset == NULL:
 *             return vps
*/
  __pyx_v_vpset = scamper_vpset_get(__pyx_v_self->_c);

  /* "scamper.pyx":10520
 *         vps = []
 *         vpset = clibscamperctrl.scamper_vpset_get(self._c)
 *         if vpset == NULL:             # <<<<<<<<<<<<<<
 *             return vps
 *         count = clibscamperctrl.scamper_vpset_vp_count(vpset)
*/
  __pyx_t_2 = (__pyx_v_vpset == NULL);
  if (__pyx_t_2) {

    /* "scamper.pyx":10521
 *         vpset = clibscamperctrl.scamper_vpset_get(self._c)
 *         if vpset == NULL:
 *             return vps             # <<<<<<<<<<<<<<
 *         count = clibscamperctrl.scamper_vpset_vp_count(vpset)
 *         for i in range(count):
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_vps);
    __pyx_r = __pyx_v_vps;
    goto __pyx_L0;

    /* "scamper.pyx":10520
 *         vps = []
 *         vpset = clibscamperctrl.scamper_vpset_get(self._c)
 *         if vpset == NULL:             # <<<<<<<<<<<<<<
 *             return vps
 *         count = clibscamperctrl.scamper_vpset_vp_count(vpset)
*/
  }

  /* "scamper.pyx":10522
 *         if vpset == NULL:
 *             return vps
 *         count = clibscamperctrl.scamper_vpset_vp_count(vpset)             # <<<<<<<<<<<<<<
 *         for i in range(count):
 *             vp_c = clibscamperctrl.scamper_vpset_vp_get(vpset, i)
*/
  __pyx_v_count = scamper_vpset_vp_count(__pyx_v_vpset);

  /* "scamper.pyx":10523
 *             return vps
 *         count = clibscamperctrl.scamper_vpset_vp_count(vpset)
 *         for i in range(count):             # <<<<<<<<<<<<<<
 *             vp_c = clibscamperctrl.scamper_vpset_vp_get(vpset, i)
 *             vp = ScamperVp.from_ptr(vp_c)
*/
  __pyx_t_3 = __pyx_v_count;
  __pyx_t_4 = __pyx_t_3;
  for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
    __pyx_v_i = __pyx_t_5;

    /* "scamper.pyx":10524
 *         count = clibscamperctrl.scamper_vpset_vp_count(vpset)
 *         for i in range(count):
 *             vp_c = clibscamperctrl.scamper_vpset_vp_get(vpset, i)             # <<<<<<<<<<<<<<
 *             vp = ScamperVp.from_ptr(vp_c)
 *             if vp is not None:
*/
    __pyx_v_vp_c = scamper_vpset_vp_get(__pyx_v_vpset, __pyx_v_i);

    /* "scamper.pyx":10525
 *         for i in range(count):
 *             vp_c = clibscamperctrl.scamper_vpset_vp_get(vpset, i)
 *             vp = ScamperVp.from_ptr(vp_c)             # <<<<<<<<<<<<<<
 *             if vp is not None:
 *                 vps.append(vp)
*/
    __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_9ScamperVp_from_ptr(__pyx_v_vp_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10525, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_XDECREF_SET(__pyx_v_vp, ((struct __pyx_obj_7scamper_ScamperVp *)__pyx_t_1));
    __pyx_t_1 = 0;

    /* "scamper.pyx":10526
 *             vp_c = clibscamperctrl.scamper_vpset_vp_get(vpset, i)
 *             vp = ScamperVp.from_ptr(vp_c)
 *             if vp is not None:             # <<<<<<<<<<<<<<
 *                 vps.append(vp)
 *         clibscamperctrl.scamper_vpset_free(vpset)
*/
    __pyx_t_2 = (((PyObject *)__pyx_v_vp) != Py_None);
    if (__pyx_t_2) {

      /* "scamper.pyx":10527
 *             vp = ScamperVp.from_ptr(vp_c)
 *             if vp is not None:
 *                 vps.append(vp)             # <<<<<<<<<<<<<<
 *         clibscamperctrl.scamper_vpset_free(vpset)
 *         return vps
*/
      __pyx_t_6 = __Pyx_PyList_Append(__pyx_v_vps, ((PyObject *)__pyx_v_vp)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 10527, __pyx_L1_error)

      /* "scamper.pyx":10526
 *             vp_c = clibscamperctrl.scamper_vpset_vp_get(vpset, i)
 *             vp = ScamperVp.from_ptr(vp_c)
 *             if vp is not None:             # <<<<<<<<<<<<<<
 *                 vps.append(vp)
 *         clibscamperctrl.scamper_vpset_free(vpset)
*/
    }
  }

  /* "scamper.pyx":10528
 *             if vp is not None:
 *                 vps.append(vp)
 *         clibscamperctrl.scamper_vpset_free(vpset)             # <<<<<<<<<<<<<<
 *         return vps
 * 
*/
  scamper_vpset_free(__pyx_v_vpset);

  /* "scamper.pyx":10529
 *                 vps.append(vp)
 *         clibscamperctrl.scamper_vpset_free(vpset)
 *         return vps             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperVp:
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_vps);
  __pyx_r = __pyx_v_vps;
  goto __pyx_L0;

  /* "scamper.pyx":10517
 *         return mux
 * 
 *     def vps(self):             # <<<<<<<<<<<<<<
 *         vps = []
 *         vpset = clibscamperctrl.scamper_vpset_get(self._c)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperMux.vps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vps);
  __Pyx_XDECREF((PyObject *)__pyx_v_vp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_10ScamperMux_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_10ScamperMux_5__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_10ScamperMux_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_10ScamperMux_5__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_10ScamperMux_4__reduce_cython__(((struct __pyx_obj_7scamper_ScamperMux *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_10ScamperMux_4__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperMux *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperMux.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_10ScamperMux_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_10ScamperMux_7__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_10ScamperMux_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_10ScamperMux_7__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperMux.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_10ScamperMux_6__setstate_cython__(((struct __pyx_obj_7scamper_ScamperMux *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_10ScamperMux_6__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperMux *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperMux.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10536
 *     cdef clibscamperctrl.scamper_vp_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_9ScamperVp_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_9ScamperVp_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_9ScamperVp___init__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_9ScamperVp___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":10537
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10537, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 10537, __pyx_L1_error)

  /* "scamper.pyx":10536
 *     cdef clibscamperctrl.scamper_vp_t *_c
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperVp.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10539
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         clibscamperctrl.scamper_vp_free(self._c)
 * 
*/

/* Python wrapper */
static void __pyx_pw_7scamper_9ScamperVp_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_9ScamperVp_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_9ScamperVp_2__dealloc__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_9ScamperVp_2__dealloc__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {

  /* "scamper.pyx":10540
 * 
 *     def __dealloc__(self):
 *         clibscamperctrl.scamper_vp_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  scamper_vp_free(__pyx_v_self->_c);

  /* "scamper.pyx":10539
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         clibscamperctrl.scamper_vp_free(self._c)
 * 
*/

  /* function exit code */
}

/* "scamper.pyx":10542
 *         clibscamperctrl.scamper_vp_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         name = self.name
 *         if name is None:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_5__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_9ScamperVp_5__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_4__str__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_4__str__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":10543
 * 
 *     def __str__(self):
 *         name = self.name             # <<<<<<<<<<<<<<
 *         if name is None:
 *             return object.__str__(self)
*/
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_mstate_global->__pyx_n_u_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_name = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":10544
 *     def __str__(self):
 *         name = self.name
 *         if name is None:             # <<<<<<<<<<<<<<
 *             return object.__str__(self)
 *         return name
*/
  __pyx_t_2 = (__pyx_v_name == Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":10545
 *         name = self.name
 *         if name is None:
 *             return object.__str__(self)             # <<<<<<<<<<<<<<
 *         return name
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __pyx_builtin_object;
    __Pyx_INCREF(__pyx_t_3);
    __pyx_t_4 = 0;
    {
      PyObject *__pyx_callargs[2] = {__pyx_t_3, ((PyObject *)__pyx_v_self)};
      __pyx_t_1 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_str, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10545, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
    }
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10544
 *     def __str__(self):
 *         name = self.name
 *         if name is None:             # <<<<<<<<<<<<<<
 *             return object.__str__(self)
 *         return name
*/
  }

  /* "scamper.pyx":10546
 *         if name is None:
 *             return object.__str__(self)
 *         return name             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_name);
  __pyx_r = __pyx_v_name;
  goto __pyx_L0;

  /* "scamper.pyx":10542
 *         clibscamperctrl.scamper_vp_free(self._c)
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         name = self.name
 *         if name is None:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperVp.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10548
 *         return name
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperVp from_ptr(clibscamperctrl.scamper_vp_t *ptr):
 *         cdef ScamperVp vp
*/

static struct __pyx_obj_7scamper_ScamperVp *__pyx_f_7scamper_9ScamperVp_from_ptr(scamper_vp_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperVp *__pyx_v_vp = 0;
  struct __pyx_obj_7scamper_ScamperVp *__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("from_ptr", 0);

  /* "scamper.pyx":10551
 *     cdef ScamperVp from_ptr(clibscamperctrl.scamper_vp_t *ptr):
 *         cdef ScamperVp vp
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         vp = ScamperVp.__new__(ScamperVp)
*/
  __pyx_t_1 = (__pyx_v_ptr == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10552
 *         cdef ScamperVp vp
 *         if ptr == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         vp = ScamperVp.__new__(ScamperVp)
 *         vp._c = clibscamperctrl.scamper_vp_use(ptr)
*/
    __Pyx_XDECREF((PyObject *)__pyx_r);
    __pyx_r = ((struct __pyx_obj_7scamper_ScamperVp *)Py_None); __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10551
 *     cdef ScamperVp from_ptr(clibscamperctrl.scamper_vp_t *ptr):
 *         cdef ScamperVp vp
 *         if ptr == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         vp = ScamperVp.__new__(ScamperVp)
*/
  }

  /* "scamper.pyx":10553
 *         if ptr == NULL:
 *             return None
 *         vp = ScamperVp.__new__(ScamperVp)             # <<<<<<<<<<<<<<
 *         vp._c = clibscamperctrl.scamper_vp_use(ptr)
 *         return vp
*/
  __pyx_t_2 = ((PyObject *)__pyx_tp_new_7scamper_ScamperVp(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperVp), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10553, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_2);
  __pyx_v_vp = ((struct __pyx_obj_7scamper_ScamperVp *)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "scamper.pyx":10554
 *             return None
 *         vp = ScamperVp.__new__(ScamperVp)
 *         vp._c = clibscamperctrl.scamper_vp_use(ptr)             # <<<<<<<<<<<<<<
 *         return vp
 * 
*/
  __pyx_v_vp->_c = scamper_vp_use(__pyx_v_ptr);

  /* "scamper.pyx":10555
 *         vp = ScamperVp.__new__(ScamperVp)
 *         vp._c = clibscamperctrl.scamper_vp_use(ptr)
 *         return vp             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_vp);
  __pyx_r = __pyx_v_vp;
  goto __pyx_L0;

  /* "scamper.pyx":10548
 *         return name
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperVp from_ptr(clibscamperctrl.scamper_vp_t *ptr):
 *         cdef ScamperVp vp
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("scamper.ScamperVp.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_vp);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10557
 *         return vp
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_9ScamperVp_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_4name___get__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_4name___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  char const *__pyx_v_c_name;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10565
 *         :rtype: string
 *         """
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_name == NULL:
 *             return None
*/
  __pyx_v_c_name = scamper_vp_name_get(__pyx_v_self->_c);

  /* "scamper.pyx":10566
 *         """
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)
 *         if c_name == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_name.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c_name == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10567
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)
 *         if c_name == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c_name.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10566
 *         """
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)
 *         if c_name == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_name.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":10568
 *         if c_name == NULL:
 *             return None
 *         return c_name.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_name); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10568, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_name, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10568, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10557
 *         return vp
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperVp.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10570
 *         return c_name.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def shortname(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_9shortname_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_9ScamperVp_9shortname_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_9shortname___get__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_9shortname___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  char const *__pyx_v_c_name;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10580
 *         :rtype: string
 *         """
 *         c_name = clibscamperctrl.scamper_vp_shortname_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_name != NULL:
 *             return c_name.decode('UTF-8', 'strict')
*/
  __pyx_v_c_name = scamper_vp_shortname_get(__pyx_v_self->_c);

  /* "scamper.pyx":10581
 *         """
 *         c_name = clibscamperctrl.scamper_vp_shortname_get(self._c)
 *         if c_name != NULL:             # <<<<<<<<<<<<<<
 *             return c_name.decode('UTF-8', 'strict')
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)
*/
  __pyx_t_1 = (__pyx_v_c_name != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10582
 *         c_name = clibscamperctrl.scamper_vp_shortname_get(self._c)
 *         if c_name != NULL:
 *             return c_name.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)
 *         if c_name != NULL:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_name); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10582, __pyx_L1_error)
    __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_name, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10582, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10581
 *         """
 *         c_name = clibscamperctrl.scamper_vp_shortname_get(self._c)
 *         if c_name != NULL:             # <<<<<<<<<<<<<<
 *             return c_name.decode('UTF-8', 'strict')
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)
*/
  }

  /* "scamper.pyx":10583
 *         if c_name != NULL:
 *             return c_name.decode('UTF-8', 'strict')
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_name != NULL:
 *             return c_name.decode('UTF-8', 'strict')
*/
  __pyx_v_c_name = scamper_vp_name_get(__pyx_v_self->_c);

  /* "scamper.pyx":10584
 *             return c_name.decode('UTF-8', 'strict')
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)
 *         if c_name != NULL:             # <<<<<<<<<<<<<<
 *             return c_name.decode('UTF-8', 'strict')
 *         return None
*/
  __pyx_t_1 = (__pyx_v_c_name != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10585
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)
 *         if c_name != NULL:
 *             return c_name.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         return None
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_name); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10585, __pyx_L1_error)
    __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_name, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10585, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10584
 *             return c_name.decode('UTF-8', 'strict')
 *         c_name = clibscamperctrl.scamper_vp_name_get(self._c)
 *         if c_name != NULL:             # <<<<<<<<<<<<<<
 *             return c_name.decode('UTF-8', 'strict')
 *         return None
*/
  }

  /* "scamper.pyx":10586
 *         if c_name != NULL:
 *             return c_name.decode('UTF-8', 'strict')
 *         return None             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;

  /* "scamper.pyx":10570
 *         return c_name.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def shortname(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperVp.shortname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10588
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tags(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_4tags_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_9ScamperVp_4tags_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_4tags___get__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_4tags___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  size_t __pyx_v_tagc;
  PyObject *__pyx_v_tags = NULL;
  size_t __pyx_v_i;
  char const *__pyx_v_tag;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  size_t __pyx_t_2;
  size_t __pyx_t_3;
  size_t __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10596
 *         :rtype: set
 *         """
 *         tagc = clibscamperctrl.scamper_vp_tagc_get(self._c)             # <<<<<<<<<<<<<<
 *         tags = set()
 *         for i in range(tagc):
*/
  __pyx_v_tagc = scamper_vp_tagc_get(__pyx_v_self->_c);

  /* "scamper.pyx":10597
 *         """
 *         tagc = clibscamperctrl.scamper_vp_tagc_get(self._c)
 *         tags = set()             # <<<<<<<<<<<<<<
 *         for i in range(tagc):
 *             tag = clibscamperctrl.scamper_vp_tag_get(self._c, i)
*/
  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10597, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_tags = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10598
 *         tagc = clibscamperctrl.scamper_vp_tagc_get(self._c)
 *         tags = set()
 *         for i in range(tagc):             # <<<<<<<<<<<<<<
 *             tag = clibscamperctrl.scamper_vp_tag_get(self._c, i)
 *             if tag != NULL:
*/
  __pyx_t_2 = __pyx_v_tagc;
  __pyx_t_3 = __pyx_t_2;
  for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
    __pyx_v_i = __pyx_t_4;

    /* "scamper.pyx":10599
 *         tags = set()
 *         for i in range(tagc):
 *             tag = clibscamperctrl.scamper_vp_tag_get(self._c, i)             # <<<<<<<<<<<<<<
 *             if tag != NULL:
 *                 tags.add(tag.decode('UTF-8', 'strict'))
*/
    __pyx_v_tag = scamper_vp_tag_get(__pyx_v_self->_c, __pyx_v_i);

    /* "scamper.pyx":10600
 *         for i in range(tagc):
 *             tag = clibscamperctrl.scamper_vp_tag_get(self._c, i)
 *             if tag != NULL:             # <<<<<<<<<<<<<<
 *                 tags.add(tag.decode('UTF-8', 'strict'))
 *         return tags
*/
    __pyx_t_5 = (__pyx_v_tag != NULL);
    if (__pyx_t_5) {

      /* "scamper.pyx":10601
 *             tag = clibscamperctrl.scamper_vp_tag_get(self._c, i)
 *             if tag != NULL:
 *                 tags.add(tag.decode('UTF-8', 'strict'))             # <<<<<<<<<<<<<<
 *         return tags
 * 
*/
      __pyx_t_6 = __Pyx_ssize_strlen(__pyx_v_tag); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10601, __pyx_L1_error)
      __pyx_t_1 = __Pyx_decode_c_string(__pyx_v_tag, 0, __pyx_t_6, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10601, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = PySet_Add(__pyx_v_tags, __pyx_t_1); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 10601, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

      /* "scamper.pyx":10600
 *         for i in range(tagc):
 *             tag = clibscamperctrl.scamper_vp_tag_get(self._c, i)
 *             if tag != NULL:             # <<<<<<<<<<<<<<
 *                 tags.add(tag.decode('UTF-8', 'strict'))
 *         return tags
*/
    }
  }

  /* "scamper.pyx":10602
 *             if tag != NULL:
 *                 tags.add(tag.decode('UTF-8', 'strict'))
 *         return tags             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_tags);
  __pyx_r = __pyx_v_tags;
  goto __pyx_L0;

  /* "scamper.pyx":10588
 *         return None
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def tags(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperVp.tags.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tags);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10604
 *         return tags
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def asn4(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_4asn4_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_9ScamperVp_4asn4_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_4asn4___get__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_4asn4___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  char const *__pyx_v_c_asn4;
  PyObject *__pyx_v_asn4 = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  size_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10612
 *         :rtype: int or string
 *         """
 *         c_asn4 = clibscamperctrl.scamper_vp_asn4_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_asn4 == NULL:
 *             return None
*/
  __pyx_v_c_asn4 = scamper_vp_asn4_get(__pyx_v_self->_c);

  /* "scamper.pyx":10613
 *         """
 *         c_asn4 = clibscamperctrl.scamper_vp_asn4_get(self._c)
 *         if c_asn4 == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         asn4 = c_asn4.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c_asn4 == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10614
 *         c_asn4 = clibscamperctrl.scamper_vp_asn4_get(self._c)
 *         if c_asn4 == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         asn4 = c_asn4.decode('UTF-8', 'strict')
 *         if asn4.isdecimal():
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10613
 *         """
 *         c_asn4 = clibscamperctrl.scamper_vp_asn4_get(self._c)
 *         if c_asn4 == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         asn4 = c_asn4.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":10615
 *         if c_asn4 == NULL:
 *             return None
 *         asn4 = c_asn4.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         if asn4.isdecimal():
 *             try:
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_asn4); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10615, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_asn4, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10615, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_asn4 = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":10616
 *             return None
 *         asn4 = c_asn4.decode('UTF-8', 'strict')
 *         if asn4.isdecimal():             # <<<<<<<<<<<<<<
 *             try:
 *                 return int(asn4, base=10)
*/
  __pyx_t_4 = __pyx_v_asn4;
  __Pyx_INCREF(__pyx_t_4);
  __pyx_t_5 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, NULL};
    __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_isdecimal, __pyx_callargs+__pyx_t_5, (1-__pyx_t_5) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10616, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 10616, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (__pyx_t_1) {

    /* "scamper.pyx":10617
 *         asn4 = c_asn4.decode('UTF-8', 'strict')
 *         if asn4.isdecimal():
 *             try:             # <<<<<<<<<<<<<<
 *                 return int(asn4, base=10)
 *             except:
*/
    {
      __Pyx_PyThreadState_declare
      __Pyx_PyThreadState_assign
      __Pyx_ExceptionSave(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
      __Pyx_XGOTREF(__pyx_t_6);
      __Pyx_XGOTREF(__pyx_t_7);
      __Pyx_XGOTREF(__pyx_t_8);
      /*try:*/ {

        /* "scamper.pyx":10618
 *         if asn4.isdecimal():
 *             try:
 *                 return int(asn4, base=10)             # <<<<<<<<<<<<<<
 *             except:
 *                 pass
*/
        __Pyx_XDECREF(__pyx_r);
        __pyx_t_4 = NULL;
        __Pyx_INCREF((PyObject *)(&PyLong_Type));
        __pyx_t_9 = ((PyObject *)(&PyLong_Type)); 
        __pyx_t_5 = 1;
        {
          PyObject *__pyx_callargs[2 + ((CYTHON_VECTORCALL) ? 1 : 0)] = {__pyx_t_4, __pyx_v_asn4};
          __pyx_t_10 = __Pyx_MakeVectorcallBuilderKwds(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 10618, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_10);
          if (__Pyx_VectorcallBuilder_AddArg(__pyx_mstate_global->__pyx_n_u_base, __pyx_mstate_global->__pyx_int_10, __pyx_t_10, __pyx_callargs+2, 0) < 0) __PYX_ERR(0, 10618, __pyx_L5_error)
          __pyx_t_3 = __Pyx_Object_Vectorcall_CallFromBuilder(__pyx_t_9, __pyx_callargs+__pyx_t_5, (2-__pyx_t_5) | (__pyx_t_5*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET), __pyx_t_10);
          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
          __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
          if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10618, __pyx_L5_error)
          __Pyx_GOTREF(__pyx_t_3);
        }
        __pyx_r = __pyx_t_3;
        __pyx_t_3 = 0;
        goto __pyx_L9_try_return;

        /* "scamper.pyx":10617
 *         asn4 = c_asn4.decode('UTF-8', 'strict')
 *         if asn4.isdecimal():
 *             try:             # <<<<<<<<<<<<<<
 *                 return int(asn4, base=10)
 *             except:
*/
      }
      __pyx_L5_error:;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;

      /* "scamper.pyx":10619
 *             try:
 *                 return int(asn4, base=10)
 *             except:             # <<<<<<<<<<<<<<
 *                 pass
 *         return asn4
*/
      /*except:*/ {
        __Pyx_ErrRestore(0,0,0);
        goto __pyx_L6_exception_handled;
      }

      /* "scamper.pyx":10617
 *         asn4 = c_asn4.decode('UTF-8', 'strict')
 *         if asn4.isdecimal():
 *             try:             # <<<<<<<<<<<<<<
 *                 return int(asn4, base=10)
 *             except:
*/
      __pyx_L9_try_return:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
      goto __pyx_L0;
      __pyx_L6_exception_handled:;
      __Pyx_XGIVEREF(__pyx_t_6);
      __Pyx_XGIVEREF(__pyx_t_7);
      __Pyx_XGIVEREF(__pyx_t_8);
      __Pyx_ExceptionReset(__pyx_t_6, __pyx_t_7, __pyx_t_8);
    }

    /* "scamper.pyx":10616
 *             return None
 *         asn4 = c_asn4.decode('UTF-8', 'strict')
 *         if asn4.isdecimal():             # <<<<<<<<<<<<<<
 *             try:
 *                 return int(asn4, base=10)
*/
  }

  /* "scamper.pyx":10621
 *             except:
 *                 pass
 *         return asn4             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_asn4);
  __pyx_r = __pyx_v_asn4;
  goto __pyx_L0;

  /* "scamper.pyx":10604
 *         return tags
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def asn4(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("scamper.ScamperVp.asn4.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_asn4);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10623
 *         return asn4
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ipv4(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_4ipv4_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_9ScamperVp_4ipv4_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_4ipv4___get__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_4ipv4___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  char const *__pyx_v_c_ipv4;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10632
 *         :rtype: string
 *         """
 *         c_ipv4 = clibscamperctrl.scamper_vp_ipv4_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_ipv4 == NULL:
 *             return None
*/
  __pyx_v_c_ipv4 = scamper_vp_ipv4_get(__pyx_v_self->_c);

  /* "scamper.pyx":10633
 *         """
 *         c_ipv4 = clibscamperctrl.scamper_vp_ipv4_get(self._c)
 *         if c_ipv4 == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_ipv4.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c_ipv4 == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10634
 *         c_ipv4 = clibscamperctrl.scamper_vp_ipv4_get(self._c)
 *         if c_ipv4 == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c_ipv4.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10633
 *         """
 *         c_ipv4 = clibscamperctrl.scamper_vp_ipv4_get(self._c)
 *         if c_ipv4 == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_ipv4.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":10635
 *         if c_ipv4 == NULL:
 *             return None
 *         return c_ipv4.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_ipv4); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10635, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_ipv4, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10635, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10623
 *         return asn4
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ipv4(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperVp.ipv4.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10637
 *         return c_ipv4.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def loc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_3loc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_9ScamperVp_3loc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_3loc___get__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_3loc___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  char const *__pyx_v_c_loc;
  PyObject *__pyx_v_loc = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  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("__get__", 0);

  /* "scamper.pyx":10645
 *         :rtype: pair of floats
 *         """
 *         c_loc = clibscamperctrl.scamper_vp_latlong_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_loc == NULL:
 *             return None
*/
  __pyx_v_c_loc = scamper_vp_latlong_get(__pyx_v_self->_c);

  /* "scamper.pyx":10646
 *         """
 *         c_loc = clibscamperctrl.scamper_vp_latlong_get(self._c)
 *         if c_loc == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         loc = c_loc.decode('UTF-8', 'strict').split(',')
*/
  __pyx_t_1 = (__pyx_v_c_loc == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10647
 *         c_loc = clibscamperctrl.scamper_vp_latlong_get(self._c)
 *         if c_loc == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         loc = c_loc.decode('UTF-8', 'strict').split(',')
 *         if len(loc) != 2:
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10646
 *         """
 *         c_loc = clibscamperctrl.scamper_vp_latlong_get(self._c)
 *         if c_loc == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         loc = c_loc.decode('UTF-8', 'strict').split(',')
*/
  }

  /* "scamper.pyx":10648
 *         if c_loc == NULL:
 *             return None
 *         loc = c_loc.decode('UTF-8', 'strict').split(',')             # <<<<<<<<<<<<<<
 *         if len(loc) != 2:
 *             return None
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_loc); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10648, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_loc, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyUnicode_Split(((PyObject*)__pyx_t_3), __Pyx_NoneAsNull(__pyx_mstate_global->__pyx_kp_u__23), -1L); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 10648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_loc = __pyx_t_4;
  __pyx_t_4 = 0;

  /* "scamper.pyx":10649
 *             return None
 *         loc = c_loc.decode('UTF-8', 'strict').split(',')
 *         if len(loc) != 2:             # <<<<<<<<<<<<<<
 *             return None
 *         return float(loc[0]), float(loc[1])
*/
  __pyx_t_2 = PyObject_Length(__pyx_v_loc); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10649, __pyx_L1_error)
  __pyx_t_1 = (__pyx_t_2 != 2);
  if (__pyx_t_1) {

    /* "scamper.pyx":10650
 *         loc = c_loc.decode('UTF-8', 'strict').split(',')
 *         if len(loc) != 2:
 *             return None             # <<<<<<<<<<<<<<
 *         return float(loc[0]), float(loc[1])
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10649
 *             return None
 *         loc = c_loc.decode('UTF-8', 'strict').split(',')
 *         if len(loc) != 2:             # <<<<<<<<<<<<<<
 *             return None
 *         return float(loc[0]), float(loc[1])
*/
  }

  /* "scamper.pyx":10651
 *         if len(loc) != 2:
 *             return None
 *         return float(loc[0]), float(loc[1])             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_loc, 0, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 10651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = __Pyx_PyNumber_Float(__pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_GetItemInt(__pyx_v_loc, 1, long, 1, __Pyx_PyLong_From_long, 0, 0, 1, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 10651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyNumber_Float(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 10651, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_3);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3) != (0)) __PYX_ERR(0, 10651, __pyx_L1_error);
  __Pyx_GIVEREF(__pyx_t_5);
  if (__Pyx_PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_5) != (0)) __PYX_ERR(0, 10651, __pyx_L1_error);
  __pyx_t_3 = 0;
  __pyx_t_5 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10637
 *         return c_ipv4.decode('UTF-8', 'strict')
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def loc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperVp.loc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_loc);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10653
 *         return float(loc[0]), float(loc[1])
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_2cc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_9ScamperVp_2cc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_2cc___get__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_2cc___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  char const *__pyx_v_c_cc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10661
 *         :rtype: string
 *         """
 *         c_cc = clibscamperctrl.scamper_vp_cc_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_cc == NULL:
 *             return None
*/
  __pyx_v_c_cc = scamper_vp_cc_get(__pyx_v_self->_c);

  /* "scamper.pyx":10662
 *         """
 *         c_cc = clibscamperctrl.scamper_vp_cc_get(self._c)
 *         if c_cc == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_cc.decode('UTF-8', 'strict').upper()
*/
  __pyx_t_1 = (__pyx_v_c_cc == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10663
 *         c_cc = clibscamperctrl.scamper_vp_cc_get(self._c)
 *         if c_cc == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c_cc.decode('UTF-8', 'strict').upper()
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10662
 *         """
 *         c_cc = clibscamperctrl.scamper_vp_cc_get(self._c)
 *         if c_cc == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_cc.decode('UTF-8', 'strict').upper()
*/
  }

  /* "scamper.pyx":10664
 *         if c_cc == NULL:
 *             return None
 *         return c_cc.decode('UTF-8', 'strict').upper()             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_c_cc); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10664, __pyx_L1_error)
  __pyx_t_5 = __Pyx_decode_c_string(__pyx_v_c_cc, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10664, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __pyx_t_5;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_upper, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10664, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10653
 *         return float(loc[0]), float(loc[1])
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperVp.cc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10666
 *         return c_cc.decode('UTF-8', 'strict').upper()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def st(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_2st_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_9ScamperVp_2st_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_2st___get__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_2st___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  char const *__pyx_v_c_st;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  size_t __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10674
 *         :rtype: string
 *         """
 *         c_st = clibscamperctrl.scamper_vp_st_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_st == NULL:
 *             return None
*/
  __pyx_v_c_st = scamper_vp_st_get(__pyx_v_self->_c);

  /* "scamper.pyx":10675
 *         """
 *         c_st = clibscamperctrl.scamper_vp_st_get(self._c)
 *         if c_st == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_st.decode('UTF-8', 'strict').upper()
*/
  __pyx_t_1 = (__pyx_v_c_st == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10676
 *         c_st = clibscamperctrl.scamper_vp_st_get(self._c)
 *         if c_st == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c_st.decode('UTF-8', 'strict').upper()
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10675
 *         """
 *         c_st = clibscamperctrl.scamper_vp_st_get(self._c)
 *         if c_st == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_st.decode('UTF-8', 'strict').upper()
*/
  }

  /* "scamper.pyx":10677
 *         if c_st == NULL:
 *             return None
 *         return c_st.decode('UTF-8', 'strict').upper()             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_ssize_strlen(__pyx_v_c_st); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10677, __pyx_L1_error)
  __pyx_t_5 = __Pyx_decode_c_string(__pyx_v_c_st, 0, __pyx_t_4, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10677, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __pyx_t_5;
  __Pyx_INCREF(__pyx_t_3);
  __pyx_t_6 = 0;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_3, NULL};
    __pyx_t_2 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_upper, __pyx_callargs+__pyx_t_6, (1-__pyx_t_6) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10677, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_2);
  }
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10666
 *         return c_cc.decode('UTF-8', 'strict').upper()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def st(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("scamper.ScamperVp.st.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10679
 *         return c_st.decode('UTF-8', 'strict').upper()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def place(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_5place_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_9ScamperVp_5place_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_5place___get__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_5place___get__(struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  char const *__pyx_v_c_place;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10687
 *         :rtype: string
 *         """
 *         c_place = clibscamperctrl.scamper_vp_place_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_place == NULL:
 *             return None
*/
  __pyx_v_c_place = scamper_vp_place_get(__pyx_v_self->_c);

  /* "scamper.pyx":10688
 *         """
 *         c_place = clibscamperctrl.scamper_vp_place_get(self._c)
 *         if c_place == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_place.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c_place == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10689
 *         c_place = clibscamperctrl.scamper_vp_place_get(self._c)
 *         if c_place == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c_place.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10688
 *         """
 *         c_place = clibscamperctrl.scamper_vp_place_get(self._c)
 *         if c_place == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_place.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":10690
 *         if c_place == NULL:
 *             return None
 *         return c_place.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperInst:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_place); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10690, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_place, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10690, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10679
 *         return c_st.decode('UTF-8', 'strict').upper()
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def place(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperVp.place.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_9ScamperVp_7__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_9ScamperVp_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_9ScamperVp_7__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_6__reduce_cython__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_6__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperVp.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_9ScamperVp_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_9ScamperVp_9__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_9ScamperVp_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_9ScamperVp_9__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperVp.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_9ScamperVp_8__setstate_cython__(((struct __pyx_obj_7scamper_ScamperVp *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_9ScamperVp_8__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperVp *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_cannot_be_converted_to_a, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperVp.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10709
 *     cdef public int _queued
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperInst_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_11ScamperInst_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_11ScamperInst___init__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperInst___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":10710
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10710, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 10710, __pyx_L1_error)

  /* "scamper.pyx":10709
 *     cdef public int _queued
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperInst.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10712
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._tasks is not None:
 *             while len(self._tasks) > 0:
*/

/* Python wrapper */
static void __pyx_pw_7scamper_11ScamperInst_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_11ScamperInst_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_11ScamperInst_2__dealloc__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_11ScamperInst_2__dealloc__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "scamper.pyx":10713
 * 
 *     def __dealloc__(self):
 *         if self._tasks is not None:             # <<<<<<<<<<<<<<
 *             while len(self._tasks) > 0:
 *                 self._tasks.pop(0)
*/
  __pyx_t_1 = (__pyx_v_self->_tasks != Py_None);
  if (__pyx_t_1) {

    /* "scamper.pyx":10714
 *     def __dealloc__(self):
 *         if self._tasks is not None:
 *             while len(self._tasks) > 0:             # <<<<<<<<<<<<<<
 *                 self._tasks.pop(0)
 *         if self._c_f != NULL:
*/
    while (1) {
      __pyx_t_2 = __pyx_v_self->_tasks;
      __Pyx_INCREF(__pyx_t_2);
      __pyx_t_3 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_3 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10714, __pyx_L1_error)
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_1 = (__pyx_t_3 > 0);
      if (!__pyx_t_1) break;

      /* "scamper.pyx":10715
 *         if self._tasks is not None:
 *             while len(self._tasks) > 0:
 *                 self._tasks.pop(0)             # <<<<<<<<<<<<<<
 *         if self._c_f != NULL:
 *             cscamper_file.scamper_file_close(self._c_f)
*/
      __pyx_t_2 = __Pyx_PyObject_PopIndex(__pyx_v_self->_tasks, __pyx_mstate_global->__pyx_int_0, 0, 1, Py_ssize_t, PyLong_FromSsize_t); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 10715, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    }

    /* "scamper.pyx":10713
 * 
 *     def __dealloc__(self):
 *         if self._tasks is not None:             # <<<<<<<<<<<<<<
 *             while len(self._tasks) > 0:
 *                 self._tasks.pop(0)
*/
  }

  /* "scamper.pyx":10716
 *             while len(self._tasks) > 0:
 *                 self._tasks.pop(0)
 *         if self._c_f != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_file.scamper_file_close(self._c_f)
 *         if self._c_rb != NULL:
*/
  __pyx_t_1 = (__pyx_v_self->_c_f != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10717
 *                 self._tasks.pop(0)
 *         if self._c_f != NULL:
 *             cscamper_file.scamper_file_close(self._c_f)             # <<<<<<<<<<<<<<
 *         if self._c_rb != NULL:
 *             cscamper_file.scamper_file_readbuf_free(self._c_rb)
*/
    scamper_file_close(__pyx_v_self->_c_f);

    /* "scamper.pyx":10716
 *             while len(self._tasks) > 0:
 *                 self._tasks.pop(0)
 *         if self._c_f != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_file.scamper_file_close(self._c_f)
 *         if self._c_rb != NULL:
*/
  }

  /* "scamper.pyx":10718
 *         if self._c_f != NULL:
 *             cscamper_file.scamper_file_close(self._c_f)
 *         if self._c_rb != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_file.scamper_file_readbuf_free(self._c_rb)
 *         if self._c != NULL:
*/
  __pyx_t_1 = (__pyx_v_self->_c_rb != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10719
 *             cscamper_file.scamper_file_close(self._c_f)
 *         if self._c_rb != NULL:
 *             cscamper_file.scamper_file_readbuf_free(self._c_rb)             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             clibscamperctrl.scamper_inst_free(self._c)
*/
    scamper_file_readbuf_free(__pyx_v_self->_c_rb);

    /* "scamper.pyx":10718
 *         if self._c_f != NULL:
 *             cscamper_file.scamper_file_close(self._c_f)
 *         if self._c_rb != NULL:             # <<<<<<<<<<<<<<
 *             cscamper_file.scamper_file_readbuf_free(self._c_rb)
 *         if self._c != NULL:
*/
  }

  /* "scamper.pyx":10720
 *         if self._c_rb != NULL:
 *             cscamper_file.scamper_file_readbuf_free(self._c_rb)
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             clibscamperctrl.scamper_inst_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10721
 *             cscamper_file.scamper_file_readbuf_free(self._c_rb)
 *         if self._c != NULL:
 *             clibscamperctrl.scamper_inst_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
*/
    scamper_inst_free(__pyx_v_self->_c);

    /* "scamper.pyx":10720
 *         if self._c_rb != NULL:
 *             cscamper_file.scamper_file_readbuf_free(self._c_rb)
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             clibscamperctrl.scamper_inst_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":10712
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._tasks is not None:
 *             while len(self._tasks) > 0:
*/

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_WriteUnraisable("scamper.ScamperInst.__dealloc__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
}

/* "scamper.pyx":10723
 *             clibscamperctrl.scamper_inst_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperInst):
 *             return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_4__richcmp__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_4__richcmp__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__richcmp__", 0);

  /* "scamper.pyx":10724
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperInst):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         if op == Py_EQ:
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "scamper.pyx":10725
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperInst):
 *             return NotImplemented             # <<<<<<<<<<<<<<
 *         if op == Py_EQ:
 *             return self._c == (<ScamperInst>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;

    /* "scamper.pyx":10724
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperInst):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         if op == Py_EQ:
*/
  }

  /* "scamper.pyx":10726
 *         if not isinstance(other, ScamperInst):
 *             return NotImplemented
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return self._c == (<ScamperInst>other)._c
 *         elif op == Py_NE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_2) {

    /* "scamper.pyx":10727
 *             return NotImplemented
 *         if op == Py_EQ:
 *             return self._c == (<ScamperInst>other)._c             # <<<<<<<<<<<<<<
 *         elif op == Py_NE:
 *             return self._c != (<ScamperInst>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c == ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10727, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10726
 *         if not isinstance(other, ScamperInst):
 *             return NotImplemented
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return self._c == (<ScamperInst>other)._c
 *         elif op == Py_NE:
*/
  }

  /* "scamper.pyx":10728
 *         if op == Py_EQ:
 *             return self._c == (<ScamperInst>other)._c
 *         elif op == Py_NE:             # <<<<<<<<<<<<<<
 *             return self._c != (<ScamperInst>other)._c
 *         elif op == Py_LT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_NE);
  if (__pyx_t_2) {

    /* "scamper.pyx":10729
 *             return self._c == (<ScamperInst>other)._c
 *         elif op == Py_NE:
 *             return self._c != (<ScamperInst>other)._c             # <<<<<<<<<<<<<<
 *         elif op == Py_LT:
 *             return self._c < (<ScamperInst>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c != ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10729, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10728
 *         if op == Py_EQ:
 *             return self._c == (<ScamperInst>other)._c
 *         elif op == Py_NE:             # <<<<<<<<<<<<<<
 *             return self._c != (<ScamperInst>other)._c
 *         elif op == Py_LT:
*/
  }

  /* "scamper.pyx":10730
 *         elif op == Py_NE:
 *             return self._c != (<ScamperInst>other)._c
 *         elif op == Py_LT:             # <<<<<<<<<<<<<<
 *             return self._c < (<ScamperInst>other)._c
 *         elif op == Py_LE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LT);
  if (__pyx_t_2) {

    /* "scamper.pyx":10731
 *             return self._c != (<ScamperInst>other)._c
 *         elif op == Py_LT:
 *             return self._c < (<ScamperInst>other)._c             # <<<<<<<<<<<<<<
 *         elif op == Py_LE:
 *             return self._c <= (<ScamperInst>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c < ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10731, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10730
 *         elif op == Py_NE:
 *             return self._c != (<ScamperInst>other)._c
 *         elif op == Py_LT:             # <<<<<<<<<<<<<<
 *             return self._c < (<ScamperInst>other)._c
 *         elif op == Py_LE:
*/
  }

  /* "scamper.pyx":10732
 *         elif op == Py_LT:
 *             return self._c < (<ScamperInst>other)._c
 *         elif op == Py_LE:             # <<<<<<<<<<<<<<
 *             return self._c <= (<ScamperInst>other)._c
 *         elif op == Py_GT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LE);
  if (__pyx_t_2) {

    /* "scamper.pyx":10733
 *             return self._c < (<ScamperInst>other)._c
 *         elif op == Py_LE:
 *             return self._c <= (<ScamperInst>other)._c             # <<<<<<<<<<<<<<
 *         elif op == Py_GT:
 *             return self._c > (<ScamperInst>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c <= ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10733, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10732
 *         elif op == Py_LT:
 *             return self._c < (<ScamperInst>other)._c
 *         elif op == Py_LE:             # <<<<<<<<<<<<<<
 *             return self._c <= (<ScamperInst>other)._c
 *         elif op == Py_GT:
*/
  }

  /* "scamper.pyx":10734
 *         elif op == Py_LE:
 *             return self._c <= (<ScamperInst>other)._c
 *         elif op == Py_GT:             # <<<<<<<<<<<<<<
 *             return self._c > (<ScamperInst>other)._c
 *         elif op == Py_GE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_GT);
  if (__pyx_t_2) {

    /* "scamper.pyx":10735
 *             return self._c <= (<ScamperInst>other)._c
 *         elif op == Py_GT:
 *             return self._c > (<ScamperInst>other)._c             # <<<<<<<<<<<<<<
 *         elif op == Py_GE:
 *             return self._c >= (<ScamperInst>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c > ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10735, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10734
 *         elif op == Py_LE:
 *             return self._c <= (<ScamperInst>other)._c
 *         elif op == Py_GT:             # <<<<<<<<<<<<<<
 *             return self._c > (<ScamperInst>other)._c
 *         elif op == Py_GE:
*/
  }

  /* "scamper.pyx":10736
 *         elif op == Py_GT:
 *             return self._c > (<ScamperInst>other)._c
 *         elif op == Py_GE:             # <<<<<<<<<<<<<<
 *             return self._c >= (<ScamperInst>other)._c
 *         return NotImplemented
*/
  __pyx_t_2 = (__pyx_v_op == Py_GE);
  if (__pyx_t_2) {

    /* "scamper.pyx":10737
 *             return self._c > (<ScamperInst>other)._c
 *         elif op == Py_GE:
 *             return self._c >= (<ScamperInst>other)._c             # <<<<<<<<<<<<<<
 *         return NotImplemented
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c >= ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10737, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10736
 *         elif op == Py_GT:
 *             return self._c > (<ScamperInst>other)._c
 *         elif op == Py_GE:             # <<<<<<<<<<<<<<
 *             return self._c >= (<ScamperInst>other)._c
 *         return NotImplemented
*/
  }

  /* "scamper.pyx":10738
 *         elif op == Py_GE:
 *             return self._c >= (<ScamperInst>other)._c
 *         return NotImplemented             # <<<<<<<<<<<<<<
 * 
 *     def __hash__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_builtin_NotImplemented);
  __pyx_r = __pyx_builtin_NotImplemented;
  goto __pyx_L0;

  /* "scamper.pyx":10723
 *             clibscamperctrl.scamper_inst_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperInst):
 *             return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperInst.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10740
 *         return NotImplemented
 * 
 *     def __hash__(self):             # <<<<<<<<<<<<<<
 *         return hash((<Py_ssize_t>self._c))
 * 
*/

/* Python wrapper */
static Py_hash_t __pyx_pw_7scamper_11ScamperInst_7__hash__(PyObject *__pyx_v_self); /*proto*/
static Py_hash_t __pyx_pw_7scamper_11ScamperInst_7__hash__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_hash_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_6__hash__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_hash_t __pyx_pf_7scamper_11ScamperInst_6__hash__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  Py_hash_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_hash_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__hash__", 0);

  /* "scamper.pyx":10741
 * 
 *     def __hash__(self):
 *         return hash((<Py_ssize_t>self._c))             # <<<<<<<<<<<<<<
 * 
 *     def __str__(self):
*/
  __pyx_t_1 = PyLong_FromSsize_t(((Py_ssize_t)__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10741, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(0, 10741, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "scamper.pyx":10740
 *         return NotImplemented
 * 
 *     def __hash__(self):             # <<<<<<<<<<<<<<
 *         return hash((<Py_ssize_t>self._c))
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10743
 *         return hash((<Py_ssize_t>self._c))
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         c_name = clibscamperctrl.scamper_inst_name_get(self._c)
 *         if c_name == NULL:
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_9__str__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_9__str__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__str__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_8__str__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_8__str__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  char const *__pyx_v_c_name;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__str__", 0);

  /* "scamper.pyx":10744
 * 
 *     def __str__(self):
 *         c_name = clibscamperctrl.scamper_inst_name_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_name == NULL:
 *             return None
*/
  __pyx_v_c_name = scamper_inst_name_get(__pyx_v_self->_c);

  /* "scamper.pyx":10745
 *     def __str__(self):
 *         c_name = clibscamperctrl.scamper_inst_name_get(self._c)
 *         if c_name == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_name.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c_name == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10746
 *         c_name = clibscamperctrl.scamper_inst_name_get(self._c)
 *         if c_name == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         return c_name.decode('UTF-8', 'strict')
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10745
 *     def __str__(self):
 *         c_name = clibscamperctrl.scamper_inst_name_get(self._c)
 *         if c_name == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         return c_name.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":10747
 *         if c_name == NULL:
 *             return None
 *         return c_name.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_name); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10747, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_name, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10747, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10743
 *         return hash((<Py_ssize_t>self._c))
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         c_name = clibscamperctrl.scamper_inst_name_get(self._c)
 *         if c_name == NULL:
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperInst.__str__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10749
 *         return c_name.decode('UTF-8', 'strict')
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperInst from_ptr(clibscamperctrl.scamper_inst_t *ptr):
 *         cdef ScamperInst inst = ScamperInst.__new__(ScamperInst)
*/

static struct __pyx_obj_7scamper_ScamperInst *__pyx_f_7scamper_11ScamperInst_from_ptr(scamper_inst_t *__pyx_v_ptr) {
  struct __pyx_obj_7scamper_ScamperInst *__pyx_v_inst = 0;
  struct __pyx_obj_7scamper_ScamperInst *__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("from_ptr", 0);

  /* "scamper.pyx":10751
 *     @staticmethod
 *     cdef ScamperInst from_ptr(clibscamperctrl.scamper_inst_t *ptr):
 *         cdef ScamperInst inst = ScamperInst.__new__(ScamperInst)             # <<<<<<<<<<<<<<
 *         inst._c = ptr
 *         inst._c_f = cscamper_file.scamper_file_opennull(ord('r'), "warts")
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperInst(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10751, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_inst = ((struct __pyx_obj_7scamper_ScamperInst *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10752
 *     cdef ScamperInst from_ptr(clibscamperctrl.scamper_inst_t *ptr):
 *         cdef ScamperInst inst = ScamperInst.__new__(ScamperInst)
 *         inst._c = ptr             # <<<<<<<<<<<<<<
 *         inst._c_f = cscamper_file.scamper_file_opennull(ord('r'), "warts")
 *         inst._c_rb = cscamper_file.scamper_file_readbuf_alloc()
*/
  __pyx_v_inst->_c = __pyx_v_ptr;

  /* "scamper.pyx":10753
 *         cdef ScamperInst inst = ScamperInst.__new__(ScamperInst)
 *         inst._c = ptr
 *         inst._c_f = cscamper_file.scamper_file_opennull(ord('r'), "warts")             # <<<<<<<<<<<<<<
 *         inst._c_rb = cscamper_file.scamper_file_readbuf_alloc()
 *         inst._tasks = []
*/
  __pyx_v_inst->_c_f = scamper_file_opennull(0x72, ((char const *)"warts"));

  /* "scamper.pyx":10754
 *         inst._c = ptr
 *         inst._c_f = cscamper_file.scamper_file_opennull(ord('r'), "warts")
 *         inst._c_rb = cscamper_file.scamper_file_readbuf_alloc()             # <<<<<<<<<<<<<<
 *         inst._tasks = []
 *         inst._eof = False
*/
  __pyx_v_inst->_c_rb = scamper_file_readbuf_alloc();

  /* "scamper.pyx":10755
 *         inst._c_f = cscamper_file.scamper_file_opennull(ord('r'), "warts")
 *         inst._c_rb = cscamper_file.scamper_file_readbuf_alloc()
 *         inst._tasks = []             # <<<<<<<<<<<<<<
 *         inst._eof = False
 *         inst._queued = 0
*/
  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10755, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __Pyx_GOTREF(__pyx_v_inst->_tasks);
  __Pyx_DECREF(__pyx_v_inst->_tasks);
  __pyx_v_inst->_tasks = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "scamper.pyx":10756
 *         inst._c_rb = cscamper_file.scamper_file_readbuf_alloc()
 *         inst._tasks = []
 *         inst._eof = False             # <<<<<<<<<<<<<<
 *         inst._queued = 0
 *         cscamper_file.scamper_file_setreadfunc(inst._c_f, inst._c_rb,
*/
  __pyx_v_inst->_eof = 0;

  /* "scamper.pyx":10757
 *         inst._tasks = []
 *         inst._eof = False
 *         inst._queued = 0             # <<<<<<<<<<<<<<
 *         cscamper_file.scamper_file_setreadfunc(inst._c_f, inst._c_rb,
 *                                                cscamper_file.scamper_file_readbuf_read)
*/
  __pyx_v_inst->_queued = 0;

  /* "scamper.pyx":10758
 *         inst._eof = False
 *         inst._queued = 0
 *         cscamper_file.scamper_file_setreadfunc(inst._c_f, inst._c_rb,             # <<<<<<<<<<<<<<
 *                                                cscamper_file.scamper_file_readbuf_read)
 *         clibscamperctrl.scamper_inst_param_set(ptr, <PyObject *>inst)
*/
  scamper_file_setreadfunc(__pyx_v_inst->_c_f, __pyx_v_inst->_c_rb, scamper_file_readbuf_read);

  /* "scamper.pyx":10760
 *         cscamper_file.scamper_file_setreadfunc(inst._c_f, inst._c_rb,
 *                                                cscamper_file.scamper_file_readbuf_read)
 *         clibscamperctrl.scamper_inst_param_set(ptr, <PyObject *>inst)             # <<<<<<<<<<<<<<
 *         return inst
 * 
*/
  scamper_inst_param_set(__pyx_v_ptr, ((PyObject *)__pyx_v_inst));

  /* "scamper.pyx":10761
 *                                                cscamper_file.scamper_file_readbuf_read)
 *         clibscamperctrl.scamper_inst_param_set(ptr, <PyObject *>inst)
 *         return inst             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_inst);
  __pyx_r = __pyx_v_inst;
  goto __pyx_L0;

  /* "scamper.pyx":10749
 *         return c_name.decode('UTF-8', 'strict')
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperInst from_ptr(clibscamperctrl.scamper_inst_t *ptr):
 *         cdef ScamperInst inst = ScamperInst.__new__(ScamperInst)
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_inst);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10763
 *         return inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_4name_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_4name___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_4name___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  char const *__pyx_v_c_name;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_match = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10768
 *         return a friendly string that identifies the instance in some way
 *         """
 *         c_name = clibscamperctrl.scamper_inst_name_get(self._c)             # <<<<<<<<<<<<<<
 *         if c_name == NULL:
 *             return None
*/
  __pyx_v_c_name = scamper_inst_name_get(__pyx_v_self->_c);

  /* "scamper.pyx":10769
 *         """
 *         c_name = clibscamperctrl.scamper_inst_name_get(self._c)
 *         if c_name == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         name = c_name.decode('UTF-8', 'strict')
*/
  __pyx_t_1 = (__pyx_v_c_name == NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10770
 *         c_name = clibscamperctrl.scamper_inst_name_get(self._c)
 *         if c_name == NULL:
 *             return None             # <<<<<<<<<<<<<<
 *         name = c_name.decode('UTF-8', 'strict')
 *         if clibscamperctrl.scamper_inst_is_remote(self._c):
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10769
 *         """
 *         c_name = clibscamperctrl.scamper_inst_name_get(self._c)
 *         if c_name == NULL:             # <<<<<<<<<<<<<<
 *             return None
 *         name = c_name.decode('UTF-8', 'strict')
*/
  }

  /* "scamper.pyx":10771
 *         if c_name == NULL:
 *             return None
 *         name = c_name.decode('UTF-8', 'strict')             # <<<<<<<<<<<<<<
 *         if clibscamperctrl.scamper_inst_is_remote(self._c):
 *             # if the name looks like /path/to/foobar-192.0.2.1:31337 then
*/
  __pyx_t_2 = __Pyx_ssize_strlen(__pyx_v_c_name); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10771, __pyx_L1_error)
  __pyx_t_3 = __Pyx_decode_c_string(__pyx_v_c_name, 0, __pyx_t_2, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10771, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_v_name = __pyx_t_3;
  __pyx_t_3 = 0;

  /* "scamper.pyx":10772
 *             return None
 *         name = c_name.decode('UTF-8', 'strict')
 *         if clibscamperctrl.scamper_inst_is_remote(self._c):             # <<<<<<<<<<<<<<
 *             # if the name looks like /path/to/foobar-192.0.2.1:31337 then
 *             # return foobar
*/
  __pyx_t_1 = scamper_inst_is_remote(__pyx_v_self->_c);
  if (__pyx_t_1) {

    /* "scamper.pyx":10775
 *             # if the name looks like /path/to/foobar-192.0.2.1:31337 then
 *             # return foobar
 *             match = re.search(r'(?:.+\/)?(.+)-', name)             # <<<<<<<<<<<<<<
 *             if match:
 *                 return match.group(1)
*/
    __pyx_t_4 = NULL;
    __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_re); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 10775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_search); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 10775, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_7 = 1;
    #if CYTHON_UNPACK_METHODS
    if (unlikely(PyMethod_Check(__pyx_t_6))) {
      __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_6);
      assert(__pyx_t_4);
      PyObject* __pyx__function = PyMethod_GET_FUNCTION(__pyx_t_6);
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx__function);
      __Pyx_DECREF_SET(__pyx_t_6, __pyx__function);
      __pyx_t_7 = 0;
    }
    #endif
    {
      PyObject *__pyx_callargs[3] = {__pyx_t_4, __pyx_mstate_global->__pyx_kp_u__24, __pyx_v_name};
      __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (3-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10775, __pyx_L1_error)
      __Pyx_GOTREF(__pyx_t_3);
    }
    __pyx_v_match = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "scamper.pyx":10776
 *             # return foobar
 *             match = re.search(r'(?:.+\/)?(.+)-', name)
 *             if match:             # <<<<<<<<<<<<<<
 *                 return match.group(1)
 *         return name
*/
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_match); if (unlikely((__pyx_t_1 < 0))) __PYX_ERR(0, 10776, __pyx_L1_error)
    if (__pyx_t_1) {

      /* "scamper.pyx":10777
 *             match = re.search(r'(?:.+\/)?(.+)-', name)
 *             if match:
 *                 return match.group(1)             # <<<<<<<<<<<<<<
 *         return name
 * 
*/
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_6 = __pyx_v_match;
      __Pyx_INCREF(__pyx_t_6);
      __pyx_t_7 = 0;
      {
        PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_mstate_global->__pyx_int_1};
        __pyx_t_3 = __Pyx_PyObject_FastCallMethod(__pyx_mstate_global->__pyx_n_u_group, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (1*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
        __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
        if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10777, __pyx_L1_error)
        __Pyx_GOTREF(__pyx_t_3);
      }
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;

      /* "scamper.pyx":10776
 *             # return foobar
 *             match = re.search(r'(?:.+\/)?(.+)-', name)
 *             if match:             # <<<<<<<<<<<<<<
 *                 return match.group(1)
 *         return name
*/
    }

    /* "scamper.pyx":10772
 *             return None
 *         name = c_name.decode('UTF-8', 'strict')
 *         if clibscamperctrl.scamper_inst_is_remote(self._c):             # <<<<<<<<<<<<<<
 *             # if the name looks like /path/to/foobar-192.0.2.1:31337 then
 *             # return foobar
*/
  }

  /* "scamper.pyx":10778
 *             if match:
 *                 return match.group(1)
 *         return name             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_name);
  __pyx_r = __pyx_v_name;
  goto __pyx_L0;

  /* "scamper.pyx":10763
 *         return inst
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def name(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("scamper.ScamperInst.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_match);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10780
 *         return name
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_2cc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_2cc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_2cc___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_2cc___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  scamper_vp_t *__pyx_v_c_vp;
  struct __pyx_obj_7scamper_ScamperVp *__pyx_v_vp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10785
 *         return the country code associated with the instance, if known.
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)             # <<<<<<<<<<<<<<
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
*/
  __pyx_v_c_vp = scamper_inst_vp_get(__pyx_v_self->_c);

  /* "scamper.pyx":10786
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)             # <<<<<<<<<<<<<<
 *         if vp is None:
 *             return None
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_9ScamperVp_from_ptr(__pyx_v_c_vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vp = ((struct __pyx_obj_7scamper_ScamperVp *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10787
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.cc
*/
  __pyx_t_2 = (((PyObject *)__pyx_v_vp) == Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":10788
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return vp.cc
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10787
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.cc
*/
  }

  /* "scamper.pyx":10789
 *         if vp is None:
 *             return None
 *         return vp.cc             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vp), __pyx_mstate_global->__pyx_n_u_cc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10789, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10780
 *         return name
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def cc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.cc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_vp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10791
 *         return vp.cc
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def st(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_2st_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_2st_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_2st___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_2st___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  scamper_vp_t *__pyx_v_c_vp;
  struct __pyx_obj_7scamper_ScamperVp *__pyx_v_vp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10796
 *         return the state code associated with the instance, if known.
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)             # <<<<<<<<<<<<<<
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
*/
  __pyx_v_c_vp = scamper_inst_vp_get(__pyx_v_self->_c);

  /* "scamper.pyx":10797
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)             # <<<<<<<<<<<<<<
 *         if vp is None:
 *             return None
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_9ScamperVp_from_ptr(__pyx_v_c_vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10797, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vp = ((struct __pyx_obj_7scamper_ScamperVp *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10798
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.st
*/
  __pyx_t_2 = (((PyObject *)__pyx_v_vp) == Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":10799
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return vp.st
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10798
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.st
*/
  }

  /* "scamper.pyx":10800
 *         if vp is None:
 *             return None
 *         return vp.st             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vp), __pyx_mstate_global->__pyx_n_u_st); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10800, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10791
 *         return vp.cc
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def st(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.st.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_vp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10802
 *         return vp.st
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def place(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_5place_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_5place_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_5place___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_5place___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  scamper_vp_t *__pyx_v_c_vp;
  struct __pyx_obj_7scamper_ScamperVp *__pyx_v_vp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10807
 *         return the place name associated with the instance, if known.
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)             # <<<<<<<<<<<<<<
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
*/
  __pyx_v_c_vp = scamper_inst_vp_get(__pyx_v_self->_c);

  /* "scamper.pyx":10808
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)             # <<<<<<<<<<<<<<
 *         if vp is None:
 *             return None
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_9ScamperVp_from_ptr(__pyx_v_c_vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10808, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vp = ((struct __pyx_obj_7scamper_ScamperVp *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10809
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.place
*/
  __pyx_t_2 = (((PyObject *)__pyx_v_vp) == Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":10810
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return vp.place
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10809
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.place
*/
  }

  /* "scamper.pyx":10811
 *         if vp is None:
 *             return None
 *         return vp.place             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vp), __pyx_mstate_global->__pyx_n_u_place); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10811, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10802
 *         return vp.st
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def place(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.place.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_vp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10813
 *         return vp.place
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def shortname(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_9shortname_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_9shortname_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_9shortname___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_9shortname___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  scamper_vp_t *__pyx_v_c_vp;
  struct __pyx_obj_7scamper_ScamperVp *__pyx_v_vp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10819
 *         regular name if a short name is unavailable.
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)             # <<<<<<<<<<<<<<
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
*/
  __pyx_v_c_vp = scamper_inst_vp_get(__pyx_v_self->_c);

  /* "scamper.pyx":10820
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)             # <<<<<<<<<<<<<<
 *         if vp is None:
 *             return None
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_9ScamperVp_from_ptr(__pyx_v_c_vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10820, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vp = ((struct __pyx_obj_7scamper_ScamperVp *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10821
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.shortname
*/
  __pyx_t_2 = (((PyObject *)__pyx_v_vp) == Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":10822
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return vp.shortname
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10821
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.shortname
*/
  }

  /* "scamper.pyx":10823
 *         if vp is None:
 *             return None
 *         return vp.shortname             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vp), __pyx_mstate_global->__pyx_n_u_shortname); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10823, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10813
 *         return vp.place
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def shortname(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.shortname.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_vp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10825
 *         return vp.shortname
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ipv4(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_4ipv4_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_4ipv4_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_4ipv4___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_4ipv4___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  scamper_vp_t *__pyx_v_c_vp;
  struct __pyx_obj_7scamper_ScamperVp *__pyx_v_vp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10830
 *         return the IPv4 address associated with the instance, if known.
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)             # <<<<<<<<<<<<<<
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
*/
  __pyx_v_c_vp = scamper_inst_vp_get(__pyx_v_self->_c);

  /* "scamper.pyx":10831
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)             # <<<<<<<<<<<<<<
 *         if vp is None:
 *             return None
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_9ScamperVp_from_ptr(__pyx_v_c_vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10831, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vp = ((struct __pyx_obj_7scamper_ScamperVp *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10832
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.ipv4
*/
  __pyx_t_2 = (((PyObject *)__pyx_v_vp) == Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":10833
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return vp.ipv4
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10832
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.ipv4
*/
  }

  /* "scamper.pyx":10834
 *         if vp is None:
 *             return None
 *         return vp.ipv4             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vp), __pyx_mstate_global->__pyx_n_u_ipv4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10834, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10825
 *         return vp.shortname
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ipv4(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.ipv4.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_vp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10836
 *         return vp.ipv4
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def asn4(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_4asn4_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_4asn4_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_4asn4___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_4asn4___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  scamper_vp_t *__pyx_v_c_vp;
  struct __pyx_obj_7scamper_ScamperVp *__pyx_v_vp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10841
 *         return the IPv4 ASN associated with the instance, if known.
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)             # <<<<<<<<<<<<<<
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
*/
  __pyx_v_c_vp = scamper_inst_vp_get(__pyx_v_self->_c);

  /* "scamper.pyx":10842
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)             # <<<<<<<<<<<<<<
 *         if vp is None:
 *             return None
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_9ScamperVp_from_ptr(__pyx_v_c_vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10842, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vp = ((struct __pyx_obj_7scamper_ScamperVp *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10843
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.asn4
*/
  __pyx_t_2 = (((PyObject *)__pyx_v_vp) == Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":10844
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return vp.asn4
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10843
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.asn4
*/
  }

  /* "scamper.pyx":10845
 *         if vp is None:
 *             return None
 *         return vp.asn4             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vp), __pyx_mstate_global->__pyx_n_u_asn4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10836
 *         return vp.ipv4
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def asn4(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.asn4.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_vp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10847
 *         return vp.asn4
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def loc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_3loc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_3loc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_3loc___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_3loc___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  scamper_vp_t *__pyx_v_c_vp;
  struct __pyx_obj_7scamper_ScamperVp *__pyx_v_vp = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10852
 *         return the location associated with the instance, if known.
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)             # <<<<<<<<<<<<<<
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
*/
  __pyx_v_c_vp = scamper_inst_vp_get(__pyx_v_self->_c);

  /* "scamper.pyx":10853
 *         """
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)             # <<<<<<<<<<<<<<
 *         if vp is None:
 *             return None
*/
  __pyx_t_1 = ((PyObject *)__pyx_f_7scamper_9ScamperVp_from_ptr(__pyx_v_c_vp)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10853, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_vp = ((struct __pyx_obj_7scamper_ScamperVp *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10854
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.loc
*/
  __pyx_t_2 = (((PyObject *)__pyx_v_vp) == Py_None);
  if (__pyx_t_2) {

    /* "scamper.pyx":10855
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:
 *             return None             # <<<<<<<<<<<<<<
 *         return vp.loc
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;

    /* "scamper.pyx":10854
 *         c_vp = clibscamperctrl.scamper_inst_vp_get(self._c)
 *         vp = ScamperVp.from_ptr(c_vp)
 *         if vp is None:             # <<<<<<<<<<<<<<
 *             return None
 *         return vp.loc
*/
  }

  /* "scamper.pyx":10856
 *         if vp is None:
 *             return None
 *         return vp.loc             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_vp), __pyx_mstate_global->__pyx_n_u_loc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10856, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10847
 *         return vp.asn4
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def loc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.loc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_vp);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10858
 *         return vp.loc
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def taskc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_5taskc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_5taskc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_5taskc___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_5taskc___get__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "scamper.pyx":10864
 *         for this :class:`ScamperInst` object.
 *         """
 *         return len(self._tasks)             # <<<<<<<<<<<<<<
 * 
 *     @property
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_v_self->_tasks;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(0, 10864, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyLong_FromSsize_t(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10858
 *         return vp.loc
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def taskc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.taskc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10866
 *         return len(self._tasks)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def resultc(self):
 *         """
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_7resultc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_7resultc_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_7resultc___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_7resultc___get__(struct __pyx_obj_7scamper_ScamperInst *__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("__get__", 0);

  /* "scamper.pyx":10872
 *         queued but not yet delivered.
 *         """
 *         return self._queued             # <<<<<<<<<<<<<<
 * 
 *     def done(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->_queued); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10872, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10866
 *         return len(self._tasks)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def resultc(self):
 *         """
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.resultc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10874
 *         return self._queued
 * 
 *     def done(self):             # <<<<<<<<<<<<<<
 *         """
 *         signal that there are no further measurements to come on this
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_11done(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperInst_10done, "\n        signal that there are no further measurements to come on this\n        ScamperInst\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperInst_11done = {"done", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperInst_11done, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperInst_10done};
static PyObject *__pyx_pw_7scamper_11ScamperInst_11done(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("done (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("done", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("done", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_10done(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_10done(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("done", 0);

  /* "scamper.pyx":10879
 *         ScamperInst
 *         """
 *         clibscamperctrl.scamper_inst_done(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def is_eof(self):
*/
  (void)(scamper_inst_done(__pyx_v_self->_c));

  /* "scamper.pyx":10874
 *         return self._queued
 * 
 *     def done(self):             # <<<<<<<<<<<<<<
 *         """
 *         signal that there are no further measurements to come on this
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10881
 *         clibscamperctrl.scamper_inst_done(self._c)
 * 
 *     def is_eof(self):             # <<<<<<<<<<<<<<
 *         """
 *         check if the instance has signalled eof.
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_13is_eof(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperInst_12is_eof, "\n        check if the instance has signalled eof.\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperInst_13is_eof = {"is_eof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperInst_13is_eof, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperInst_12is_eof};
static PyObject *__pyx_pw_7scamper_11ScamperInst_13is_eof(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("is_eof (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("is_eof", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("is_eof", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_12is_eof(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_12is_eof(struct __pyx_obj_7scamper_ScamperInst *__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("is_eof", 0);

  /* "scamper.pyx":10885
 *         check if the instance has signalled eof.
 *         """
 *         return self._eof             # <<<<<<<<<<<<<<
 * 
 * cdef class ScamperTask:
*/
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_eof); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10885, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "scamper.pyx":10881
 *         clibscamperctrl.scamper_inst_done(self._c)
 * 
 *     def is_eof(self):             # <<<<<<<<<<<<<<
 *         """
 *         check if the instance has signalled eof.
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst.is_eof", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10704
 * 
 *     # has the remote instance disconnected?
 *     cdef public bint _eof             # <<<<<<<<<<<<<<
 * 
 *     # how many objects are queued on the associated ScamperCtrl
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_4_eof_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_4_eof_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_4_eof___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_4_eof___get__(struct __pyx_obj_7scamper_ScamperInst *__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("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_eof); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10704, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst._eof.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperInst_4_eof_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperInst_4_eof_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_4_eof_2__set__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperInst_4_eof_2__set__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 10704, __pyx_L1_error)
  __pyx_v_self->_eof = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperInst._eof.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "scamper.pyx":10707
 * 
 *     # how many objects are queued on the associated ScamperCtrl
 *     cdef public int _queued             # <<<<<<<<<<<<<<
 * 
 *     def __init__(self):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_7_queued_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperInst_7_queued_1__get__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_7_queued___get__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_7_queued___get__(struct __pyx_obj_7scamper_ScamperInst *__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("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyLong_From_int(__pyx_v_self->_queued); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10707, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperInst._queued.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperInst_7_queued_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_7scamper_11ScamperInst_7_queued_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_7_queued_2__set__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperInst_7_queued_2__set__(struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __pyx_t_1 = __Pyx_PyLong_As_int(__pyx_v_value); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 10707, __pyx_L1_error)
  __pyx_v_self->_queued = __pyx_t_1;

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperInst._queued.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperInst_15__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperInst_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperInst_15__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_14__reduce_cython__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_14__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_self__c_f_self__c_rb_can, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperInst.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperInst_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperInst_17__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperInst_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperInst_17__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperInst.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperInst_16__setstate_cython__(((struct __pyx_obj_7scamper_ScamperInst *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperInst_16__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperInst *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_self__c_f_self__c_rb_can, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperInst.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10895
 *     cdef clibscamperctrl.scamper_inst_t *_c_i
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

/* Python wrapper */
static int __pyx_pw_7scamper_11ScamperTask_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_7scamper_11ScamperTask_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return -1;
  #endif
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, __pyx_nargs); return -1; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_VARARGS(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return -1;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__init__", __pyx_kwds); return -1;}
  __pyx_r = __pyx_pf_7scamper_11ScamperTask___init__(((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_7scamper_11ScamperTask___init__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  size_t __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__init__", 0);

  /* "scamper.pyx":10896
 * 
 *     def __init__(self):
 *         raise TypeError("This class cannot be instantiated directly.")             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
*/
  __pyx_t_2 = NULL;
  __Pyx_INCREF(__pyx_builtin_TypeError);
  __pyx_t_3 = __pyx_builtin_TypeError; 
  __pyx_t_4 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_2, __pyx_mstate_global->__pyx_kp_u_This_class_cannot_be_instantiate};
    __pyx_t_1 = __Pyx_PyObject_FastCall(__pyx_t_3, __pyx_callargs+__pyx_t_4, (2-__pyx_t_4) | (__pyx_t_4*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10896, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_1);
  }
  __Pyx_Raise(__pyx_t_1, 0, 0, 0);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __PYX_ERR(0, 10896, __pyx_L1_error)

  /* "scamper.pyx":10895
 *     cdef clibscamperctrl.scamper_inst_t *_c_i
 * 
 *     def __init__(self):             # <<<<<<<<<<<<<<
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTask.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10898
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             clibscamperctrl.scamper_task_free(self._c)
*/

/* Python wrapper */
static void __pyx_pw_7scamper_11ScamperTask_3__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_7scamper_11ScamperTask_3__dealloc__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_pf_7scamper_11ScamperTask_2__dealloc__(((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_7scamper_11ScamperTask_2__dealloc__(struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self) {
  int __pyx_t_1;

  /* "scamper.pyx":10899
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             clibscamperctrl.scamper_task_free(self._c)
 * 
*/
  __pyx_t_1 = (__pyx_v_self->_c != NULL);
  if (__pyx_t_1) {

    /* "scamper.pyx":10900
 *     def __dealloc__(self):
 *         if self._c != NULL:
 *             clibscamperctrl.scamper_task_free(self._c)             # <<<<<<<<<<<<<<
 * 
 *     def __richcmp__(self, other, int op):
*/
    scamper_task_free(__pyx_v_self->_c);

    /* "scamper.pyx":10899
 * 
 *     def __dealloc__(self):
 *         if self._c != NULL:             # <<<<<<<<<<<<<<
 *             clibscamperctrl.scamper_task_free(self._c)
 * 
*/
  }

  /* "scamper.pyx":10898
 *         raise TypeError("This class cannot be instantiated directly.")
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         if self._c != NULL:
 *             clibscamperctrl.scamper_task_free(self._c)
*/

  /* function exit code */
}

/* "scamper.pyx":10902
 *             clibscamperctrl.scamper_task_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperTask):
 *             return NotImplemented
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTask_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op); /*proto*/
static PyObject *__pyx_pw_7scamper_11ScamperTask_5__richcmp__(PyObject *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__richcmp__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTask_4__richcmp__(((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_self), ((PyObject *)__pyx_v_other), ((int)__pyx_v_op));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTask_4__richcmp__(struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self, PyObject *__pyx_v_other, int __pyx_v_op) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __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("__richcmp__", 0);

  /* "scamper.pyx":10903
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperTask):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         if op == Py_EQ:
*/
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_mstate_global->__pyx_ptype_7scamper_ScamperTask); 
  __pyx_t_2 = (!__pyx_t_1);
  if (__pyx_t_2) {

    /* "scamper.pyx":10904
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperTask):
 *             return NotImplemented             # <<<<<<<<<<<<<<
 *         if op == Py_EQ:
 *             return self._c == (<ScamperTask>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_builtin_NotImplemented);
    __pyx_r = __pyx_builtin_NotImplemented;
    goto __pyx_L0;

    /* "scamper.pyx":10903
 * 
 *     def __richcmp__(self, other, int op):
 *         if not isinstance(other, ScamperTask):             # <<<<<<<<<<<<<<
 *             return NotImplemented
 *         if op == Py_EQ:
*/
  }

  /* "scamper.pyx":10905
 *         if not isinstance(other, ScamperTask):
 *             return NotImplemented
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return self._c == (<ScamperTask>other)._c
 *         if op == Py_NE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_EQ);
  if (__pyx_t_2) {

    /* "scamper.pyx":10906
 *             return NotImplemented
 *         if op == Py_EQ:
 *             return self._c == (<ScamperTask>other)._c             # <<<<<<<<<<<<<<
 *         if op == Py_NE:
 *             return self._c != (<ScamperTask>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c == ((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10906, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10905
 *         if not isinstance(other, ScamperTask):
 *             return NotImplemented
 *         if op == Py_EQ:             # <<<<<<<<<<<<<<
 *             return self._c == (<ScamperTask>other)._c
 *         if op == Py_NE:
*/
  }

  /* "scamper.pyx":10907
 *         if op == Py_EQ:
 *             return self._c == (<ScamperTask>other)._c
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return self._c != (<ScamperTask>other)._c
 *         if op == Py_LT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_NE);
  if (__pyx_t_2) {

    /* "scamper.pyx":10908
 *             return self._c == (<ScamperTask>other)._c
 *         if op == Py_NE:
 *             return self._c != (<ScamperTask>other)._c             # <<<<<<<<<<<<<<
 *         if op == Py_LT:
 *             return self._c < (<ScamperTask>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c != ((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10908, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10907
 *         if op == Py_EQ:
 *             return self._c == (<ScamperTask>other)._c
 *         if op == Py_NE:             # <<<<<<<<<<<<<<
 *             return self._c != (<ScamperTask>other)._c
 *         if op == Py_LT:
*/
  }

  /* "scamper.pyx":10909
 *         if op == Py_NE:
 *             return self._c != (<ScamperTask>other)._c
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return self._c < (<ScamperTask>other)._c
 *         if op == Py_LE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LT);
  if (__pyx_t_2) {

    /* "scamper.pyx":10910
 *             return self._c != (<ScamperTask>other)._c
 *         if op == Py_LT:
 *             return self._c < (<ScamperTask>other)._c             # <<<<<<<<<<<<<<
 *         if op == Py_LE:
 *             return self._c <= (<ScamperTask>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c < ((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10910, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10909
 *         if op == Py_NE:
 *             return self._c != (<ScamperTask>other)._c
 *         if op == Py_LT:             # <<<<<<<<<<<<<<
 *             return self._c < (<ScamperTask>other)._c
 *         if op == Py_LE:
*/
  }

  /* "scamper.pyx":10911
 *         if op == Py_LT:
 *             return self._c < (<ScamperTask>other)._c
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return self._c <= (<ScamperTask>other)._c
 *         if op == Py_GT:
*/
  __pyx_t_2 = (__pyx_v_op == Py_LE);
  if (__pyx_t_2) {

    /* "scamper.pyx":10912
 *             return self._c < (<ScamperTask>other)._c
 *         if op == Py_LE:
 *             return self._c <= (<ScamperTask>other)._c             # <<<<<<<<<<<<<<
 *         if op == Py_GT:
 *             return self._c > (<ScamperTask>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c <= ((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10912, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10911
 *         if op == Py_LT:
 *             return self._c < (<ScamperTask>other)._c
 *         if op == Py_LE:             # <<<<<<<<<<<<<<
 *             return self._c <= (<ScamperTask>other)._c
 *         if op == Py_GT:
*/
  }

  /* "scamper.pyx":10913
 *         if op == Py_LE:
 *             return self._c <= (<ScamperTask>other)._c
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return self._c > (<ScamperTask>other)._c
 *         if op == Py_GE:
*/
  __pyx_t_2 = (__pyx_v_op == Py_GT);
  if (__pyx_t_2) {

    /* "scamper.pyx":10914
 *             return self._c <= (<ScamperTask>other)._c
 *         if op == Py_GT:
 *             return self._c > (<ScamperTask>other)._c             # <<<<<<<<<<<<<<
 *         if op == Py_GE:
 *             return self._c >= (<ScamperTask>other)._c
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c > ((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10914, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10913
 *         if op == Py_LE:
 *             return self._c <= (<ScamperTask>other)._c
 *         if op == Py_GT:             # <<<<<<<<<<<<<<
 *             return self._c > (<ScamperTask>other)._c
 *         if op == Py_GE:
*/
  }

  /* "scamper.pyx":10915
 *         if op == Py_GT:
 *             return self._c > (<ScamperTask>other)._c
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return self._c >= (<ScamperTask>other)._c
 *         return NotImplemented
*/
  __pyx_t_2 = (__pyx_v_op == Py_GE);
  if (__pyx_t_2) {

    /* "scamper.pyx":10916
 *             return self._c > (<ScamperTask>other)._c
 *         if op == Py_GE:
 *             return self._c >= (<ScamperTask>other)._c             # <<<<<<<<<<<<<<
 *         return NotImplemented
 * 
*/
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyBool_FromLong((__pyx_v_self->_c >= ((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_other)->_c)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10916, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;

    /* "scamper.pyx":10915
 *         if op == Py_GT:
 *             return self._c > (<ScamperTask>other)._c
 *         if op == Py_GE:             # <<<<<<<<<<<<<<
 *             return self._c >= (<ScamperTask>other)._c
 *         return NotImplemented
*/
  }

  /* "scamper.pyx":10917
 *         if op == Py_GE:
 *             return self._c >= (<ScamperTask>other)._c
 *         return NotImplemented             # <<<<<<<<<<<<<<
 * 
 *     def __hash__(self):
*/
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_builtin_NotImplemented);
  __pyx_r = __pyx_builtin_NotImplemented;
  goto __pyx_L0;

  /* "scamper.pyx":10902
 *             clibscamperctrl.scamper_task_free(self._c)
 * 
 *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
 *         if not isinstance(other, ScamperTask):
 *             return NotImplemented
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("scamper.ScamperTask.__richcmp__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10919
 *         return NotImplemented
 * 
 *     def __hash__(self):             # <<<<<<<<<<<<<<
 *         return hash((<Py_ssize_t>self._c))
 * 
*/

/* Python wrapper */
static Py_hash_t __pyx_pw_7scamper_11ScamperTask_7__hash__(PyObject *__pyx_v_self); /*proto*/
static Py_hash_t __pyx_pw_7scamper_11ScamperTask_7__hash__(PyObject *__pyx_v_self) {
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  Py_hash_t __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__hash__ (wrapper)", 0);
  __pyx_kwvalues = __Pyx_KwValues_VARARGS(__pyx_args, __pyx_nargs);
  __pyx_r = __pyx_pf_7scamper_11ScamperTask_6__hash__(((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static Py_hash_t __pyx_pf_7scamper_11ScamperTask_6__hash__(struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self) {
  Py_hash_t __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_hash_t __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__hash__", 0);

  /* "scamper.pyx":10920
 * 
 *     def __hash__(self):
 *         return hash((<Py_ssize_t>self._c))             # <<<<<<<<<<<<<<
 * 
 *     @staticmethod
*/
  __pyx_t_1 = PyLong_FromSsize_t(((Py_ssize_t)__pyx_v_self->_c)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10920, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(0, 10920, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  goto __pyx_L0;

  /* "scamper.pyx":10919
 *         return NotImplemented
 * 
 *     def __hash__(self):             # <<<<<<<<<<<<<<
 *         return hash((<Py_ssize_t>self._c))
 * 
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTask.__hash__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  if (unlikely(__pyx_r == -1) && !PyErr_Occurred()) __pyx_r = -2;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10922
 *         return hash((<Py_ssize_t>self._c))
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTask from_ptr(clibscamperctrl.scamper_task_t *ptr,
 *                               clibscamperctrl.scamper_inst_t *inst):
*/

static struct __pyx_obj_7scamper_ScamperTask *__pyx_f_7scamper_11ScamperTask_from_ptr(scamper_task_t *__pyx_v_ptr, scamper_inst_t *__pyx_v_inst) {
  struct __pyx_obj_7scamper_ScamperTask *__pyx_v_task = 0;
  struct __pyx_obj_7scamper_ScamperTask *__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("from_ptr", 0);

  /* "scamper.pyx":10925
 *     cdef ScamperTask from_ptr(clibscamperctrl.scamper_task_t *ptr,
 *                               clibscamperctrl.scamper_inst_t *inst):
 *         cdef ScamperTask task = ScamperTask.__new__(ScamperTask)             # <<<<<<<<<<<<<<
 *         clibscamperctrl.scamper_task_param_set(ptr, <PyObject *>task)
 *         task._c = clibscamperctrl.scamper_task_use(ptr)
*/
  __pyx_t_1 = ((PyObject *)__pyx_tp_new_7scamper_ScamperTask(((PyTypeObject *)__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTask), __pyx_mstate_global->__pyx_empty_tuple, NULL)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 10925, __pyx_L1_error)
  __Pyx_GOTREF((PyObject *)__pyx_t_1);
  __pyx_v_task = ((struct __pyx_obj_7scamper_ScamperTask *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "scamper.pyx":10926
 *                               clibscamperctrl.scamper_inst_t *inst):
 *         cdef ScamperTask task = ScamperTask.__new__(ScamperTask)
 *         clibscamperctrl.scamper_task_param_set(ptr, <PyObject *>task)             # <<<<<<<<<<<<<<
 *         task._c = clibscamperctrl.scamper_task_use(ptr)
 *         task._c_i = inst
*/
  scamper_task_param_set(__pyx_v_ptr, ((PyObject *)__pyx_v_task));

  /* "scamper.pyx":10927
 *         cdef ScamperTask task = ScamperTask.__new__(ScamperTask)
 *         clibscamperctrl.scamper_task_param_set(ptr, <PyObject *>task)
 *         task._c = clibscamperctrl.scamper_task_use(ptr)             # <<<<<<<<<<<<<<
 *         task._c_i = inst
 *         return task
*/
  __pyx_v_task->_c = scamper_task_use(__pyx_v_ptr);

  /* "scamper.pyx":10928
 *         clibscamperctrl.scamper_task_param_set(ptr, <PyObject *>task)
 *         task._c = clibscamperctrl.scamper_task_use(ptr)
 *         task._c_i = inst             # <<<<<<<<<<<<<<
 *         return task
 * 
*/
  __pyx_v_task->_c_i = __pyx_v_inst;

  /* "scamper.pyx":10929
 *         task._c = clibscamperctrl.scamper_task_use(ptr)
 *         task._c_i = inst
 *         return task             # <<<<<<<<<<<<<<
 * 
 *     def halt(self):
*/
  __Pyx_XDECREF((PyObject *)__pyx_r);
  __Pyx_INCREF((PyObject *)__pyx_v_task);
  __pyx_r = __pyx_v_task;
  goto __pyx_L0;

  /* "scamper.pyx":10922
 *         return hash((<Py_ssize_t>self._c))
 * 
 *     @staticmethod             # <<<<<<<<<<<<<<
 *     cdef ScamperTask from_ptr(clibscamperctrl.scamper_task_t *ptr,
 *                               clibscamperctrl.scamper_inst_t *inst):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("scamper.ScamperTask.from_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_task);
  __Pyx_XGIVEREF((PyObject *)__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "scamper.pyx":10931
 *         return task
 * 
 *     def halt(self):             # <<<<<<<<<<<<<<
 *         """
 *         halt a measurement underway
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTask_9halt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
PyDoc_STRVAR(__pyx_doc_7scamper_11ScamperTask_8halt, "\n        halt a measurement underway\n        ");
static PyMethodDef __pyx_mdef_7scamper_11ScamperTask_9halt = {"halt", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTask_9halt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperTask_8halt};
static PyObject *__pyx_pw_7scamper_11ScamperTask_9halt(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("halt (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("halt", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("halt", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperTask_8halt(((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTask_8halt(struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("halt", 0);

  /* "scamper.pyx":10935
 *         halt a measurement underway
 *         """
 *         clibscamperctrl.scamper_task_halt(self._c)             # <<<<<<<<<<<<<<
*/
  (void)(scamper_task_halt(__pyx_v_self->_c));

  /* "scamper.pyx":10931
 *         return task
 * 
 *     def halt(self):             # <<<<<<<<<<<<<<
 *         """
 *         halt a measurement underway
*/

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTask_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperTask_11__reduce_cython__ = {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTask_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperTask_11__reduce_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__reduce_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  if (unlikely(__pyx_nargs > 0)) { __Pyx_RaiseArgtupleInvalid("__reduce_cython__", 1, 0, 0, __pyx_nargs); return NULL; }
  const Py_ssize_t __pyx_kwds_len = unlikely(__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
  if (unlikely(__pyx_kwds_len < 0)) return NULL;
  if (unlikely(__pyx_kwds_len > 0)) {__Pyx_RejectKeywords("__reduce_cython__", __pyx_kwds); return NULL;}
  __pyx_r = __pyx_pf_7scamper_11ScamperTask_10__reduce_cython__(((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTask_10__reduce_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__reduce_cython__", 0);

  /* "(tree fragment)":2
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_self__c_i_cannot_be_conv, 0, 0);
  __PYX_ERR(1, 2, __pyx_L1_error)

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTask.__reduce_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
*/

/* Python wrapper */
static PyObject *__pyx_pw_7scamper_11ScamperTask_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
); /*proto*/
static PyMethodDef __pyx_mdef_7scamper_11ScamperTask_13__setstate_cython__ = {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTask_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0};
static PyObject *__pyx_pw_7scamper_11ScamperTask_13__setstate_cython__(PyObject *__pyx_v_self, 
#if CYTHON_METH_FASTCALL
PyObject *const *__pyx_args, Py_ssize_t __pyx_nargs, PyObject *__pyx_kwds
#else
PyObject *__pyx_args, PyObject *__pyx_kwds
#endif
) {
  CYTHON_UNUSED PyObject *__pyx_v___pyx_state = 0;
  #if !CYTHON_METH_FASTCALL
  CYTHON_UNUSED Py_ssize_t __pyx_nargs;
  #endif
  CYTHON_UNUSED PyObject *const *__pyx_kwvalues;
  PyObject* values[1] = {0};
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__setstate_cython__ (wrapper)", 0);
  #if !CYTHON_METH_FASTCALL
  #if CYTHON_ASSUME_SAFE_SIZE
  __pyx_nargs = PyTuple_GET_SIZE(__pyx_args);
  #else
  __pyx_nargs = PyTuple_Size(__pyx_args); if (unlikely(__pyx_nargs < 0)) return NULL;
  #endif
  #endif
  __pyx_kwvalues = __Pyx_KwValues_FASTCALL(__pyx_args, __pyx_nargs);
  {
    PyObject ** const __pyx_pyargnames[] = {&__pyx_mstate_global->__pyx_n_u_pyx_state,0};
    const Py_ssize_t __pyx_kwds_len = (__pyx_kwds) ? __Pyx_NumKwargs_FASTCALL(__pyx_kwds) : 0;
    if (unlikely(__pyx_kwds_len) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
    if (__pyx_kwds_len > 0) {
      switch (__pyx_nargs) {
        case  1:
        values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
        if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
        CYTHON_FALLTHROUGH;
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      const Py_ssize_t kwd_pos_args = __pyx_nargs;
      if (__Pyx_ParseKeywords(__pyx_kwds, __pyx_kwvalues, __pyx_pyargnames, 0, values, kwd_pos_args, __pyx_kwds_len, "__setstate_cython__", 0) < 0) __PYX_ERR(1, 3, __pyx_L3_error)
      for (Py_ssize_t i = __pyx_nargs; i < 1; i++) {
        if (unlikely(!values[i])) { __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, i); __PYX_ERR(1, 3, __pyx_L3_error) }
      }
    } else if (unlikely(__pyx_nargs != 1)) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = __Pyx_ArgRef_FASTCALL(__pyx_args, 0);
      if (!CYTHON_ASSUME_SAFE_MACROS && unlikely(!values[0])) __PYX_ERR(1, 3, __pyx_L3_error)
    }
    __pyx_v___pyx_state = values[0];
  }
  goto __pyx_L6_skip;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__setstate_cython__", 1, 1, 1, __pyx_nargs); __PYX_ERR(1, 3, __pyx_L3_error)
  __pyx_L6_skip:;
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_AddTraceback("scamper.ScamperTask.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_7scamper_11ScamperTask_12__setstate_cython__(((struct __pyx_obj_7scamper_ScamperTask *)__pyx_v_self), __pyx_v___pyx_state);

  /* function exit code */
  for (Py_ssize_t __pyx_temp=0; __pyx_temp < (Py_ssize_t)(sizeof(values)/sizeof(values[0])); ++__pyx_temp) {
    Py_XDECREF(values[__pyx_temp]);
  }
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_7scamper_11ScamperTask_12__setstate_cython__(CYTHON_UNUSED struct __pyx_obj_7scamper_ScamperTask *__pyx_v_self, CYTHON_UNUSED PyObject *__pyx_v___pyx_state) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__setstate_cython__", 0);

  /* "(tree fragment)":4
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"             # <<<<<<<<<<<<<<
*/
  __Pyx_Raise(__pyx_builtin_TypeError, __pyx_mstate_global->__pyx_kp_u_self__c_self__c_i_cannot_be_conv, 0, 0);
  __PYX_ERR(1, 4, __pyx_L1_error)

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
*/

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_AddTraceback("scamper.ScamperTask.__setstate_cython__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
/* #### Code section: module_exttypes ### */
static struct __pyx_vtabstruct_7scamper_ScamperAddr __pyx_vtable_7scamper_ScamperAddr;

static PyObject *__pyx_tp_new_7scamper_ScamperAddr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperAddr *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperAddr *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperAddr;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperAddr(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperAddr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_11ScamperAddr_9__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_11ScamperAddr_packed(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperAddr_6packed_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperAddr[] = {
  {"__format__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_7__format__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"is_linklocal", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_15is_linklocal, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_14is_linklocal},
  {"is_rfc1918", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_17is_rfc1918, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_16is_rfc1918},
  {"is_unicast", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_19is_unicast, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_18is_unicast},
  {"is_6to4", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_21is_6to4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_20is_6to4},
  {"is_reserved", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_23is_reserved, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_22is_reserved},
  {"is_ipv4", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_25is_ipv4, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_24is_ipv4},
  {"is_ipv6", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_27is_ipv6, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperAddr_26is_ipv6},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_29__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperAddr_31__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperAddr[] = {
  {"packed", __pyx_getprop_7scamper_11ScamperAddr_packed, 0, PyDoc_STR("\n        get method to return a bytes object containing the address.\n\n        :returns: a bytes object containing the address\n        :rtype: bytes\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperAddr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperAddr},
  {Py_tp_repr, (void *)__pyx_pw_7scamper_11ScamperAddr_5__repr__},
  {Py_tp_hash, (void *)__pyx_pw_7scamper_11ScamperAddr_13__hash__},
  {Py_tp_str, (void *)__pyx_pw_7scamper_11ScamperAddr_3__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperAddr` is used by scamper to store and interpret different\n    address types.  This class implements __str__ to render strings of\n    :class:`ScamperAddr` objects, __repr__ to show the object, as well as\n    functions for sorting and hashing.\n\n    The constructor takes a single parameter, a string, which represents\n    an IPv4 or IPv6 address.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_7scamper_11ScamperAddr_11__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperAddr},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperAddr},
  {Py_tp_init, (void *)__pyx_pw_7scamper_11ScamperAddr_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperAddr},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperAddr_spec = {
  "scamper.ScamperAddr",
  sizeof(struct __pyx_obj_7scamper_ScamperAddr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperAddr_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperAddr = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperAddr", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperAddr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperAddr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_7scamper_11ScamperAddr_5__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  __pyx_pw_7scamper_11ScamperAddr_13__hash__, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_11ScamperAddr_3__str__, /*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*/
  PyDoc_STR("\n    :class:`ScamperAddr` is used by scamper to store and interpret different\n    address types.  This class implements __str__ to render strings of\n    :class:`ScamperAddr` objects, __repr__ to show the object, as well as\n    functions for sorting and hashing.\n\n    The constructor takes a single parameter, a string, which represents\n    an IPv4 or IPv6 address.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_7scamper_11ScamperAddr_11__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperAddr, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperAddr, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_11ScamperAddr_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperAddr, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperList __pyx_vtable_7scamper_ScamperList;

static PyObject *__pyx_tp_new_7scamper_ScamperList(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperList *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperList *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperList;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperList(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperList) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_11ScamperList_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_11ScamperList_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperList_2id_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperList_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperList_4name_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperList_descr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperList_5descr_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperList_monitor(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperList_7monitor_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperList[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperList_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperList_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperList[] = {
  {"id", __pyx_getprop_7scamper_11ScamperList_id, 0, PyDoc_STR("\n        get method to obtain the list's id\n\n        :returns: the ID number\n        :rtype: int\n        "), 0},
  {"name", __pyx_getprop_7scamper_11ScamperList_name, 0, PyDoc_STR("\n        get method to obtain the list's name\n\n        :returns: the list's name\n        :rtype: string\n        "), 0},
  {"descr", __pyx_getprop_7scamper_11ScamperList_descr, 0, PyDoc_STR("\n        get method to obtain the list's description\n\n        :returns: the list's description\n        :rtype: string\n        "), 0},
  {"monitor", __pyx_getprop_7scamper_11ScamperList_monitor, 0, PyDoc_STR("\n        get method to obtain the name of the monitor that scamper\n        processed this list on\n\n        :returns: the list's monitor\n        :rtype: string\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperList_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperList},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperList` is used by scamper to attach common meta-data to\n    a set of results collected by scamper.  This class implements\n    functions for sorting, and get methods to obtain list parameters.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_7scamper_11ScamperList_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperList},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperList},
  {Py_tp_init, (void *)__pyx_pw_7scamper_11ScamperList_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperList},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperList_spec = {
  "scamper.ScamperList",
  sizeof(struct __pyx_obj_7scamper_ScamperList),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperList_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperList = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperList", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperList), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperList, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperList` is used by scamper to attach common meta-data to\n    a set of results collected by scamper.  This class implements\n    functions for sorting, and get methods to obtain list parameters.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_7scamper_11ScamperList_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperList, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperList, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_11ScamperList_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperList, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperCycle __pyx_vtable_7scamper_ScamperCycle;

static PyObject *__pyx_tp_new_7scamper_ScamperCycle(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperCycle *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperCycle *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperCycle;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperCycle(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperCycle) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_12ScamperCycle_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_12ScamperCycle_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperCycle_2id_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperCycle_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperCycle_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperCycle_stop(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperCycle_4stop_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperCycle_hostname(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperCycle_8hostname_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperCycle[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperCycle_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperCycle_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperCycle[] = {
  {"id", __pyx_getprop_7scamper_12ScamperCycle_id, 0, PyDoc_STR("\n        get method to obtain the cycle's id\n\n        :returns: the ID number\n        :rtype: int\n        "), 0},
  {"start", __pyx_getprop_7scamper_12ScamperCycle_start, 0, PyDoc_STR("\n        get method to obtain the cycle's start time.\n\n        :returns: the start timestamp\n        :rtype: datetime\n        "), 0},
  {"stop", __pyx_getprop_7scamper_12ScamperCycle_stop, 0, PyDoc_STR("\n        get method to obtain the cycle's stop time.\n\n        :returns: the stop time\n        :rtype: datetime\n        "), 0},
  {"hostname", __pyx_getprop_7scamper_12ScamperCycle_hostname, 0, PyDoc_STR("\n        get method to obtain the hostname of the system that the cycle\n        was collected on at the time the cycle started.\n\n        :returns: the hostname\n        :rtype: string\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperCycle_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperCycle},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperCycle` is used by scamper to attach common meta-data to\n    a set of results collected with a :class:`ScamperList`.\n    This class implements functions for sorting, and get methods to obtain\n    cycle parameters.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_7scamper_12ScamperCycle_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperCycle},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperCycle},
  {Py_tp_init, (void *)__pyx_pw_7scamper_12ScamperCycle_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperCycle},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperCycle_spec = {
  "scamper.ScamperCycle",
  sizeof(struct __pyx_obj_7scamper_ScamperCycle),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperCycle_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperCycle = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperCycle", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperCycle), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperCycle, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperCycle` is used by scamper to attach common meta-data to\n    a set of results collected with a :class:`ScamperList`.\n    This class implements functions for sorting, and get methods to obtain\n    cycle parameters.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_7scamper_12ScamperCycle_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperCycle, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperCycle, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_12ScamperCycle_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperCycle, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperIcmpExt __pyx_vtable_7scamper_ScamperIcmpExt;

static PyObject *__pyx_tp_new_7scamper_ScamperIcmpExt(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperIcmpExt *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperIcmpExt *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperIcmpExt;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperIcmpExt(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperIcmpExt) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_14ScamperIcmpExt_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_14ScamperIcmpExt_mpls_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperIcmpExt_10mpls_count_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperIcmpExt[] = {
  {"is_mpls", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_7is_mpls, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_6is_mpls},
  {"mpls_lses", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_9mpls_lses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_8mpls_lses},
  {"mpls_lse", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_11mpls_lse, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_10mpls_lse},
  {"mpls_label", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_13mpls_label, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_12mpls_label},
  {"mpls_ttl", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_15mpls_ttl, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_14mpls_ttl},
  {"mpls_exp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_17mpls_exp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_16mpls_exp},
  {"mpls_s", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_19mpls_s, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperIcmpExt_18mpls_s},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_21__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperIcmpExt_23__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperIcmpExt[] = {
  {"mpls_count", __pyx_getprop_7scamper_14ScamperIcmpExt_mpls_count, 0, PyDoc_STR("\n        get method to find out the number of label stack entries\n\n        :returns: the number of label stack entries\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperIcmpExt_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperIcmpExt},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperIcmpExt` is used by scamper to store information for\n    a single ICMP extension.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_7scamper_14ScamperIcmpExt_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperIcmpExt},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperIcmpExt},
  {Py_tp_init, (void *)__pyx_pw_7scamper_14ScamperIcmpExt_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperIcmpExt},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperIcmpExt_spec = {
  "scamper.ScamperIcmpExt",
  sizeof(struct __pyx_obj_7scamper_ScamperIcmpExt),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperIcmpExt_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperIcmpExt = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperIcmpExt", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperIcmpExt), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperIcmpExt, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperIcmpExt` is used by scamper to store information for\n    a single ICMP extension.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_7scamper_14ScamperIcmpExt_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperIcmpExt, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperIcmpExt, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_14ScamperIcmpExt_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperIcmpExt, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperIcmpExts __pyx_vtable_7scamper_ScamperIcmpExts;

static PyObject *__pyx_tp_new_7scamper_ScamperIcmpExts(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperIcmpExts *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperIcmpExts *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperIcmpExts;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperIcmpExts(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperIcmpExts) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_15ScamperIcmpExts_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_15ScamperIcmpExts_mpls(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperIcmpExts_4mpls_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperIcmpExts[] = {
  {"ext_count", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperIcmpExts_7ext_count, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"ext", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperIcmpExts_9ext, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperIcmpExts_8ext},
  {"exts", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperIcmpExts_11exts, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperIcmpExts_10exts},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperIcmpExts_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperIcmpExts_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperIcmpExts[] = {
  {"mpls", __pyx_getprop_7scamper_15ScamperIcmpExts_mpls, 0, PyDoc_STR("\n        get method to obtain the first MPLS extension in an ICMP extension\n        structure, if one exists.\n\n        :returns: the first MPLS extension in the container\n        :rtype: ScamperIcmpExt\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperIcmpExts_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperIcmpExts},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperIcmpExts` is used by scamper to store information from\n    an ICMP extensions container object.  This class implements functions\n    for sorting.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_7scamper_15ScamperIcmpExts_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperIcmpExts},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperIcmpExts},
  {Py_tp_init, (void *)__pyx_pw_7scamper_15ScamperIcmpExts_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperIcmpExts},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperIcmpExts_spec = {
  "scamper.ScamperIcmpExts",
  sizeof(struct __pyx_obj_7scamper_ScamperIcmpExts),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperIcmpExts_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperIcmpExts = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperIcmpExts", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperIcmpExts), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperIcmpExts, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperIcmpExts` is used by scamper to store information from\n    an ICMP extensions container object.  This class implements functions\n    for sorting.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_7scamper_15ScamperIcmpExts_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperIcmpExts, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperIcmpExts, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_15ScamperIcmpExts_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperIcmpExts, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTraceHop __pyx_vtable_7scamper_ScamperTraceHop;

static PyObject *__pyx_tp_new_7scamper_ScamperTraceHop(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTraceHop *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTraceHop *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTraceHop;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTraceHop(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTraceHop) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_15ScamperTraceHop_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_4name_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_tx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_2tx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_rtt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_3rtt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_attempt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_7attempt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_probe_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_9probe_ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_probe_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_10probe_size_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_reply_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_9reply_ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_reply_tos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_9reply_tos_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_icmp_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_9icmp_type_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_icmp_code(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_9icmp_code_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_reply_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_10reply_size_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_reply_ipid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_10reply_ipid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_icmp_nhmtu(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_10icmp_nhmtu_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_icmp_q_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_10icmp_q_ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_icmp_q_tos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_10icmp_q_tos_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_icmp_q_ipl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_10icmp_q_ipl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_tcp_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_9tcp_flags_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperTraceHop_icmp_exts(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperTraceHop_9icmp_exts_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperTraceHop[] = {
  {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_7is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_6is_tcp},
  {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_9is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_8is_icmp},
  {"is_icmp_q", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_11is_icmp_q, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_10is_icmp_q},
  {"is_icmp_unreach_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_13is_icmp_unreach_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_12is_icmp_unreach_port},
  {"is_icmp_echo_reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_15is_icmp_echo_reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_14is_icmp_echo_reply},
  {"is_icmp_ttl_exp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_17is_icmp_ttl_exp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_16is_icmp_ttl_exp},
  {"is_icmp_ptb", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_19is_icmp_ptb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperTraceHop_18is_icmp_ptb},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_21__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperTraceHop_23__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTraceHop[] = {
  {"src", __pyx_getprop_7scamper_15ScamperTraceHop_src, 0, PyDoc_STR("\n        get method to obtain the source address observed for this hop\n\n        :returns: the address object\n        :rtype: ScamperAddr\n        "), 0},
  {"name", __pyx_getprop_7scamper_15ScamperTraceHop_name, 0, PyDoc_STR("\n        get method to obtain the name in a DNS PTR record for the hop's\n        address, if scamper looked up the name.\n\n        :returns: the name\n        :rtype: string\n        "), 0},
  {"tx", __pyx_getprop_7scamper_15ScamperTraceHop_tx, 0, PyDoc_STR("\n        get method to obtain the transmit time for the probe\n\n        :returns: a timestamp, or None if scamper did not record a timestamp\n        :rtype: datetime\n        "), 0},
  {"rtt", __pyx_getprop_7scamper_15ScamperTraceHop_rtt, 0, PyDoc_STR("\n        get method to obtain the round-trip-time for this response.\n\n        :returns: the round trip time\n        :rtype: timedelta\n        "), 0},
  {"attempt", __pyx_getprop_7scamper_15ScamperTraceHop_attempt, 0, PyDoc_STR("\n        get method to obtain the attempt number for the hop.  The first\n        attempt has a value of 1.\n\n        :returns: the attempt number\n        :rtype: int\n        "), 0},
  {"probe_ttl", __pyx_getprop_7scamper_15ScamperTraceHop_probe_ttl, 0, PyDoc_STR("\n        get method to obtain the probe's TTL value.\n\n        :returns: probe TTL\n        :rtype: int\n        "), 0},
  {"probe_size", __pyx_getprop_7scamper_15ScamperTraceHop_probe_size, 0, PyDoc_STR("\n        get method to obtain the size of the probe.\n\n        :returns: probe size\n        :rtype: int\n        "), 0},
  {"reply_ttl", __pyx_getprop_7scamper_15ScamperTraceHop_reply_ttl, 0, PyDoc_STR("\n        get method to obtain the TTL value in the IP header of the\n        response, if known.\n\n        :returns: reply TTL\n        :rtype: int\n        "), 0},
  {"reply_tos", __pyx_getprop_7scamper_15ScamperTraceHop_reply_tos, 0, PyDoc_STR("\n        get method to obtain the TOS value in the IP header of the\n        response, if known.\n\n        :returns: reply TOS\n        :rtype: int\n        "), 0},
  {"icmp_type", __pyx_getprop_7scamper_15ScamperTraceHop_icmp_type, 0, PyDoc_STR("\n        get method to obtain the ICMP type for the response, if the\n        response was an ICMP response.\n\n        :returns: ICMP type\n        :rtype: int\n        "), 0},
  {"icmp_code", __pyx_getprop_7scamper_15ScamperTraceHop_icmp_code, 0, PyDoc_STR("\n        get method to obtain the ICMP code for the response, if the\n        response was an ICMP response.\n\n        :returns: ICMP code\n        :rtype: int\n        "), 0},
  {"reply_size", __pyx_getprop_7scamper_15ScamperTraceHop_reply_size, 0, PyDoc_STR("\n        get method to obtain the size of the reply, if known.\n\n        :returns: reply size\n        :rtype: int\n        "), 0},
  {"reply_ipid", __pyx_getprop_7scamper_15ScamperTraceHop_reply_ipid, 0, PyDoc_STR("\n        get method to obtain the IPID value in the IPv4 header of the\n        response, if known.\n\n        :returns: reply IPID\n        :rtype: int\n        "), 0},
  {"icmp_nhmtu", __pyx_getprop_7scamper_15ScamperTraceHop_icmp_nhmtu, 0, PyDoc_STR("\n        get method to obtain the next-hop MTU value encoded in an\n        ICMP packet too big message\n\n        :returns: the next hop MTU value\n        :rtype: int\n        "), 0},
  {"icmp_q_ttl", __pyx_getprop_7scamper_15ScamperTraceHop_icmp_q_ttl, 0, PyDoc_STR("\n        get method to obtain the TTL value from the quoted IP packet in\n        the ICMP response.\n\n        :returns: the quoted TTL value\n        :rtype: int\n        "), 0},
  {"icmp_q_tos", __pyx_getprop_7scamper_15ScamperTraceHop_icmp_q_tos, 0, PyDoc_STR("\n        get method to obtain the TOS value from the quoted IP packet in\n        the ICMP response.\n\n        :returns: the quoted TOS value\n        :rtype: int\n        "), 0},
  {"icmp_q_ipl", __pyx_getprop_7scamper_15ScamperTraceHop_icmp_q_ipl, 0, PyDoc_STR("\n        get method to obtain the IP length value from the quoted IP packet\n        in the ICMP response.\n\n        :returns: the quoted IP length\n        :rtype: int\n        "), 0},
  {"tcp_flags", __pyx_getprop_7scamper_15ScamperTraceHop_tcp_flags, 0, PyDoc_STR("\n        get method to obtain the TCP flags of the TCP response.\n\n        :returns: the TCP flags\n        :rtype: int\n        "), 0},
  {"icmp_exts", __pyx_getprop_7scamper_15ScamperTraceHop_icmp_exts, 0, PyDoc_STR("\n        get method to obtain any ICMP extension structures, if present.\n\n        :returns: the ICMP extensions\n        :rtype: ScamperIcmpExts\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTraceHop_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTraceHop},
  {Py_tp_str, (void *)__pyx_pw_7scamper_15ScamperTraceHop_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTraceHop` is used by scamper to store information about a\n    traceroute response.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTraceHop},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTraceHop},
  {Py_tp_init, (void *)__pyx_pw_7scamper_15ScamperTraceHop_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTraceHop},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTraceHop_spec = {
  "scamper.ScamperTraceHop",
  sizeof(struct __pyx_obj_7scamper_ScamperTraceHop),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperTraceHop_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTraceHop = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTraceHop", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTraceHop), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTraceHop, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_15ScamperTraceHop_5__str__, /*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*/
  PyDoc_STR("\n    :class:`ScamperTraceHop` is used by scamper to store information about a\n    traceroute response.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTraceHop, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTraceHop, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_15ScamperTraceHop_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTraceHop, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTracePmtudNote __pyx_vtable_7scamper_ScamperTracePmtudNote;

static PyObject *__pyx_tp_new_7scamper_ScamperTracePmtudNote(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTracePmtudNote *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTracePmtudNote *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTracePmtudNote;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTracePmtudNote(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTracePmtudNote) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_21ScamperTracePmtudNote_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_21ScamperTracePmtudNote_type_str(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_21ScamperTracePmtudNote_8type_str_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_21ScamperTracePmtudNote_nhmtu(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_21ScamperTracePmtudNote_5nhmtu_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_21ScamperTracePmtudNote_distance(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_21ScamperTracePmtudNote_8distance_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperTracePmtudNote[] = {
  {"hop", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_21ScamperTracePmtudNote_5hop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_21ScamperTracePmtudNote_4hop},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_21ScamperTracePmtudNote_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_21ScamperTracePmtudNote_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTracePmtudNote[] = {
  {"type_str", __pyx_getprop_7scamper_21ScamperTracePmtudNote_type_str, 0, PyDoc_STR("\n        method to obtain the type of this PMTUD note\n\n        :returns: the type (ptb, ptb-bad, or silent)\n        :rtype: string\n        "), 0},
  {"nhmtu", __pyx_getprop_7scamper_21ScamperTracePmtudNote_nhmtu, 0, PyDoc_STR("\n        method to obtain the MTU to the next hop.\n\n        :returns: the MTU to the next hop\n        :rtype: int\n        "), 0},
  {"distance", __pyx_getprop_7scamper_21ScamperTracePmtudNote_distance, 0, PyDoc_STR("\n        method to obtain the distance into the path where the note\n        applies.  a distance of zero means the note applies to the\n        system conducting the measurement.\n\n        :returns: the distance\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTracePmtudNote_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTracePmtudNote},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTracePmtudNote` is used by scamper to store information\n    about a path MTU inference on a path.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTracePmtudNote},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTracePmtudNote},
  {Py_tp_init, (void *)__pyx_pw_7scamper_21ScamperTracePmtudNote_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTracePmtudNote},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTracePmtudNote_spec = {
  "scamper.ScamperTracePmtudNote",
  sizeof(struct __pyx_obj_7scamper_ScamperTracePmtudNote),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperTracePmtudNote_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTracePmtudNote = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTracePmtudNote", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTracePmtudNote), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTracePmtudNote, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperTracePmtudNote` is used by scamper to store information\n    about a path MTU inference on a path.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTracePmtudNote, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTracePmtudNote, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_21ScamperTracePmtudNote_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTracePmtudNote, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTracePmtud __pyx_vtable_7scamper_ScamperTracePmtud;

static PyObject *__pyx_tp_new_7scamper_ScamperTracePmtud(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTracePmtud *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTracePmtud *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTracePmtud;
  p->_trace = ((struct __pyx_obj_7scamper_ScamperTrace *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTracePmtud(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperTracePmtud *p = (struct __pyx_obj_7scamper_ScamperTracePmtud *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTracePmtud) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_17ScamperTracePmtud_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_trace);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperTracePmtud(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperTracePmtud *p = (struct __pyx_obj_7scamper_ScamperTracePmtud *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_trace) {
    e = (*v)(((PyObject *)p->_trace), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperTracePmtud(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperTracePmtud *p = (struct __pyx_obj_7scamper_ScamperTracePmtud *)o;
  tmp = ((PyObject*)p->_trace);
  p->_trace = ((struct __pyx_obj_7scamper_ScamperTrace *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_17ScamperTracePmtud_path_mtu(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_17ScamperTracePmtud_8path_mtu_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_17ScamperTracePmtud_if_mtu(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_17ScamperTracePmtud_6if_mtu_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_17ScamperTracePmtud_out_mtu(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_17ScamperTracePmtud_7out_mtu_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperTracePmtud[] = {
  {"notes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_17ScamperTracePmtud_5notes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_17ScamperTracePmtud_4notes},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_17ScamperTracePmtud_8__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_17ScamperTracePmtud_10__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTracePmtud[] = {
  {"path_mtu", __pyx_getprop_7scamper_17ScamperTracePmtud_path_mtu, 0, PyDoc_STR("\n        get method to obtain the end-to-end path MTU\n\n        :returns: the path MTU\n        :rtype: int\n        "), 0},
  {"if_mtu", __pyx_getprop_7scamper_17ScamperTracePmtud_if_mtu, 0, PyDoc_STR("\n        get method to obtain the MTU of the interface to probe\n\n        :returns: the interface MTU\n        :rtype: int\n        "), 0},
  {"out_mtu", __pyx_getprop_7scamper_17ScamperTracePmtud_out_mtu, 0, PyDoc_STR("\n        get method to obtain the MTU to the first hop\n\n        :returns: MTU to first hop, could be different to the interface MTU\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTracePmtud_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTracePmtud},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTracePmtud` is used by scamper to store results from\n    a path MTU discovery measurement.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperTracePmtud},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperTracePmtud},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTracePmtud},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTracePmtud},
  {Py_tp_init, (void *)__pyx_pw_7scamper_17ScamperTracePmtud_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTracePmtud},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTracePmtud_spec = {
  "scamper.ScamperTracePmtud",
  sizeof(struct __pyx_obj_7scamper_ScamperTracePmtud),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperTracePmtud_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTracePmtud = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTracePmtud", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTracePmtud), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTracePmtud, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    :class:`ScamperTracePmtud` is used by scamper to store results from\n    a path MTU discovery measurement.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperTracePmtud, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperTracePmtud, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTracePmtud, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTracePmtud, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_17ScamperTracePmtud_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTracePmtud, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTrace __pyx_vtable_7scamper_ScamperTrace;

static PyObject *__pyx_tp_new_7scamper_ScamperTrace(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTrace *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTrace *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTrace;
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTrace(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperTrace *p = (struct __pyx_obj_7scamper_ScamperTrace *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTrace) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_12ScamperTrace_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperTrace(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperTrace *p = (struct __pyx_obj_7scamper_ScamperTrace *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperTrace(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperTrace *p = (struct __pyx_obj_7scamper_ScamperTrace *)o;
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_list(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_4list_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_cycle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_5cycle_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_userid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_6userid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_stop_reason(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_11stop_reason_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_stop_reason_str(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_15stop_reason_str_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_dst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_3dst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_rtr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_3rtr_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_hop_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_9hop_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_stop_hop(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_8stop_hop_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_attempts(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_8attempts_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_hoplimit(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_8hoplimit_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_squeries(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_8squeries_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_gaplimit(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_8gaplimit_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_gapaction(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_9gapaction_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_firsthop(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_8firsthop_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_tos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_3tos_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_wait_timeout(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_12wait_timeout_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_wait_probe(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_10wait_probe_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_confidence(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_10confidence_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_probe_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_10probe_size_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_payload(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_7payload_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_probe_sport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_11probe_sport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_probe_dport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_11probe_dport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_probe_icmp_sum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_14probe_icmp_sum_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_offset(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_6offset_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_probe_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_11probe_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace_pmtud(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_5pmtud_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperTrace__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperTrace_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_12ScamperTrace__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_12ScamperTrace_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_12ScamperTrace_5_inst_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7scamper_ScamperTrace[] = {
  {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_7to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_6to_json},
  {"hop", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_9hop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_8hop},
  {"hops", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_11hops, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_10hops},
  {"addrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_13addrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_12addrs},
  {"is_udp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_15is_udp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_14is_udp},
  {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_17is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_16is_tcp},
  {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_19is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_18is_icmp},
  {"is_stop_noreason", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_21is_stop_noreason, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_20is_stop_noreason},
  {"is_stop_completed", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_23is_stop_completed, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_22is_stop_completed},
  {"is_stop_unreach", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_25is_stop_unreach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_24is_stop_unreach},
  {"is_stop_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_27is_stop_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_26is_stop_icmp},
  {"is_stop_loop", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_29is_stop_loop, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_28is_stop_loop},
  {"is_stop_gaplimit", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_31is_stop_gaplimit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_30is_stop_gaplimit},
  {"is_stop_error", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_33is_stop_error, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_32is_stop_error},
  {"is_stop_hoplimit", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_35is_stop_hoplimit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_34is_stop_hoplimit},
  {"is_stop_gss", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_37is_stop_gss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_36is_stop_gss},
  {"is_stop_halted", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_39is_stop_halted, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperTrace_38is_stop_halted},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_41__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperTrace_43__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTrace[] = {
  {"inst", __pyx_getprop_7scamper_12ScamperTrace_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"list", __pyx_getprop_7scamper_12ScamperTrace_list, 0, PyDoc_STR("\n        get list associated with this measurement.\n\n        :returns: the list\n        :rtype: ScamperList\n        "), 0},
  {"cycle", __pyx_getprop_7scamper_12ScamperTrace_cycle, 0, PyDoc_STR("\n        get cycle associated with this measurement.\n\n        :returns: the cycle\n        :rtype: ScamperCycle\n        "), 0},
  {"userid", __pyx_getprop_7scamper_12ScamperTrace_userid, 0, PyDoc_STR("\n        get method to obtain the userid parameter.\n\n        :returns: the userid\n        :rtype: int\n        "), 0},
  {"start", __pyx_getprop_7scamper_12ScamperTrace_start, 0, PyDoc_STR("\n        get method to obtain the time this measurement started.\n\n        :returns: the start timestamp\n        :rtype: datetime\n        "), 0},
  {"stop_reason", __pyx_getprop_7scamper_12ScamperTrace_stop_reason, 0, PyDoc_STR("\n        get method to obtain the stop reason.\n\n        :returns: the stop reason\n        :rtype: ScamperTraceStop\n        "), 0},
  {"stop_reason_str", __pyx_getprop_7scamper_12ScamperTrace_stop_reason_str, 0, PyDoc_STR("\n        get method to obtain the stop reason, as a string.\n\n        :returns: the stop reason\n        :rtype: string\n        "), 0},
  {"src", __pyx_getprop_7scamper_12ScamperTrace_src, 0, PyDoc_STR("\n        get method to obtain the source address for a traceroute.\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"dst", __pyx_getprop_7scamper_12ScamperTrace_dst, 0, PyDoc_STR("\n        get method to obtain the destination address for a traceroute.\n\n        :returns: the destination address\n        :rtype: ScamperAddr\n        "), 0},
  {"rtr", __pyx_getprop_7scamper_12ScamperTrace_rtr, 0, PyDoc_STR("\n        get method to obtain the non-default router address through\n        which this traceroute went.\n\n        :returns: the non-default router's address\n        :rtype: ScamperAddr\n        "), 0},
  {"hop_count", __pyx_getprop_7scamper_12ScamperTrace_hop_count, 0, PyDoc_STR("\n        get method to obtain the number of hops that were probed in this\n        traceroute.\n\n        :returns: the number of hops\n        :rtype: int\n        "), 0},
  {"stop_hop", __pyx_getprop_7scamper_12ScamperTrace_stop_hop, 0, PyDoc_STR("\n        get method to obtain the number of hops in the path before the\n        traceroute could stop.\n\n        :returns: the stopping hop\n        :rtype: int\n        "), 0},
  {"attempts", __pyx_getprop_7scamper_12ScamperTrace_attempts, 0, PyDoc_STR("\n        get method to obtain the number of attempts per hop for\n        this traceroute.\n\n        :returns: the number of attempts per hop\n        :rtype: int\n        "), 0},
  {"hoplimit", __pyx_getprop_7scamper_12ScamperTrace_hoplimit, 0, PyDoc_STR("\n        get method to obtain the hop limit for this traceroute.\n\n        :returns: the hop limit for this traceroute\n        :rtype: int\n        "), 0},
  {"squeries", __pyx_getprop_7scamper_12ScamperTrace_squeries, 0, PyDoc_STR("\n        get method to obtain the number of consecutive hops that\n        could have been probed before waiting for a response.\n\n        :returns: the number of consecutive hops\n        :rtype: int\n        "), 0},
  {"gaplimit", __pyx_getprop_7scamper_12ScamperTrace_gaplimit, 0, PyDoc_STR("\n        get method to obtain the number of consecutiive unresponse\n        hops to probe before halting the traceroute.\n\n        :returns: the number of consecutive unresponsive hops\n        :rtype: int\n        "), 0},
  {"gapaction", __pyx_getprop_7scamper_12ScamperTrace_gapaction, 0, PyDoc_STR("\n        get method to obtain the action to take if the gaplimit\n        is reached.\n\n        :returns: an integer representing the gapaction.\n        :rtype: int\n        "), 0},
  {"firsthop", __pyx_getprop_7scamper_12ScamperTrace_firsthop, 0, PyDoc_STR("\n        get method to obtain the first hop this traceroute began\n        probing at.\n\n        :returns: the first hop probing began at.\n        :rtype: int\n        "), 0},
  {"tos", __pyx_getprop_7scamper_12ScamperTrace_tos, 0, PyDoc_STR("\n        get method to obtain the IP TOS byte used for this traceroute.\n\n        :returns: the IP TOS byte\n        :rtype: int\n        "), 0},
  {"wait_timeout", __pyx_getprop_7scamper_12ScamperTrace_wait_timeout, 0, PyDoc_STR("\n        get method to obtain the length of time to wait before declaring\n        a probe lost.\n\n        :returns: the timeout value\n        :rtype: timedelta\n        "), 0},
  {"wait_probe", __pyx_getprop_7scamper_12ScamperTrace_wait_probe, 0, PyDoc_STR("\n        get method to obtain the minimum time to wait between probes.\n\n        :returns: the minimum time to wait between probes\n        :rtype: timedelta\n        "), 0},
  {"confidence", __pyx_getprop_7scamper_12ScamperTrace_confidence, 0, PyDoc_STR("\n        get method to obtain the confidence parameter that guides the\n        number of attempts per hop before probing the next hop.\n\n        :returns: the confidence value used, or zero if no parameter\n        :rtype: int\n        "), 0},
  {"probe_size", __pyx_getprop_7scamper_12ScamperTrace_probe_size, 0, PyDoc_STR("\n        get method to obtain the probe size used for this traceroute.\n\n        :returns: the probe size used.\n        :rtype: int\n        "), 0},
  {"payload", __pyx_getprop_7scamper_12ScamperTrace_payload, 0, PyDoc_STR("\n        get method to obtain the payload used.\n\n        :returns: payload\n        :rtype: bytes\n        "), 0},
  {"probe_sport", __pyx_getprop_7scamper_12ScamperTrace_probe_sport, 0, PyDoc_STR("\n        get method to obtain the (base) source port used for this\n        traceroute, if the traceroute used TCP or UDP probes.\n\n        :returns: the (base) source port value used.\n        :rtype: int\n        "), 0},
  {"probe_dport", __pyx_getprop_7scamper_12ScamperTrace_probe_dport, 0, PyDoc_STR("\n        get method to obtain the (base) destination port used for this\n        traceroute, if the traceroute used TCP or UDP probes.\n\n        :returns: the (base) destination port value used.\n        :rtype: int\n        "), 0},
  {"probe_icmp_sum", __pyx_getprop_7scamper_12ScamperTrace_probe_icmp_sum, 0, PyDoc_STR("\n        get method to obtain the ICMP checksum value used in probes,\n        if the traceroute was an ICMP paris traceroute.\n\n        :returns: the checksum value used.\n        :rtype: int\n        "), 0},
  {"offset", __pyx_getprop_7scamper_12ScamperTrace_offset, 0, PyDoc_STR("\n        get method to obtain the IP offset value used in this traceroute.\n\n        :returns: the IP offset value used.\n        :rtype: int\n        "), 0},
  {"probe_count", __pyx_getprop_7scamper_12ScamperTrace_probe_count, 0, PyDoc_STR("\n        get method to obtain the total number of probes sent for this\n        traceroute.\n\n        :returns: the number of probes.\n        :rtype: int\n        "), 0},
  {"pmtud", __pyx_getprop_7scamper_12ScamperTrace_pmtud, 0, PyDoc_STR("\n        get method to obtain any path MTU information recorded for this\n        traceroute.\n\n        :returns: path MTU information.\n        :rtype: ScamperTracePmtud\n        "), 0},
  {"_inst", __pyx_getprop_7scamper_12ScamperTrace__inst, __pyx_setprop_7scamper_12ScamperTrace__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTrace_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTrace},
  {Py_tp_str, (void *)__pyx_pw_7scamper_12ScamperTrace_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTrace` is used by scamper to store results from a traceroute\n    measurement.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperTrace},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperTrace},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTrace},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTrace},
  {Py_tp_init, (void *)__pyx_pw_7scamper_12ScamperTrace_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTrace},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTrace_spec = {
  "scamper.ScamperTrace",
  sizeof(struct __pyx_obj_7scamper_ScamperTrace),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperTrace_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTrace = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTrace", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTrace), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTrace, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_12ScamperTrace_5__str__, /*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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    :class:`ScamperTrace` is used by scamper to store results from a traceroute\n    measurement.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperTrace, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperTrace, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTrace, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTrace, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_12ScamperTrace_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTrace, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperPingReply __pyx_vtable_7scamper_ScamperPingReply;

static PyObject *__pyx_tp_new_7scamper_ScamperPingReply(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperPingReply *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperPingReply *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperPingReply;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperPingReply(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperPingReply) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_16ScamperPingReply_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_tx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_2tx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_rtt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_3rtt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_rx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_2rx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_attempt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_7attempt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_probe_ipid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_10probe_ipid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_reply_proto(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_11reply_proto_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_reply_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_9reply_ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_reply_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_10reply_size_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_reply_ipid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_10reply_ipid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_icmp_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_9icmp_type_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_icmp_code(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_9icmp_code_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_icmp_nhmtu(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_10icmp_nhmtu_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_tcp_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_9tcp_flags_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperPingReply_ifname(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperPingReply_6ifname_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperPingReply[] = {
  {"is_from_target", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_7is_from_target, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_6is_from_target},
  {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_9is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_8is_icmp},
  {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_11is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_10is_tcp},
  {"is_udp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_13is_udp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_12is_udp},
  {"is_icmp_echo_reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_15is_icmp_echo_reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_14is_icmp_echo_reply},
  {"is_icmp_unreach", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_17is_icmp_unreach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_16is_icmp_unreach},
  {"is_icmp_unreach_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_19is_icmp_unreach_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_18is_icmp_unreach_port},
  {"is_icmp_ttl_exp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_21is_icmp_ttl_exp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_20is_icmp_ttl_exp},
  {"is_icmp_tsreply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_23is_icmp_tsreply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_22is_icmp_tsreply},
  {"is_icmp_ptb", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_25is_icmp_ptb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperPingReply_24is_icmp_ptb},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_27__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperPingReply_29__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperPingReply[] = {
  {"src", __pyx_getprop_7scamper_16ScamperPingReply_src, 0, PyDoc_STR("\n        get method to obtain the address the reply came from.\n\n        :returns: the address in the response, if any.\n        :rtype: ScamperAddr\n        "), 0},
  {"tx", __pyx_getprop_7scamper_16ScamperPingReply_tx, 0, PyDoc_STR("\n        get method to obtain the transit timestamp of the probe, if available.\n\n        :returns: the transmit time of the corresponding probe.\n        :rtype: datetime\n        "), 0},
  {"rtt", __pyx_getprop_7scamper_16ScamperPingReply_rtt, 0, PyDoc_STR("\n        get method to obtain the round-trip-time for this response.\n\n        :returns: the round trip time\n        :rtype: timedelta\n        "), 0},
  {"rx", __pyx_getprop_7scamper_16ScamperPingReply_rx, 0, PyDoc_STR("\n        get method to obtain the receive time for this response, if\n        available.\n\n        :returns: the receive time\n        :rtype: datetime\n        "), 0},
  {"attempt", __pyx_getprop_7scamper_16ScamperPingReply_attempt, 0, PyDoc_STR("\n        get method to obtain the attempt number for this probe.  The\n        first attempt has a value of 1.\n\n        :returns: the attempt number\n        :rtype: int\n        "), 0},
  {"probe_ipid", __pyx_getprop_7scamper_16ScamperPingReply_probe_ipid, 0, PyDoc_STR("\n        get method to obtain the IPID value set for this probe.\n\n        :returns: the IPID value\n        :rtype: int\n        "), 0},
  {"reply_proto", __pyx_getprop_7scamper_16ScamperPingReply_reply_proto, 0, PyDoc_STR("\n        get method to obtain the IP protocol for this reply.\n\n        :returns: the IP protocol value\n        :rtype: int\n        "), 0},
  {"reply_ttl", __pyx_getprop_7scamper_16ScamperPingReply_reply_ttl, 0, PyDoc_STR("\n        get method to obtain the IP TTL value for this reply.\n\n        :returns: the IP TTL value for this reply.\n        :rtype: int\n        "), 0},
  {"reply_size", __pyx_getprop_7scamper_16ScamperPingReply_reply_size, 0, PyDoc_STR("\n        get method to obtain the size of the reply.\n\n        :returns: the size of the reply.\n        :rtype: int\n        "), 0},
  {"reply_ipid", __pyx_getprop_7scamper_16ScamperPingReply_reply_ipid, 0, PyDoc_STR("\n        get method to obtain the IPID value in the reply, if available.\n\n        :returns: the IPID value in the reply.\n        :rtype: int\n        "), 0},
  {"icmp_type", __pyx_getprop_7scamper_16ScamperPingReply_icmp_type, 0, PyDoc_STR("\n        get method to obtain the ICMP type of the reply, if the\n        reply was an ICMP response.\n\n        :returns: the ICMP type.\n        :rtype: int\n        "), 0},
  {"icmp_code", __pyx_getprop_7scamper_16ScamperPingReply_icmp_code, 0, PyDoc_STR("\n        get method to obtain the ICMP code of the reply, if the\n        reply was an ICMP response.\n\n        :returns: the ICMP code.\n        :rtype: int\n        "), 0},
  {"icmp_nhmtu", __pyx_getprop_7scamper_16ScamperPingReply_icmp_nhmtu, 0, PyDoc_STR("\n        get method to obtain the next hop MTU value encoded in the reply,\n        if the reply was an ICMP packet too big message.\n\n        :returns: the next hop MTU value.\n        :rtype: int\n        "), 0},
  {"tcp_flags", __pyx_getprop_7scamper_16ScamperPingReply_tcp_flags, 0, PyDoc_STR("\n        get method to obtain the TCP flags of the reply, if the\n        reply was a TCP response.\n\n        :returns: the TCP flags.\n        :rtype: int\n        "), 0},
  {"ifname", __pyx_getprop_7scamper_16ScamperPingReply_ifname, 0, PyDoc_STR("\n        get method to obtain the name of the interface that received the\n        reply, if recorded.\n\n        :return: the name of the interface.\n        :rtype: string\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperPingReply_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperPingReply},
  {Py_tp_str, (void *)__pyx_pw_7scamper_16ScamperPingReply_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperPingReply` is used by scamper to store and interpret\n    individual ping replies.\n    This class implements __str__ to render strings of\n    :class:`ScamperPingReply` objects.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperPingReply},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperPingReply},
  {Py_tp_init, (void *)__pyx_pw_7scamper_16ScamperPingReply_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperPingReply},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperPingReply_spec = {
  "scamper.ScamperPingReply",
  sizeof(struct __pyx_obj_7scamper_ScamperPingReply),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperPingReply_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperPingReply = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperPingReply", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperPingReply), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperPingReply, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_16ScamperPingReply_5__str__, /*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*/
  PyDoc_STR("\n    :class:`ScamperPingReply` is used by scamper to store and interpret\n    individual ping replies.\n    This class implements __str__ to render strings of\n    :class:`ScamperPingReply` objects.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperPingReply, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperPingReply, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_16ScamperPingReply_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperPingReply, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperPing __pyx_vtable_7scamper_ScamperPing;

static PyObject *__pyx_tp_new_7scamper_ScamperPing(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperPing *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperPing *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperPing;
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperPing(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperPing *p = (struct __pyx_obj_7scamper_ScamperPing *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperPing) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_11ScamperPing_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperPing(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperPing *p = (struct __pyx_obj_7scamper_ScamperPing *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperPing(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperPing *p = (struct __pyx_obj_7scamper_ScamperPing *)o;
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_list(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_4list_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_cycle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_5cycle_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_dst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_3dst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_rtr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_3rtr_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_userid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_6userid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_attempts(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_8attempts_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_probe_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_10probe_size_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_payload(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_7payload_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_probe_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_9probe_ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_probe_tos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_9probe_tos_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_wait_timeout(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_12wait_timeout_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_wait_probe(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_10wait_probe_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_probe_sport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_11probe_sport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_probe_dport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_11probe_dport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_probe_icmp_sum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_14probe_icmp_sum_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_probe_tcp_seq(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_13probe_tcp_seq_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_probe_tcp_ack(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_13probe_tcp_ack_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_stop_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_10stop_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_reply_pmtu(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_10reply_pmtu_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_probe_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_11probe_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_nreplies(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_8nreplies_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_ndups(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_5ndups_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_nloss(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_5nloss_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_nerrs(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_5nerrs_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_min_rtt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_7min_rtt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_max_rtt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_7max_rtt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_avg_rtt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_7avg_rtt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing_stddev_rtt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_10stddev_rtt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperPing__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperPing_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperPing__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperPing_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_11ScamperPing_5_inst_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7scamper_ScamperPing[] = {
  {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_9to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_8to_json},
  {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_11is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_10is_icmp},
  {"is_icmp_time", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_13is_icmp_time, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_12is_icmp_time},
  {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_15is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_14is_tcp},
  {"is_tcp_ack_sport", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_17is_tcp_ack_sport, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_16is_tcp_ack_sport},
  {"is_udp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_19is_udp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_18is_udp},
  {"is_vary_sport", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_21is_vary_sport, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_20is_vary_sport},
  {"is_vary_dport", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_23is_vary_dport, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_22is_vary_dport},
  {"reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_25reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_24reply},
  {"replies", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_27replies, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperPing_26replies},
  {"_stats", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_29_stats, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_31__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperPing_33__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperPing[] = {
  {"inst", __pyx_getprop_7scamper_11ScamperPing_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"list", __pyx_getprop_7scamper_11ScamperPing_list, 0, PyDoc_STR("\n        get list associated with this measurement.\n\n        :returns: the list\n        :rtype: ScamperList\n        "), 0},
  {"cycle", __pyx_getprop_7scamper_11ScamperPing_cycle, 0, PyDoc_STR("\n        get cycle associated with this measurement.\n\n        :returns: the cycle\n        :rtype: ScamperCycle\n        "), 0},
  {"src", __pyx_getprop_7scamper_11ScamperPing_src, 0, PyDoc_STR("\n        get method to obtain the source address for a ping measurement.\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"dst", __pyx_getprop_7scamper_11ScamperPing_dst, 0, PyDoc_STR("\n        get method to obtain the destination address for ping measurement.\n\n        :returns: the destination address\n        :rtype: ScamperAddr\n        "), 0},
  {"rtr", __pyx_getprop_7scamper_11ScamperPing_rtr, 0, PyDoc_STR("\n        get method to obtain the non-default router address through\n        which this ping went.\n\n        :returns: the non-default router's address\n        :rtype: ScamperAddr\n        "), 0},
  {"userid", __pyx_getprop_7scamper_11ScamperPing_userid, 0, PyDoc_STR("\n        get method to obtain the userid parameter.\n\n        :returns: the userid\n        :rtype: int\n        "), 0},
  {"start", __pyx_getprop_7scamper_11ScamperPing_start, 0, PyDoc_STR("\n        get method to obtain the time this measurement started.\n\n        :returns: the start timestamp\n        :rtype: datetime\n        "), 0},
  {"attempts", __pyx_getprop_7scamper_11ScamperPing_attempts, 0, PyDoc_STR("\n        get method to obtain the maximum number of attempts for this\n        ping measurement.\n\n        :returns: the number of attempts.\n        :rtype: int\n        "), 0},
  {"probe_size", __pyx_getprop_7scamper_11ScamperPing_probe_size, 0, PyDoc_STR("\n        get method to obtain the size of the ping probes.\n\n        :returns: probe size\n        :rtype: int\n        "), 0},
  {"payload", __pyx_getprop_7scamper_11ScamperPing_payload, 0, PyDoc_STR("\n        get method to obtain the payload used.\n\n        :returns: payload\n        :rtype: bytes\n        "), 0},
  {"probe_ttl", __pyx_getprop_7scamper_11ScamperPing_probe_ttl, 0, PyDoc_STR("\n        get method to get the probe TTL value used in this ping measurement.\n\n        :returns: the probe TTL value\n        :rtype: int\n        "), 0},
  {"probe_tos", __pyx_getprop_7scamper_11ScamperPing_probe_tos, 0, PyDoc_STR("\n        get method to get the probe TOS value used in this ping measurement.\n\n        :returns: the probe TOS value\n        :rtype: int\n        "), 0},
  {"wait_timeout", __pyx_getprop_7scamper_11ScamperPing_wait_timeout, 0, PyDoc_STR("\n        get method to obtain the length of time to wait before declaring\n        a probe lost.\n\n        :returns: the timeout value\n        :rtype: timedelta\n        "), 0},
  {"wait_probe", __pyx_getprop_7scamper_11ScamperPing_wait_probe, 0, PyDoc_STR("\n        get method to obtain the minimum time to wait between probes.\n\n        :returns: the minimum time to wait between probes\n        :rtype: timedelta\n        "), 0},
  {"probe_sport", __pyx_getprop_7scamper_11ScamperPing_probe_sport, 0, PyDoc_STR("\n        get method to obtain the (base) source port used for this\n        ping measurement, if the ping used TCP or UDP probes.\n\n        :returns: the (base) source port value used.\n        :rtype: int\n        "), 0},
  {"probe_dport", __pyx_getprop_7scamper_11ScamperPing_probe_dport, 0, PyDoc_STR("\n        get method to obtain the (base) destination port used for this\n        ping measurement, if the ping used TCP or UDP probes.\n\n        :returns: the (base) destination port value used.\n        :rtype: int\n        "), 0},
  {"probe_icmp_sum", __pyx_getprop_7scamper_11ScamperPing_probe_icmp_sum, 0, PyDoc_STR("\n        get method to obtain the ICMP checksum value used for this\n        ping measurement, if the ping used ICMP probes.\n\n        :returns: the ICMP checksum\n        :rtype: int\n        "), 0},
  {"probe_tcp_seq", __pyx_getprop_7scamper_11ScamperPing_probe_tcp_seq, 0, PyDoc_STR("\n        get method to obtain the TCP sequence value used for this\n        ping measurement, if the ping used TCP probes.\n\n        :returns: the ICMP checksum\n        :rtype: int\n        "), 0},
  {"probe_tcp_ack", __pyx_getprop_7scamper_11ScamperPing_probe_tcp_ack, 0, PyDoc_STR("\n        get method to obtain the TCP acknowledgement value used for this\n        ping measurement, if the ping used TCP probes.\n\n        :returns: the ICMP checksum\n        :rtype: int\n        "), 0},
  {"stop_count", __pyx_getprop_7scamper_11ScamperPing_stop_count, 0, PyDoc_STR("\n        get method to obtain the number of replies required at which time\n        probing may cease.\n\n        :returns: the number of replies\n        :rtype: int\n        "), 0},
  {"reply_pmtu", __pyx_getprop_7scamper_11ScamperPing_reply_pmtu, 0, PyDoc_STR("\n        get method to obtain the pseudo-MTU value used for this ping,\n        if it used the too-big-trick.\n\n        :returns: the psuedo MTU value\n        :rtype: int\n        "), 0},
  {"probe_count", __pyx_getprop_7scamper_11ScamperPing_probe_count, 0, PyDoc_STR("\n        get method to obtain the total number of probes sent for this\n        measurement.\n\n        :returns: the number of probes.\n        :rtype: int\n        "), 0},
  {"nreplies", __pyx_getprop_7scamper_11ScamperPing_nreplies, 0, PyDoc_STR("\n        get method to obtain the number of probes for which scamper\n        received at least one reply from the destination.\n\n        :returns: the number of probes with replies\n        :rtype: int\n        "), 0},
  {"ndups", __pyx_getprop_7scamper_11ScamperPing_ndups, 0, PyDoc_STR("\n        get method to obtain the total number of additional replies\n        that scamper received from the destination.\n\n        :returns: the number of additional replies\n        :rtype: int\n        "), 0},
  {"nloss", __pyx_getprop_7scamper_11ScamperPing_nloss, 0, PyDoc_STR("\n        get method to obtain the number of probes for which scamper did not\n        receive any reply.\n\n        :returns: the number of packets with no reply\n        :rtype: int\n        "), 0},
  {"nerrs", __pyx_getprop_7scamper_11ScamperPing_nerrs, 0, PyDoc_STR("\n        get method to obtain the number of response packets that were not\n        from the destination.\n\n        :returns: the number of error packets received\n        :rtype: int\n        "), 0},
  {"min_rtt", __pyx_getprop_7scamper_11ScamperPing_min_rtt, 0, PyDoc_STR("\n        get method to obtain the minimum RTT for a response from the\n        destination.\n\n        :returns: the minimum RTT\n        :rtype: timedelta\n        "), 0},
  {"max_rtt", __pyx_getprop_7scamper_11ScamperPing_max_rtt, 0, PyDoc_STR("\n        get method to obtain the maximum RTT for a response from the\n        destination.\n\n        :returns: the maximum RTT\n        :rtype: timedelta\n        "), 0},
  {"avg_rtt", __pyx_getprop_7scamper_11ScamperPing_avg_rtt, 0, PyDoc_STR("\n        get method to obtain the average RTT for a response from the\n        destination.\n\n        :returns: the average RTT\n        :rtype: timedelta\n        "), 0},
  {"stddev_rtt", __pyx_getprop_7scamper_11ScamperPing_stddev_rtt, 0, PyDoc_STR("\n        get method to obtain the standard deviation for the RTTs for\n        responses from the destination.\n\n        :returns: the RTT standard deviation\n        :rtype: timedelta\n        "), 0},
  {"_inst", __pyx_getprop_7scamper_11ScamperPing__inst, __pyx_setprop_7scamper_11ScamperPing__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperPing_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperPing},
  {Py_tp_str, (void *)__pyx_pw_7scamper_11ScamperPing_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperPing` is used by scamper to store results from a ping\n    measurement.  The basic properties of the measurement are stored in\n    a :class:`ScamperPing` object, while the properties of individual\n    responses are stored in :class:`ScamperPingReply` objects.\n    The total number of probes sent can be found with :attr:`probe_count`.\n    Individual responses can be obtained using :meth:`reply`.\n\n    .. code-block::\n\n      print(\"ping from %s to %s\" % (ping.src, ping.dst))\n        for i in range(ping.probe_count):\n          r = ping.reply(i)\n          if r is None:\n            print(\"no reply for attempt %d\" % (i+1))\n          else:\n            print(\"reply from %s, attempt %d\" % (i+1))\n\n    To iterate over all probes with responses, use the iterator.\n\n    .. code-block::\n\n      print(\"ping from %s to %s\" % (ping.src, ping.dst))\n        for r in ping:\n          print(\"reply from %s, attempt %d\" % (r.src, r.attempt))\n\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperPing},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperPing},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_11ScamperPing_7__iter__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperPing},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperPing},
  {Py_tp_init, (void *)__pyx_pw_7scamper_11ScamperPing_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperPing},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperPing_spec = {
  "scamper.ScamperPing",
  sizeof(struct __pyx_obj_7scamper_ScamperPing),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperPing_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperPing = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperPing", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperPing), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperPing, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_11ScamperPing_5__str__, /*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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    :class:`ScamperPing` is used by scamper to store results from a ping\n    measurement.  The basic properties of the measurement are stored in\n    a :class:`ScamperPing` object, while the properties of individual\n    responses are stored in :class:`ScamperPingReply` objects.\n    The total number of probes sent can be found with :attr:`probe_count`.\n    Individual responses can be obtained using :meth:`reply`.\n\n    .. code-block::\n\n      print(\"ping from %s to %s\" % (ping.src, ping.dst))\n        for i in range(ping.probe_count):\n          r = ping.reply(i)\n          if r is None:\n            print(\"no reply for attempt %d\" % (i+1))\n          else:\n            print(\"reply from %s, attempt %d\" % (i+1))\n\n    To iterate over all probes with responses, use the iterator.\n\n    .. code-block::\n\n      print(\"ping from %s to %s\" % (ping.src, ping.dst))\n        for r in ping:\n          print(\"reply from %s, attempt %d\" % (r.src, r.attempt))\n\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperPing, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperPing, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_11ScamperPing_7__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperPing, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperPing, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_11ScamperPing_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperPing, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTracelbReply __pyx_vtable_7scamper_ScamperTracelbReply;

static PyObject *__pyx_tp_new_7scamper_ScamperTracelbReply(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTracelbReply *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTracelbReply *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTracelbReply;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTracelbReply(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTracelbReply) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_19ScamperTracelbReply_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbReply_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbReply_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbReply_rx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbReply_2rx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbReply_ipid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbReply_4ipid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbReply_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbReply_3ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbReply_icmp_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbReply_9icmp_type_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbReply_icmp_code(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbReply_9icmp_code_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbReply_icmp_q_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbReply_10icmp_q_ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbReply_icmp_q_tos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbReply_10icmp_q_tos_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbReply_tcp_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbReply_9tcp_flags_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbReply_icmp_exts(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbReply_9icmp_exts_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperTracelbReply[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperTracelbReply_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperTracelbReply_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTracelbReply[] = {
  {"src", __pyx_getprop_7scamper_19ScamperTracelbReply_src, 0, PyDoc_STR("\n        get method to obtain the source address of a reply\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"rx", __pyx_getprop_7scamper_19ScamperTracelbReply_rx, 0, PyDoc_STR("\n        get method that returns the time when a response was received.\n\n        :returns: the time the response was received.\n        :rtype: datetime\n        "), 0},
  {"ipid", __pyx_getprop_7scamper_19ScamperTracelbReply_ipid, 0, PyDoc_STR("\n        get method to obtain the IPID value in the reply, if available.\n\n        :returns: the IPID value in the reply.\n        :rtype: int\n        "), 0},
  {"ttl", __pyx_getprop_7scamper_19ScamperTracelbReply_ttl, 0, PyDoc_STR("\n        get method to obtain the TTL value in the IP header of the\n        response, if known.\n\n        :returns: reply TTL\n        :rtype: int\n        "), 0},
  {"icmp_type", __pyx_getprop_7scamper_19ScamperTracelbReply_icmp_type, 0, PyDoc_STR("\n        get method to obtain the ICMP type for the response, if the\n        response was an ICMP response.\n\n        :returns: ICMP type\n        :rtype: int\n        "), 0},
  {"icmp_code", __pyx_getprop_7scamper_19ScamperTracelbReply_icmp_code, 0, PyDoc_STR("\n        get method to obtain the ICMP code for the response, if the\n        response was an ICMP response.\n\n        :returns: ICMP code\n        :rtype: int\n        "), 0},
  {"icmp_q_ttl", __pyx_getprop_7scamper_19ScamperTracelbReply_icmp_q_ttl, 0, PyDoc_STR("\n        get method to obtain the TTL value from the quoted IP packet in\n        the ICMP response.\n\n        :returns: the quoted TTL value\n        :rtype: int\n        "), 0},
  {"icmp_q_tos", __pyx_getprop_7scamper_19ScamperTracelbReply_icmp_q_tos, 0, PyDoc_STR("\n        get method to obtain the TOS value from the quoted IP packet in\n        the ICMP response.\n\n        :returns: the quoted TOS value\n        :rtype: int\n        "), 0},
  {"tcp_flags", __pyx_getprop_7scamper_19ScamperTracelbReply_tcp_flags, 0, PyDoc_STR("\n        get method to obtain the TCP flags of the TCP response.\n\n        :returns: the TCP flags\n        :rtype: int\n        "), 0},
  {"icmp_exts", __pyx_getprop_7scamper_19ScamperTracelbReply_icmp_exts, 0, PyDoc_STR("\n        get method to obtain any ICMP extension structure, if present.\n\n        :returns: the ICMP extensions\n        :rtype: ScamperIcmpExts\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTracelbReply_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTracelbReply},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTracelbReply` is used by scamper to store information\n    about a reply to a probe.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTracelbReply},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTracelbReply},
  {Py_tp_init, (void *)__pyx_pw_7scamper_19ScamperTracelbReply_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTracelbReply},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTracelbReply_spec = {
  "scamper.ScamperTracelbReply",
  sizeof(struct __pyx_obj_7scamper_ScamperTracelbReply),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperTracelbReply_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTracelbReply = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTracelbReply", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTracelbReply), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTracelbReply, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperTracelbReply` is used by scamper to store information\n    about a reply to a probe.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTracelbReply, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTracelbReply, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_19ScamperTracelbReply_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTracelbReply, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTracelbProbe __pyx_vtable_7scamper_ScamperTracelbProbe;

static PyObject *__pyx_tp_new_7scamper_ScamperTracelbProbe(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTracelbProbe *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTracelbProbe *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTracelbProbe;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTracelbProbe(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTracelbProbe) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_19ScamperTracelbProbe_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbProbe_tx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbProbe_2tx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbProbe_flowid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbProbe_6flowid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbProbe_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbProbe_3ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbProbe_attempt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbProbe_7attempt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperTracelbProbe_reply_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperTracelbProbe_11reply_count_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperTracelbProbe[] = {
  {"reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperTracelbProbe_7reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperTracelbProbe_6reply},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperTracelbProbe_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperTracelbProbe_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTracelbProbe[] = {
  {"tx", __pyx_getprop_7scamper_19ScamperTracelbProbe_tx, 0, PyDoc_STR("\n        get method that returns the time when the probe was sent.\n\n        :returns: the transmit time for the probe\n        :rtype: datetime\n        "), 0},
  {"flowid", __pyx_getprop_7scamper_19ScamperTracelbProbe_flowid, 0, PyDoc_STR("\n        get method that returns the flowid associated with the probe\n\n        :returns: the flowid\n        :rtype: int\n        "), 0},
  {"ttl", __pyx_getprop_7scamper_19ScamperTracelbProbe_ttl, 0, PyDoc_STR("\n        get method that returns the TTL set in the probe packet\n\n        :returns: the TTL\n        :rtype: int\n        "), 0},
  {"attempt", __pyx_getprop_7scamper_19ScamperTracelbProbe_attempt, 0, PyDoc_STR("\n        get method to obtain the attempt number for the hop.  The first\n        attempt has a value of 1.\n\n        :returns: the attempt number\n        :rtype: int\n        "), 0},
  {"reply_count", __pyx_getprop_7scamper_19ScamperTracelbProbe_reply_count, 0, PyDoc_STR("\n        get method that returns the number of replies recorded for this probe\n\n        :returns: the number of replies recorded\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTracelbProbe_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTracelbProbe},
  {Py_tp_str, (void *)__pyx_pw_7scamper_19ScamperTracelbProbe_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTracelbProbe` is used by scamper to store information\n    about an individual probe sent along a link to solicit a response.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTracelbProbe},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTracelbProbe},
  {Py_tp_init, (void *)__pyx_pw_7scamper_19ScamperTracelbProbe_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTracelbProbe},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTracelbProbe_spec = {
  "scamper.ScamperTracelbProbe",
  sizeof(struct __pyx_obj_7scamper_ScamperTracelbProbe),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperTracelbProbe_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTracelbProbe = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTracelbProbe", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTracelbProbe), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTracelbProbe, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_19ScamperTracelbProbe_5__str__, /*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*/
  PyDoc_STR("\n    :class:`ScamperTracelbProbe` is used by scamper to store information\n    about an individual probe sent along a link to solicit a response.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTracelbProbe, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTracelbProbe, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_19ScamperTracelbProbe_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTracelbProbe, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTracelbProbeset __pyx_vtable_7scamper_ScamperTracelbProbeset;

static PyObject *__pyx_tp_new_7scamper_ScamperTracelbProbeset(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTracelbProbeset *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTracelbProbeset *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTracelbProbeset;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTracelbProbeset(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTracelbProbeset) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_22ScamperTracelbProbeset_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_22ScamperTracelbProbeset_probe_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_22ScamperTracelbProbeset_11probe_count_1__get__(o);
}

static PyObject *__pyx_specialmethod___pyx_pw_7scamper_22ScamperTracelbProbeset_9__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  PyObject *res = __pyx_pw_7scamper_22ScamperTracelbProbeset_9__next__(self);
  if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); }
  return res;
}

static PyMethodDef __pyx_methods_7scamper_ScamperTracelbProbeset[] = {
  {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_7scamper_22ScamperTracelbProbeset_9__next__, METH_NOARGS|METH_COEXIST, 0},
  {"probe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperTracelbProbeset_11probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_22ScamperTracelbProbeset_10probe},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperTracelbProbeset_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperTracelbProbeset_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTracelbProbeset[] = {
  {"probe_count", __pyx_getprop_7scamper_22ScamperTracelbProbeset_probe_count, 0, PyDoc_STR("\n        get method that returns the number of probes sent in this set\n\n        :returns: the number of probes sent\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTracelbProbeset_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTracelbProbeset},
  {Py_sq_length, (void *)__pyx_pw_7scamper_22ScamperTracelbProbeset_5__len__},
  {Py_mp_length, (void *)__pyx_pw_7scamper_22ScamperTracelbProbeset_5__len__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTracelbProbeset` is used by scamper to store information\n    about probes sent along a link to solicit responses.\n    ")},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_22ScamperTracelbProbeset_7__iter__},
  {Py_tp_iternext, (void *)__pyx_pw_7scamper_22ScamperTracelbProbeset_9__next__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTracelbProbeset},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTracelbProbeset},
  {Py_tp_init, (void *)__pyx_pw_7scamper_22ScamperTracelbProbeset_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTracelbProbeset},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTracelbProbeset_spec = {
  "scamper.ScamperTracelbProbeset",
  sizeof(struct __pyx_obj_7scamper_ScamperTracelbProbeset),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperTracelbProbeset_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_ScamperTracelbProbeset = {
  __pyx_pw_7scamper_22ScamperTracelbProbeset_5__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ScamperTracelbProbeset = {
  __pyx_pw_7scamper_22ScamperTracelbProbeset_5__len__, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_7scamper_ScamperTracelbProbeset = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTracelbProbeset", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTracelbProbeset), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTracelbProbeset, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_ScamperTracelbProbeset, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ScamperTracelbProbeset, /*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*/
  PyDoc_STR("\n    :class:`ScamperTracelbProbeset` is used by scamper to store information\n    about probes sent along a link to solicit responses.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_22ScamperTracelbProbeset_7__iter__, /*tp_iter*/
  __pyx_pw_7scamper_22ScamperTracelbProbeset_9__next__, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTracelbProbeset, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTracelbProbeset, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_22ScamperTracelbProbeset_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTracelbProbeset, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTracelbNode __pyx_vtable_7scamper_ScamperTracelbNode;

static PyObject *__pyx_tp_new_7scamper_ScamperTracelbNode(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTracelbNode *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTracelbNode *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTracelbNode;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTracelbNode(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTracelbNode) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_18ScamperTracelbNode_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_18ScamperTracelbNode_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_18ScamperTracelbNode_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_18ScamperTracelbNode_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_18ScamperTracelbNode_4name_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_18ScamperTracelbNode_icmp_q_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_18ScamperTracelbNode_10icmp_q_ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_18ScamperTracelbNode_link_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_18ScamperTracelbNode_10link_count_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperTracelbNode[] = {
  {"link", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbNode_5link, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_18ScamperTracelbNode_4link},
  {"links", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbNode_7links, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbNode_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbNode_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTracelbNode[] = {
  {"src", __pyx_getprop_7scamper_18ScamperTracelbNode_src, 0, PyDoc_STR("\n        get method to obtain the address of a node\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"name", __pyx_getprop_7scamper_18ScamperTracelbNode_name, 0, PyDoc_STR("\n        get method to obtain the name in a DNS PTR record for the node's\n        address, if scamper looked up the name.\n\n        :returns: the name\n        :rtype: string\n        "), 0},
  {"icmp_q_ttl", __pyx_getprop_7scamper_18ScamperTracelbNode_icmp_q_ttl, 0, PyDoc_STR("\n        get method to obtain the TTL value from the quoted IP packet in\n        the ICMP response for this node.\n\n        :returns: the quoted TTL value\n        :rtype: int\n        "), 0},
  {"link_count", __pyx_getprop_7scamper_18ScamperTracelbNode_link_count, 0, PyDoc_STR("\n        get method to obtain the number of links for this node.\n\n        :returns: the number of links\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTracelbNode_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTracelbNode},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTracelbNode` is used by scamper to store information\n    about a single node observed in an MDA traceroute.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTracelbNode},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTracelbNode},
  {Py_tp_init, (void *)__pyx_pw_7scamper_18ScamperTracelbNode_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTracelbNode},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTracelbNode_spec = {
  "scamper.ScamperTracelbNode",
  sizeof(struct __pyx_obj_7scamper_ScamperTracelbNode),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperTracelbNode_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTracelbNode = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTracelbNode", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTracelbNode), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTracelbNode, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperTracelbNode` is used by scamper to store information\n    about a single node observed in an MDA traceroute.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTracelbNode, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTracelbNode, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_18ScamperTracelbNode_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTracelbNode, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTracelbLink __pyx_vtable_7scamper_ScamperTracelbLink;

static PyObject *__pyx_tp_new_7scamper_ScamperTracelbLink(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTracelbLink *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTracelbLink *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTracelbLink;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTracelbLink(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTracelbLink) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_18ScamperTracelbLink_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyMethodDef __pyx_methods_7scamper_ScamperTracelbLink[] = {
  {"near", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_7near, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_18ScamperTracelbLink_6near},
  {"far", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_9far, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_18ScamperTracelbLink_8far},
  {"length", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_11length, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_18ScamperTracelbLink_10length},
  {"probeset", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_13probeset, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_18ScamperTracelbLink_12probeset},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperTracelbLink_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTracelbLink_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTracelbLink},
  {Py_tp_str, (void *)__pyx_pw_7scamper_18ScamperTracelbLink_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTracelbNode` is used by scamper to store information\n    about a single node observed in an MDA traceroute.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTracelbLink},
  {Py_tp_init, (void *)__pyx_pw_7scamper_18ScamperTracelbLink_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTracelbLink},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTracelbLink_spec = {
  "scamper.ScamperTracelbLink",
  sizeof(struct __pyx_obj_7scamper_ScamperTracelbLink),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperTracelbLink_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTracelbLink = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTracelbLink", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTracelbLink), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTracelbLink, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_18ScamperTracelbLink_5__str__, /*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*/
  PyDoc_STR("\n    :class:`ScamperTracelbNode` is used by scamper to store information\n    about a single node observed in an MDA traceroute.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTracelbLink, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_18ScamperTracelbLink_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTracelbLink, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTracelb __pyx_vtable_7scamper_ScamperTracelb;

static PyObject *__pyx_tp_new_7scamper_ScamperTracelb(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTracelb *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTracelb *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTracelb;
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTracelb(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperTracelb *p = (struct __pyx_obj_7scamper_ScamperTracelb *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTracelb) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_14ScamperTracelb_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperTracelb(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperTracelb *p = (struct __pyx_obj_7scamper_ScamperTracelb *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperTracelb(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperTracelb *p = (struct __pyx_obj_7scamper_ScamperTracelb *)o;
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_list(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_4list_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_cycle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_5cycle_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_method(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_6method_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_userid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_6userid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_dst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_3dst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_rtr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_3rtr_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_node_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_10node_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_link_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_10link_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_attempts(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_8attempts_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_gaplimit(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_8gaplimit_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_firsthop(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_8firsthop_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_tos(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_3tos_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_wait_timeout(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_12wait_timeout_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_wait_probe(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_10wait_probe_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_confidence(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_10confidence_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_probe_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_11probe_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_probe_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_10probe_size_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_probe_sport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_11probe_sport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_probe_dport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_11probe_dport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb_probe_icmp_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_13probe_icmp_id_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTracelb__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTracelb_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_14ScamperTracelb__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_14ScamperTracelb_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_14ScamperTracelb_5_inst_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7scamper_ScamperTracelb[] = {
  {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_7to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_6to_json},
  {"node", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_9node, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_8node},
  {"nodes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_11nodes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_10nodes},
  {"link", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_13link, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_12link},
  {"links", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_15links, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_14links},
  {"is_udp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_17is_udp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_16is_udp},
  {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_19is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_18is_tcp},
  {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_21is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTracelb_20is_icmp},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_23__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTracelb_25__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTracelb[] = {
  {"list", __pyx_getprop_7scamper_14ScamperTracelb_list, 0, PyDoc_STR("\n        get list associated with this measurement.\n\n        :returns: the list\n        :rtype: ScamperList\n        "), 0},
  {"cycle", __pyx_getprop_7scamper_14ScamperTracelb_cycle, 0, PyDoc_STR("\n        get cycle associated with this measurement.\n\n        :returns: the cycle\n        :rtype: ScamperCycle\n        "), 0},
  {"inst", __pyx_getprop_7scamper_14ScamperTracelb_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"method", __pyx_getprop_7scamper_14ScamperTracelb_method, 0, PyDoc_STR("\n        get the method used in this MDA traceroute.\n\n        :returns: the method\n        :rtype: ScamperTracelbMethod\n        "), 0},
  {"userid", __pyx_getprop_7scamper_14ScamperTracelb_userid, 0, PyDoc_STR("\n        get method to obtain the userid parameter.\n\n        :returns: the userid\n        :rtype: int\n        "), 0},
  {"start", __pyx_getprop_7scamper_14ScamperTracelb_start, 0, PyDoc_STR("\n        get method to obtain the time this measurement started.\n\n        :returns: the start timestamp\n        :rtype: datetime\n        "), 0},
  {"src", __pyx_getprop_7scamper_14ScamperTracelb_src, 0, PyDoc_STR("\n        get method to obtain the source address for this measurement.\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"dst", __pyx_getprop_7scamper_14ScamperTracelb_dst, 0, PyDoc_STR("\n        get method to obtain the destination address for this measurement.\n\n        :returns: the destination address\n        :rtype: ScamperAddr\n        "), 0},
  {"rtr", __pyx_getprop_7scamper_14ScamperTracelb_rtr, 0, PyDoc_STR("\n        get method to obtain the non-default router address through\n        which this measurement went.\n\n        :returns: the non-default router's address\n        :rtype: ScamperAddr\n        "), 0},
  {"node_count", __pyx_getprop_7scamper_14ScamperTracelb_node_count, 0, PyDoc_STR("\n        get method to obtain the number of nodes recorded in this measurement.\n\n        :returns: the number of nodes\n        :rtype: int\n        "), 0},
  {"link_count", __pyx_getprop_7scamper_14ScamperTracelb_link_count, 0, PyDoc_STR("\n        get method to obtain the number of links recorded in this measurement.\n\n        :returns: the number of links\n        :rtype: int\n        "), 0},
  {"attempts", __pyx_getprop_7scamper_14ScamperTracelb_attempts, 0, PyDoc_STR("\n        get method to obtain the number of attempts per probe for\n        this measurement.\n\n        :returns: the number of attempts per probe\n        :rtype: int\n        "), 0},
  {"gaplimit", __pyx_getprop_7scamper_14ScamperTracelb_gaplimit, 0, PyDoc_STR("\n        get method to obtain the number of consecutiive unresponse\n        hops to probe before halting the traceroute.\n\n        :returns: the number of consecutive unresponsive hops\n        :rtype: int\n        "), 0},
  {"firsthop", __pyx_getprop_7scamper_14ScamperTracelb_firsthop, 0, PyDoc_STR("\n        get method to obtain the first hop this measurement began\n        probing at.\n\n        :returns: the first hop probing began at.\n        :rtype: int\n        "), 0},
  {"tos", __pyx_getprop_7scamper_14ScamperTracelb_tos, 0, PyDoc_STR("\n        get method to obtain the IP TOS byte used for this traceroute.\n\n        :returns: the IP TOS byte\n        :rtype: int\n        "), 0},
  {"wait_timeout", __pyx_getprop_7scamper_14ScamperTracelb_wait_timeout, 0, PyDoc_STR("\n        get method to obtain the length of time to wait before declaring\n        a probe lost.\n\n        :returns: the timeout value.\n        :rtype: timedelta\n        "), 0},
  {"wait_probe", __pyx_getprop_7scamper_14ScamperTracelb_wait_probe, 0, PyDoc_STR("\n        get method to obtain the minimum time to wait between probes.\n\n        :returns: the minimum time to wait between probes\n        :rtype: timedelta\n        "), 0},
  {"confidence", __pyx_getprop_7scamper_14ScamperTracelb_confidence, 0, PyDoc_STR("\n        get method to obtain the confidence parameter that guides the\n        number of attempts per hop before probing the next hop.\n\n        :returns: the confidence value used, or zero if no parameter\n        :rtype: int\n        "), 0},
  {"probe_count", __pyx_getprop_7scamper_14ScamperTracelb_probe_count, 0, PyDoc_STR("\n        get method to obtain the total number of probes sent for this\n        measurement.\n\n        :returns: the number of probes.\n        :rtype: int\n        "), 0},
  {"probe_size", __pyx_getprop_7scamper_14ScamperTracelb_probe_size, 0, PyDoc_STR("\n        get method to obtain the probe size to used for this measurement.\n\n        :returns: the probe size used.\n        :rtype: int\n        "), 0},
  {"probe_sport", __pyx_getprop_7scamper_14ScamperTracelb_probe_sport, 0, PyDoc_STR("\n        get method to obtain the (base) source port used for this\n        traceroute, if the traceroute used TCP or UDP probes.\n\n        :returns: the (base) source port value used.\n        :rtype: int\n        "), 0},
  {"probe_dport", __pyx_getprop_7scamper_14ScamperTracelb_probe_dport, 0, PyDoc_STR("\n        get method to obtain the (base) destination port used for this\n        traceroute, if the traceroute used TCP or UDP probes.\n\n        :returns: the (base) destination port value used.\n        :rtype: int\n        "), 0},
  {"probe_icmp_id", __pyx_getprop_7scamper_14ScamperTracelb_probe_icmp_id, 0, PyDoc_STR("\n        get method to obtain the ICMP id value used in probes,\n        if the measurement used an ICMP method.\n\n        :returns: the ICMP ID value used.\n        :rtype: int\n        "), 0},
  {"_inst", __pyx_getprop_7scamper_14ScamperTracelb__inst, __pyx_setprop_7scamper_14ScamperTracelb__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTracelb_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTracelb},
  {Py_tp_str, (void *)__pyx_pw_7scamper_14ScamperTracelb_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTracelb` is used by scamper to store results from a\n    MDA traceroute measurement.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperTracelb},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperTracelb},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTracelb},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTracelb},
  {Py_tp_init, (void *)__pyx_pw_7scamper_14ScamperTracelb_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTracelb},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTracelb_spec = {
  "scamper.ScamperTracelb",
  sizeof(struct __pyx_obj_7scamper_ScamperTracelb),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperTracelb_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTracelb = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTracelb", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTracelb), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTracelb, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_14ScamperTracelb_5__str__, /*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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    :class:`ScamperTracelb` is used by scamper to store results from a\n    MDA traceroute measurement.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperTracelb, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperTracelb, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTracelb, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTracelb, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_14ScamperTracelb_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTracelb, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperDealiasReply __pyx_vtable_7scamper_ScamperDealiasReply;

static PyObject *__pyx_tp_new_7scamper_ScamperDealiasReply(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperDealiasReply *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperDealiasReply *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperDealiasReply;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperDealiasReply(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperDealiasReply) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_19ScamperDealiasReply_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasReply_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasReply_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasReply_rx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasReply_2rx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasReply_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasReply_3ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasReply_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasReply_4size_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasReply_tcp_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasReply_9tcp_flags_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasReply_icmp_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasReply_9icmp_type_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasReply_icmp_code(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasReply_9icmp_code_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasReply_icmp_q_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasReply_10icmp_q_ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasReply_ipid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasReply_4ipid_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperDealiasReply[] = {
  {"is_from_target", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_5is_from_target, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_4is_from_target},
  {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_7is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_6is_tcp},
  {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_9is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_8is_icmp},
  {"is_icmp_ttl_exp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_11is_icmp_ttl_exp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_10is_icmp_ttl_exp},
  {"is_icmp_unreach", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_13is_icmp_unreach, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_12is_icmp_unreach},
  {"is_icmp_unreach_port", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_15is_icmp_unreach_port, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasReply_14is_icmp_unreach_port},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_17__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasReply_19__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperDealiasReply[] = {
  {"src", __pyx_getprop_7scamper_19ScamperDealiasReply_src, 0, PyDoc_STR("\n        get method to obtain the source address of a reply\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"rx", __pyx_getprop_7scamper_19ScamperDealiasReply_rx, 0, PyDoc_STR("\n        get method that returns the time when a response was received.\n\n        :returns: the time when this response was received, or None if no response\n        :rtype: datetime\n        "), 0},
  {"ttl", __pyx_getprop_7scamper_19ScamperDealiasReply_ttl, 0, PyDoc_STR("\n        get method to obtain the TTL value in the IP header of the\n        response, if known.\n\n        :returns: reply TTL\n        :rtype: int\n        "), 0},
  {"size", __pyx_getprop_7scamper_19ScamperDealiasReply_size, 0, PyDoc_STR("\n        get method to obtain the size of the response\n\n        :returns: the size of the response\n        :rtype: int\n        "), 0},
  {"tcp_flags", __pyx_getprop_7scamper_19ScamperDealiasReply_tcp_flags, 0, PyDoc_STR("\n        get method to obtain the TCP flags of the response, if the\n        response was a TCP response.\n\n        :returns: TCP flags\n        :rtype: int\n        "), 0},
  {"icmp_type", __pyx_getprop_7scamper_19ScamperDealiasReply_icmp_type, 0, PyDoc_STR("\n        get method to obtain the ICMP type for the response, if the\n        response was an ICMP response.\n\n        :returns: ICMP type\n        :rtype: int\n        "), 0},
  {"icmp_code", __pyx_getprop_7scamper_19ScamperDealiasReply_icmp_code, 0, PyDoc_STR("\n        get method to obtain the ICMP code for the response, if the\n        response was an ICMP response.\n\n        :returns: ICMP code\n        :rtype: int\n        "), 0},
  {"icmp_q_ttl", __pyx_getprop_7scamper_19ScamperDealiasReply_icmp_q_ttl, 0, PyDoc_STR("\n        get method to obtain the TTL value from the quoted IP packet in\n        the ICMP response.\n\n        :returns: the quoted TTL value\n        :rtype: int\n        "), 0},
  {"ipid", __pyx_getprop_7scamper_19ScamperDealiasReply_ipid, 0, PyDoc_STR("\n        get method to obtain the IPID value in the reply, if available.\n\n        :returns: the IPID value in the reply.\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperDealiasReply_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperDealiasReply},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperDealiasReply` object stores information for\n    individual alias resolution probes.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperDealiasReply},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperDealiasReply},
  {Py_tp_init, (void *)__pyx_pw_7scamper_19ScamperDealiasReply_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperDealiasReply},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperDealiasReply_spec = {
  "scamper.ScamperDealiasReply",
  sizeof(struct __pyx_obj_7scamper_ScamperDealiasReply),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperDealiasReply_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperDealiasReply = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperDealiasReply", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperDealiasReply), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperDealiasReply, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    The :class:`ScamperDealiasReply` object stores information for\n    individual alias resolution probes.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperDealiasReply, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperDealiasReply, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_19ScamperDealiasReply_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperDealiasReply, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper_ScamperDealiasMidardiscRound(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperDealiasMidardiscRound(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperDealiasMidardiscRound) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_28ScamperDealiasMidardiscRound_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_28ScamperDealiasMidardiscRound_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_28ScamperDealiasMidardiscRound_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_28ScamperDealiasMidardiscRound_begin(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_28ScamperDealiasMidardiscRound_5begin_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_28ScamperDealiasMidardiscRound_end(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_28ScamperDealiasMidardiscRound_3end_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperDealiasMidardiscRound[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperDealiasMidardiscRound[] = {
  {"start", __pyx_getprop_7scamper_28ScamperDealiasMidardiscRound_start, 0, PyDoc_STR("\n        get method to get the time this round should start, relative to other rounds.\n\n        :returns: the start time\n        :rtype: timedelta\n        "), 0},
  {"begin", __pyx_getprop_7scamper_28ScamperDealiasMidardiscRound_begin, 0, PyDoc_STR("\n        get method to obtain the begin index of the probedefs to use for this round.\n\n        :returns: the begin index\n        :rtype: int\n        "), 0},
  {"end", __pyx_getprop_7scamper_28ScamperDealiasMidardiscRound_end, 0, PyDoc_STR("\n        get method to obtain the end index of the probedefs to use for this round.\n\n        :returns: the end index\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperDealiasMidardiscRound_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperDealiasMidardiscRound},
  {Py_tp_str, (void *)__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperDealiasMidardiscRound` object stores information about\n    a single round in a :class:`ScamperDealias` midardisc measurement.\n    The constructor takes three parameters:\n\n    - start: a :class:`datetime.timedelta` that represents when this round     should start.\n    - begin: an integer representing the probedef index where this round     should begin.\n    - end: an integer representing the probedef index where this round     should end.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperDealiasMidardiscRound},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperDealiasMidardiscRound},
  {Py_tp_init, (void *)__pyx_pw_7scamper_28ScamperDealiasMidardiscRound_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperDealiasMidardiscRound},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperDealiasMidardiscRound_spec = {
  "scamper.ScamperDealiasMidardiscRound",
  sizeof(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperDealiasMidardiscRound_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperDealiasMidardiscRound = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperDealiasMidardiscRound", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperDealiasMidardiscRound), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperDealiasMidardiscRound, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_28ScamperDealiasMidardiscRound_5__str__, /*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*/
  PyDoc_STR("\n    The :class:`ScamperDealiasMidardiscRound` object stores information about\n    a single round in a :class:`ScamperDealias` midardisc measurement.\n    The constructor takes three parameters:\n\n    - start: a :class:`datetime.timedelta` that represents when this round     should start.\n    - begin: an integer representing the probedef index where this round     should begin.\n    - end: an integer representing the probedef index where this round     should end.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperDealiasMidardiscRound, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperDealiasMidardiscRound, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_28ScamperDealiasMidardiscRound_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperDealiasMidardiscRound, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperDealiasProbedef __pyx_vtable_7scamper_ScamperDealiasProbedef;

static PyObject *__pyx_tp_new_7scamper_ScamperDealiasProbedef(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperDealiasProbedef *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperDealiasProbedef *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperDealiasProbedef;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperDealiasProbedef(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperDealiasProbedef) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_22ScamperDealiasProbedef_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_22ScamperDealiasProbedef_dst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_22ScamperDealiasProbedef_3dst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_22ScamperDealiasProbedef_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_22ScamperDealiasProbedef_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_22ScamperDealiasProbedef_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_22ScamperDealiasProbedef_3ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_22ScamperDealiasProbedef_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_22ScamperDealiasProbedef_4size_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_22ScamperDealiasProbedef_sport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_22ScamperDealiasProbedef_5sport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_22ScamperDealiasProbedef_dport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_22ScamperDealiasProbedef_5dport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_22ScamperDealiasProbedef_icmp_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_22ScamperDealiasProbedef_7icmp_id_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_22ScamperDealiasProbedef_icmp_sum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_22ScamperDealiasProbedef_8icmp_sum_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperDealiasProbedef[] = {
  {"is_udp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperDealiasProbedef_9is_udp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_22ScamperDealiasProbedef_8is_udp},
  {"is_icmp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperDealiasProbedef_11is_icmp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_22ScamperDealiasProbedef_10is_icmp},
  {"is_tcp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperDealiasProbedef_13is_tcp, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_22ScamperDealiasProbedef_12is_tcp},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperDealiasProbedef_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_22ScamperDealiasProbedef_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperDealiasProbedef[] = {
  {"dst", __pyx_getprop_7scamper_22ScamperDealiasProbedef_dst, 0, PyDoc_STR("\n        get method to obtain the destination address from a probedef\n\n        :returns: the destination address\n        :rtype: ScamperAddr\n        "), 0},
  {"src", __pyx_getprop_7scamper_22ScamperDealiasProbedef_src, 0, PyDoc_STR("\n        get method to obtain the source address from a probedef\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"ttl", __pyx_getprop_7scamper_22ScamperDealiasProbedef_ttl, 0, PyDoc_STR("\n        get method to obtain the TTL for this probedef\n\n        :returns: the TTL value\n        :rtype: int\n        "), 0},
  {"size", __pyx_getprop_7scamper_22ScamperDealiasProbedef_size, 0, PyDoc_STR("\n        get method to obtain the packet size for this probedef\n\n        :returns: the packet size\n        :rtype: int\n        "), 0},
  {"sport", __pyx_getprop_7scamper_22ScamperDealiasProbedef_sport, 0, PyDoc_STR("\n        get method to obtain the source port for this probedef, if the\n        probedef is a TCP or UDP packet.\n\n        :returns: the source port\n        :rtype: int\n        "), 0},
  {"dport", __pyx_getprop_7scamper_22ScamperDealiasProbedef_dport, 0, PyDoc_STR("\n        get method to obtain the destination port for this probedef, if the\n        probedef is a TCP or UDP packet.\n\n        :returns: the destination port\n        :rtype: int\n        "), 0},
  {"icmp_id", __pyx_getprop_7scamper_22ScamperDealiasProbedef_icmp_id, 0, PyDoc_STR("\n        get method to obtain the ICMP ID for this probedef, if the\n        probedef is an ICMP packet\n\n        :returns: the ICMP ID value\n        :rtype: int\n        "), 0},
  {"icmp_sum", __pyx_getprop_7scamper_22ScamperDealiasProbedef_icmp_sum, 0, PyDoc_STR("\n        get method to obtain the ICMP checksum for this probedef, if the\n        probedef is an ICMP packet\n\n        :returns: the ICMP checksum value\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperDealiasProbedef_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperDealiasProbedef},
  {Py_tp_repr, (void *)__pyx_pw_7scamper_22ScamperDealiasProbedef_7__repr__},
  {Py_tp_str, (void *)__pyx_pw_7scamper_22ScamperDealiasProbedef_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperDealiasProbedef` object stores information for a set of\n    related alias resolution probes.  This class implements __str__ to\n    render strings that scamper accepts, and __repr__ to show the object.\n    The :class:`ScamperDealiasProbedef` constructor takes the following\n    parameters; the first parameter is mandatory, but the remainder\n    are optional.\n\n    - method: a string identifying the name of the probing strategy to use.\n    - src: the source IP address to use when probing.  This can be a string,     or a :class:`ScamperAddr`.\n    - dst: the destination IP address to probe.  This can be a string,     or a :class:`ScamperAddr`.\n    - ttl: the IP TTL to sent in probe packets.\n    - size: the size of packets to send.  The size includes the IP and     transport headers.\n    - sport: the source port value to use, for TCP or UDP probe methods.\n    - dport: the destination port value to use, for TCP or UDP probe methods.\n    - icmp_id: the ID value to use in probes, for ICMP probe methods.\n    - icmp_sum: the checksum to use in an ICMP probe.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperDealiasProbedef},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperDealiasProbedef},
  {Py_tp_init, (void *)__pyx_pw_7scamper_22ScamperDealiasProbedef_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperDealiasProbedef},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperDealiasProbedef_spec = {
  "scamper.ScamperDealiasProbedef",
  sizeof(struct __pyx_obj_7scamper_ScamperDealiasProbedef),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperDealiasProbedef_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperDealiasProbedef = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperDealiasProbedef", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperDealiasProbedef), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperDealiasProbedef, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  __pyx_pw_7scamper_22ScamperDealiasProbedef_7__repr__, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_22ScamperDealiasProbedef_5__str__, /*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*/
  PyDoc_STR("\n    The :class:`ScamperDealiasProbedef` object stores information for a set of\n    related alias resolution probes.  This class implements __str__ to\n    render strings that scamper accepts, and __repr__ to show the object.\n    The :class:`ScamperDealiasProbedef` constructor takes the following\n    parameters; the first parameter is mandatory, but the remainder\n    are optional.\n\n    - method: a string identifying the name of the probing strategy to use.\n    - src: the source IP address to use when probing.  This can be a string,     or a :class:`ScamperAddr`.\n    - dst: the destination IP address to probe.  This can be a string,     or a :class:`ScamperAddr`.\n    - ttl: the IP TTL to sent in probe packets.\n    - size: the size of packets to send.  The size includes the IP and     transport headers.\n    - sport: the source port value to use, for TCP or UDP probe methods.\n    - dport: the destination port value to use, for TCP or UDP probe methods.\n    - icmp_id: the ID value to use in probes, for ICMP probe methods.\n    - icmp_sum: the checksum to use in an ICMP probe.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperDealiasProbedef, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperDealiasProbedef, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_22ScamperDealiasProbedef_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperDealiasProbedef, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperDealiasProbe __pyx_vtable_7scamper_ScamperDealiasProbe;

static PyObject *__pyx_tp_new_7scamper_ScamperDealiasProbe(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperDealiasProbe *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperDealiasProbe *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperDealiasProbe;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperDealiasProbe(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperDealiasProbe) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_19ScamperDealiasProbe_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasProbe_probedef(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasProbe_8probedef_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasProbe_seq(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasProbe_3seq_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasProbe_tx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasProbe_2tx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasProbe_reply_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasProbe_11reply_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_19ScamperDealiasProbe_ipid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_19ScamperDealiasProbe_4ipid_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperDealiasProbe[] = {
  {"reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasProbe_5reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_19ScamperDealiasProbe_4reply},
  {"replies", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasProbe_7replies, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasProbe_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_19ScamperDealiasProbe_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperDealiasProbe[] = {
  {"probedef", __pyx_getprop_7scamper_19ScamperDealiasProbe_probedef, 0, PyDoc_STR("\n        get method that returns the probedef associated with this probe\n\n        :returns: the probedef associated with this probe\n        :rtype: ScamperDealiasProbedef\n        "), 0},
  {"seq", __pyx_getprop_7scamper_19ScamperDealiasProbe_seq, 0, PyDoc_STR("\n        get method that returns the sequence among probes sent for this\n        alias resolution.\n\n        :returns: the sequence number\n        :rtype: int\n        "), 0},
  {"tx", __pyx_getprop_7scamper_19ScamperDealiasProbe_tx, 0, PyDoc_STR("\n        get method that returns the time when the probe was sent.\n\n        :returns: the transmit time for the probe\n        :rtype: datetime\n        "), 0},
  {"reply_count", __pyx_getprop_7scamper_19ScamperDealiasProbe_reply_count, 0, PyDoc_STR("\n        get method that returns the number of replies received for this probe\n\n        :returns: the number of replies\n        :rtype: int\n        "), 0},
  {"ipid", __pyx_getprop_7scamper_19ScamperDealiasProbe_ipid, 0, PyDoc_STR("\n        get method that returns the IPID value set in the probe\n\n        :returns: the IPID value\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperDealiasProbe_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperDealiasProbe},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperDealiasProbe` object stores information about an\n    individual probe sent as part of an alias resolution measurement.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperDealiasProbe},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperDealiasProbe},
  {Py_tp_init, (void *)__pyx_pw_7scamper_19ScamperDealiasProbe_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperDealiasProbe},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperDealiasProbe_spec = {
  "scamper.ScamperDealiasProbe",
  sizeof(struct __pyx_obj_7scamper_ScamperDealiasProbe),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperDealiasProbe_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperDealiasProbe = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperDealiasProbe", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperDealiasProbe), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperDealiasProbe, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    The :class:`ScamperDealiasProbe` object stores information about an\n    individual probe sent as part of an alias resolution measurement.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperDealiasProbe, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperDealiasProbe, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_19ScamperDealiasProbe_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperDealiasProbe, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperDealias __pyx_vtable_7scamper_ScamperDealias;

static PyObject *__pyx_tp_new_7scamper_ScamperDealias(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperDealias *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperDealias *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperDealias;
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperDealias(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperDealias *p = (struct __pyx_obj_7scamper_ScamperDealias *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperDealias) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_14ScamperDealias_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperDealias(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperDealias *p = (struct __pyx_obj_7scamper_ScamperDealias *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperDealias(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperDealias *p = (struct __pyx_obj_7scamper_ScamperDealias *)o;
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_list(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_4list_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_cycle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_5cycle_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_userid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_6userid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_probedef_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_14probedef_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_probe_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_11probe_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_startat(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_7startat_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_wait_probe(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_10wait_probe_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_wait_round(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_10wait_round_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias_wait_timeout(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_12wait_timeout_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperDealias__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperDealias_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_14ScamperDealias__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_14ScamperDealias_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_14ScamperDealias_5_inst_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7scamper_ScamperDealias[] = {
  {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_5to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_4to_json},
  {"is_ally", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_7is_ally, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_6is_ally},
  {"is_mercator", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_9is_mercator, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_8is_mercator},
  {"is_prefixscan", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_11is_prefixscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_10is_prefixscan},
  {"is_radargun", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_13is_radargun, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_12is_radargun},
  {"is_bump", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_15is_bump, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_14is_bump},
  {"is_midarest", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_17is_midarest, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_16is_midarest},
  {"is_midardisc", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_19is_midardisc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_18is_midardisc},
  {"has_aliases", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_21has_aliases, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_20has_aliases},
  {"aliases", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_23aliases, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_22aliases},
  {"probedef", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_25probedef, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_24probedef},
  {"probedefs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_27probedefs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_26probedefs},
  {"probe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_29probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_28probe},
  {"probes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_31probes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperDealias_30probes},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_33__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperDealias_35__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperDealias[] = {
  {"inst", __pyx_getprop_7scamper_14ScamperDealias_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"list", __pyx_getprop_7scamper_14ScamperDealias_list, 0, PyDoc_STR("\n        get list associated with this measurement.\n\n        :returns: the list\n        :rtype: ScamperList\n        "), 0},
  {"cycle", __pyx_getprop_7scamper_14ScamperDealias_cycle, 0, PyDoc_STR("\n        get cycle associated with this measurement.\n\n        :returns: the cycle\n        :rtype: ScamperCycle\n        "), 0},
  {"userid", __pyx_getprop_7scamper_14ScamperDealias_userid, 0, PyDoc_STR("\n        get method to obtain the userid parameter.\n\n        :returns: the userid\n        :rtype: int\n        "), 0},
  {"start", __pyx_getprop_7scamper_14ScamperDealias_start, 0, PyDoc_STR("\n        get method to obtain the time this measurement started.\n\n        :returns: the start timestamp\n        :rtype: datetime\n        "), 0},
  {"probedef_count", __pyx_getprop_7scamper_14ScamperDealias_probedef_count, 0, PyDoc_STR("\n        get method to obtain the number of probedefs for this dealias\n        measurement.\n\n        :returns: the number of probedefs defined in this measurement.\n        :rtype: int\n        "), 0},
  {"probe_count", __pyx_getprop_7scamper_14ScamperDealias_probe_count, 0, PyDoc_STR("\n        get method to obtain the number of probes sent in this dealias\n        measurement.\n\n        :returns: the number of probes sent\n        :rtype: int\n        "), 0},
  {"startat", __pyx_getprop_7scamper_14ScamperDealias_startat, 0, PyDoc_STR("\n        get method to obtain the scheduled time for the measurement.\n\n        :returns: the scheduled time for the measurement.\n        :rtype: datetime\n        "), 0},
  {"wait_probe", __pyx_getprop_7scamper_14ScamperDealias_wait_probe, 0, PyDoc_STR("\n        get method to obtain the minimum time to wait between probes.\n\n        :returns: the minimum time to wait between probes\n        :rtype: timedelta\n        "), 0},
  {"wait_round", __pyx_getprop_7scamper_14ScamperDealias_wait_round, 0, PyDoc_STR("\n        get method to obtain the minimum time to wait between rounds.\n\n        :returns: the minimum time to wait between rounds\n        :rtype: timedelta\n        "), 0},
  {"wait_timeout", __pyx_getprop_7scamper_14ScamperDealias_wait_timeout, 0, PyDoc_STR("\n        get method to obtain the length of time to wait before declaring\n        a probe lost.\n\n        :returns: the timeout value.\n        :rtype: timedelta\n        "), 0},
  {"_inst", __pyx_getprop_7scamper_14ScamperDealias__inst, __pyx_setprop_7scamper_14ScamperDealias__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperDealias_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperDealias},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperDealias` object stores results from an alias resolution\n    measurement\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperDealias},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperDealias},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperDealias},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperDealias},
  {Py_tp_init, (void *)__pyx_pw_7scamper_14ScamperDealias_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperDealias},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperDealias_spec = {
  "scamper.ScamperDealias",
  sizeof(struct __pyx_obj_7scamper_ScamperDealias),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperDealias_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperDealias = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperDealias", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperDealias), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperDealias, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    The :class:`ScamperDealias` object stores results from an alias resolution\n    measurement\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperDealias, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperDealias, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperDealias, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperDealias, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_14ScamperDealias_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperDealias, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperNeighbourdisc __pyx_vtable_7scamper_ScamperNeighbourdisc;

static PyObject *__pyx_tp_new_7scamper_ScamperNeighbourdisc(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperNeighbourdisc *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperNeighbourdisc *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperNeighbourdisc;
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperNeighbourdisc(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperNeighbourdisc *p = (struct __pyx_obj_7scamper_ScamperNeighbourdisc *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperNeighbourdisc) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_20ScamperNeighbourdisc_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperNeighbourdisc(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperNeighbourdisc *p = (struct __pyx_obj_7scamper_ScamperNeighbourdisc *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperNeighbourdisc(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperNeighbourdisc *p = (struct __pyx_obj_7scamper_ScamperNeighbourdisc *)o;
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_20ScamperNeighbourdisc_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperNeighbourdisc_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_20ScamperNeighbourdisc__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperNeighbourdisc_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_20ScamperNeighbourdisc__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_20ScamperNeighbourdisc_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_20ScamperNeighbourdisc_5_inst_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7scamper_ScamperNeighbourdisc[] = {
  {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperNeighbourdisc_5to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_20ScamperNeighbourdisc_4to_json},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperNeighbourdisc_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperNeighbourdisc_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperNeighbourdisc[] = {
  {"inst", __pyx_getprop_7scamper_20ScamperNeighbourdisc_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"_inst", __pyx_getprop_7scamper_20ScamperNeighbourdisc__inst, __pyx_setprop_7scamper_20ScamperNeighbourdisc__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperNeighbourdisc_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperNeighbourdisc},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperNeighbourdisc},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperNeighbourdisc},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperNeighbourdisc},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperNeighbourdisc},
  {Py_tp_init, (void *)__pyx_pw_7scamper_20ScamperNeighbourdisc_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperNeighbourdisc},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperNeighbourdisc_spec = {
  "scamper.ScamperNeighbourdisc",
  sizeof(struct __pyx_obj_7scamper_ScamperNeighbourdisc),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperNeighbourdisc_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperNeighbourdisc = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperNeighbourdisc", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperNeighbourdisc), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperNeighbourdisc, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperNeighbourdisc, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperNeighbourdisc, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperNeighbourdisc, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperNeighbourdisc, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_20ScamperNeighbourdisc_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperNeighbourdisc, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTbitPkt __pyx_vtable_7scamper_ScamperTbitPkt;

static PyObject *__pyx_tp_new_7scamper_ScamperTbitPkt(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTbitPkt *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTbitPkt *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTbitPkt;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTbitPkt(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTbitPkt) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_14ScamperTbitPkt_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_14ScamperTbitPkt_timestamp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTbitPkt_9timestamp_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperTbitPkt_data(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperTbitPkt_4data_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperTbitPkt[] = {
  {"is_tx", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTbitPkt_5is_tx, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTbitPkt_4is_tx},
  {"is_rx", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTbitPkt_7is_rx, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperTbitPkt_6is_rx},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTbitPkt_9__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperTbitPkt_11__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTbitPkt[] = {
  {"timestamp", __pyx_getprop_7scamper_14ScamperTbitPkt_timestamp, 0, PyDoc_STR("\n        get method that returns the time when this packet was transmitted\n        or received.\n\n        :returns: the timestamp for this packet\n        :rtype: datetime\n        "), 0},
  {"data", __pyx_getprop_7scamper_14ScamperTbitPkt_data, 0, PyDoc_STR("\n        get method to obtain the contents of the packet.\n\n        :returns: contents of the packet including IP header\n        :rtype: bytes\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTbitPkt_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTbitPkt},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperTbitPkt` is used by scamper to store information about\n    a single packet captured in a :class:`ScamperTbit`.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTbitPkt},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTbitPkt},
  {Py_tp_init, (void *)__pyx_pw_7scamper_14ScamperTbitPkt_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTbitPkt},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTbitPkt_spec = {
  "scamper.ScamperTbitPkt",
  sizeof(struct __pyx_obj_7scamper_ScamperTbitPkt),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperTbitPkt_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTbitPkt = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTbitPkt", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTbitPkt), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTbitPkt, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperTbitPkt` is used by scamper to store information about\n    a single packet captured in a :class:`ScamperTbit`.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTbitPkt, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTbitPkt, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_14ScamperTbitPkt_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTbitPkt, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTbit __pyx_vtable_7scamper_ScamperTbit;

static PyObject *__pyx_tp_new_7scamper_ScamperTbit(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTbit *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTbit *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTbit;
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTbit(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperTbit *p = (struct __pyx_obj_7scamper_ScamperTbit *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTbit) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_11ScamperTbit_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperTbit(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperTbit *p = (struct __pyx_obj_7scamper_ScamperTbit *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperTbit(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperTbit *p = (struct __pyx_obj_7scamper_ScamperTbit *)o;
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_list(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_4list_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_cycle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_5cycle_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_dst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_3dst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_userid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_6userid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_result(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_6result_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_pkt_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_9pkt_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_client_mss(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_10client_mss_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_client_wscale(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_13client_wscale_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit_client_ipttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_12client_ipttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperTbit__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperTbit_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperTbit__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperTbit_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_11ScamperTbit_5_inst_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_7scamper_11ScamperTbit_9__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  PyObject *res = __pyx_pw_7scamper_11ScamperTbit_9__next__(self);
  if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); }
  return res;
}

static PyMethodDef __pyx_methods_7scamper_ScamperTbit[] = {
  {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_7scamper_11ScamperTbit_9__next__, METH_NOARGS|METH_COEXIST, 0},
  {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTbit_11to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperTbit_10to_json},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTbit_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTbit_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperTbit[] = {
  {"inst", __pyx_getprop_7scamper_11ScamperTbit_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"list", __pyx_getprop_7scamper_11ScamperTbit_list, 0, PyDoc_STR("\n        get list associated with this measurement.\n\n        :returns: the list\n        :rtype: ScamperList\n        "), 0},
  {"cycle", __pyx_getprop_7scamper_11ScamperTbit_cycle, 0, PyDoc_STR("\n        get cycle associated with this measurement.\n\n        :returns: the cycle\n        :rtype: ScamperCycle\n        "), 0},
  {"src", __pyx_getprop_7scamper_11ScamperTbit_src, 0, PyDoc_STR("\n        get method to obtain the source address for a tbit measurement.\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"dst", __pyx_getprop_7scamper_11ScamperTbit_dst, 0, PyDoc_STR("\n        get method to obtain the destination address for tbit measurement.\n\n        :returns: the destination address\n        :rtype: ScamperAddr\n        "), 0},
  {"userid", __pyx_getprop_7scamper_11ScamperTbit_userid, 0, PyDoc_STR("\n        get method to obtain the userid parameter.\n\n        :returns: the userid\n        :rtype: int\n        "), 0},
  {"start", __pyx_getprop_7scamper_11ScamperTbit_start, 0, PyDoc_STR("\n        get method to obtain the time this measurement started.\n\n        :returns: the start timestamp\n        :rtype: datetime\n        "), 0},
  {"result", __pyx_getprop_7scamper_11ScamperTbit_result, 0, PyDoc_STR("\n        get method to obtain the result of this measurement.\n\n        :returns: the result:\n        :rtype: string\n        "), 0},
  {"pkt_count", __pyx_getprop_7scamper_11ScamperTbit_pkt_count, 0, PyDoc_STR("\n        get method to obtain the number of packets exchanged\n\n        :returns: the number of exchanged packets\n        :rtype: int\n        "), 0},
  {"client_mss", __pyx_getprop_7scamper_11ScamperTbit_client_mss, 0, PyDoc_STR("\n        get method to obtain the MSS advertised by the tbit client\n\n        :returns: the client's maximum segment size\n        :rtype: int\n        "), 0},
  {"client_wscale", __pyx_getprop_7scamper_11ScamperTbit_client_wscale, 0, PyDoc_STR("\n        get method to obtain the window scale advertised by the tbit client\n\n        :returns: the client's window scale value\n        :rtype: int\n        "), 0},
  {"client_ipttl", __pyx_getprop_7scamper_11ScamperTbit_client_ipttl, 0, PyDoc_STR("\n        get method to obtain the IP TTL value used by the tbit client\n\n        :returns: the client's IP TTL value\n        :rtype: int\n        "), 0},
  {"_inst", __pyx_getprop_7scamper_11ScamperTbit__inst, __pyx_setprop_7scamper_11ScamperTbit__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTbit_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTbit},
  {Py_sq_length, (void *)__pyx_pw_7scamper_11ScamperTbit_5__len__},
  {Py_mp_length, (void *)__pyx_pw_7scamper_11ScamperTbit_5__len__},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperTbit},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperTbit},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_11ScamperTbit_7__iter__},
  {Py_tp_iternext, (void *)__pyx_pw_7scamper_11ScamperTbit_9__next__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTbit},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperTbit},
  {Py_tp_init, (void *)__pyx_pw_7scamper_11ScamperTbit_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTbit},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTbit_spec = {
  "scamper.ScamperTbit",
  sizeof(struct __pyx_obj_7scamper_ScamperTbit),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperTbit_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_ScamperTbit = {
  __pyx_pw_7scamper_11ScamperTbit_5__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ScamperTbit = {
  __pyx_pw_7scamper_11ScamperTbit_5__len__, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_7scamper_ScamperTbit = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTbit", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTbit), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTbit, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_ScamperTbit, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ScamperTbit, /*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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperTbit, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperTbit, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_11ScamperTbit_7__iter__, /*tp_iter*/
  __pyx_pw_7scamper_11ScamperTbit_9__next__, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTbit, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperTbit, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_11ScamperTbit_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTbit, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperSting __pyx_vtable_7scamper_ScamperSting;

static PyObject *__pyx_tp_new_7scamper_ScamperSting(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperSting *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperSting *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperSting;
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperSting(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperSting *p = (struct __pyx_obj_7scamper_ScamperSting *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperSting) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_12ScamperSting_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperSting(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperSting *p = (struct __pyx_obj_7scamper_ScamperSting *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperSting(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperSting *p = (struct __pyx_obj_7scamper_ScamperSting *)o;
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_12ScamperSting_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSting_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSting__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSting_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_12ScamperSting__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_12ScamperSting_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_12ScamperSting_5_inst_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7scamper_ScamperSting[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperSting_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperSting_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperSting[] = {
  {"inst", __pyx_getprop_7scamper_12ScamperSting_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"_inst", __pyx_getprop_7scamper_12ScamperSting__inst, __pyx_setprop_7scamper_12ScamperSting__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperSting_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperSting},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperSting},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperSting},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperSting},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperSting},
  {Py_tp_init, (void *)__pyx_pw_7scamper_12ScamperSting_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperSting},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperSting_spec = {
  "scamper.ScamperSting",
  sizeof(struct __pyx_obj_7scamper_ScamperSting),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperSting_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperSting = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperSting", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperSting), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperSting, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperSting, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperSting, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperSting, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperSting, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_12ScamperSting_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperSting, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperSniffPkt __pyx_vtable_7scamper_ScamperSniffPkt;

static PyObject *__pyx_tp_new_7scamper_ScamperSniffPkt(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperSniffPkt *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperSniffPkt *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperSniffPkt;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperSniffPkt(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperSniffPkt) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_15ScamperSniffPkt_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_15ScamperSniffPkt_rx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperSniffPkt_2rx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperSniffPkt_data(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperSniffPkt_4data_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperSniffPkt[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperSniffPkt_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperSniffPkt_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperSniffPkt[] = {
  {"rx", __pyx_getprop_7scamper_15ScamperSniffPkt_rx, 0, PyDoc_STR("\n        get method that returns the time the packet was received.\n\n        :returns: the time when this packet was received\n        :rtype: datetime\n        "), 0},
  {"data", __pyx_getprop_7scamper_15ScamperSniffPkt_data, 0, PyDoc_STR("\n        get method to obtain the contents of the packet\n\n        :returns: contents of the packet including IP header\n        :rtype: bytes\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperSniffPkt_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperSniffPkt},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperSniffPkt` is used by scamper to store information about\n    a single packet captured in a :class:`ScamperSniff`.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperSniffPkt},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperSniffPkt},
  {Py_tp_init, (void *)__pyx_pw_7scamper_15ScamperSniffPkt_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperSniffPkt},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperSniffPkt_spec = {
  "scamper.ScamperSniffPkt",
  sizeof(struct __pyx_obj_7scamper_ScamperSniffPkt),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperSniffPkt_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperSniffPkt = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperSniffPkt", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperSniffPkt), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperSniffPkt, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperSniffPkt` is used by scamper to store information about\n    a single packet captured in a :class:`ScamperSniff`.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperSniffPkt, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperSniffPkt, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_15ScamperSniffPkt_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperSniffPkt, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperSniff __pyx_vtable_7scamper_ScamperSniff;

static PyObject *__pyx_tp_new_7scamper_ScamperSniff(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperSniff *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperSniff *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperSniff;
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperSniff(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperSniff *p = (struct __pyx_obj_7scamper_ScamperSniff *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperSniff) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_12ScamperSniff_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperSniff(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperSniff *p = (struct __pyx_obj_7scamper_ScamperSniff *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperSniff(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperSniff *p = (struct __pyx_obj_7scamper_ScamperSniff *)o;
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_list(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_4list_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_cycle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_5cycle_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_stop_reason(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_11stop_reason_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_userid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_6userid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_finish(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_6finish_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_limit_pkt_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_15limit_pkt_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_limit_time(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_10limit_time_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_icmp_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_7icmp_id_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff_pkt_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_9pkt_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_12ScamperSniff__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_12ScamperSniff_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_12ScamperSniff__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_12ScamperSniff_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_12ScamperSniff_5_inst_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_7scamper_12ScamperSniff_9__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  PyObject *res = __pyx_pw_7scamper_12ScamperSniff_9__next__(self);
  if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); }
  return res;
}

static PyMethodDef __pyx_methods_7scamper_ScamperSniff[] = {
  {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_7scamper_12ScamperSniff_9__next__, METH_NOARGS|METH_COEXIST, 0},
  {"pkt", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperSniff_11pkt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_12ScamperSniff_10pkt},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperSniff_13__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_12ScamperSniff_15__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperSniff[] = {
  {"inst", __pyx_getprop_7scamper_12ScamperSniff_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"list", __pyx_getprop_7scamper_12ScamperSniff_list, 0, PyDoc_STR("\n        get list associated with this measurement.\n\n        :returns: the list\n        :rtype: ScamperList\n        "), 0},
  {"cycle", __pyx_getprop_7scamper_12ScamperSniff_cycle, 0, PyDoc_STR("\n        get cycle associated with this measurement.\n\n        :returns: the cycle\n        :rtype: ScamperCycle\n        "), 0},
  {"stop_reason", __pyx_getprop_7scamper_12ScamperSniff_stop_reason, 0, PyDoc_STR("\n        get method to obtain the stop reason.\n\n        :returns: the stop reason\n        :rtype: ScamperSniffStop\n        "), 0},
  {"userid", __pyx_getprop_7scamper_12ScamperSniff_userid, 0, PyDoc_STR("\n        get method to obtain the userid parameter.\n\n        :returns: the userid\n        :rtype: int\n        "), 0},
  {"src", __pyx_getprop_7scamper_12ScamperSniff_src, 0, PyDoc_STR("\n        get method to obtain the source address of the interface listened\n        on.\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"start", __pyx_getprop_7scamper_12ScamperSniff_start, 0, PyDoc_STR("\n        get method to obtain the time this measurement started.\n\n        :returns: the start timestamp\n        :rtype: datetime\n        "), 0},
  {"finish", __pyx_getprop_7scamper_12ScamperSniff_finish, 0, PyDoc_STR("\n        get method to obtain the time this measurement finished.\n\n        :returns: the finish timestamp\n        :rtype: datetime\n        "), 0},
  {"limit_pkt_count", __pyx_getprop_7scamper_12ScamperSniff_limit_pkt_count, 0, PyDoc_STR("\n        get method to obtain the maximum number of packets that this sniff\n        measurement would have waited for before finishing.\n\n        :returns: the packet limit\n        :rtype: int\n        "), 0},
  {"limit_time", __pyx_getprop_7scamper_12ScamperSniff_limit_time, 0, PyDoc_STR("\n        get method to obtain the maximum length of time that this sniff\n        measurement would have waited for before finishing.\n\n        :returns: the time limit\n        :rtype: timedelta\n        "), 0},
  {"icmp_id", __pyx_getprop_7scamper_12ScamperSniff_icmp_id, 0, PyDoc_STR("\n        get method to obtain the ICMP ID sniffed\n\n        :returns: the ICMP ID sniffed\n        :rtype: int\n        "), 0},
  {"pkt_count", __pyx_getprop_7scamper_12ScamperSniff_pkt_count, 0, PyDoc_STR("\n        get method to obtain the number of packets captured\n\n        :returns: the number of captured packets\n        :rtype: int\n        "), 0},
  {"_inst", __pyx_getprop_7scamper_12ScamperSniff__inst, __pyx_setprop_7scamper_12ScamperSniff__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperSniff_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperSniff},
  {Py_sq_length, (void *)__pyx_pw_7scamper_12ScamperSniff_5__len__},
  {Py_mp_length, (void *)__pyx_pw_7scamper_12ScamperSniff_5__len__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperSniff` is used by scamper to store information about\n    packets captured in a :class:`ScamperSniff` measurement.  Each\n    packet is available in a :class:`ScamperSniffPkt` object.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperSniff},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperSniff},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_12ScamperSniff_7__iter__},
  {Py_tp_iternext, (void *)__pyx_pw_7scamper_12ScamperSniff_9__next__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperSniff},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperSniff},
  {Py_tp_init, (void *)__pyx_pw_7scamper_12ScamperSniff_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperSniff},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperSniff_spec = {
  "scamper.ScamperSniff",
  sizeof(struct __pyx_obj_7scamper_ScamperSniff),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperSniff_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_ScamperSniff = {
  __pyx_pw_7scamper_12ScamperSniff_5__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ScamperSniff = {
  __pyx_pw_7scamper_12ScamperSniff_5__len__, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_7scamper_ScamperSniff = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperSniff", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperSniff), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperSniff, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_ScamperSniff, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ScamperSniff, /*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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    :class:`ScamperSniff` is used by scamper to store information about\n    packets captured in a :class:`ScamperSniff` measurement.  Each\n    packet is available in a :class:`ScamperSniffPkt` object.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperSniff, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperSniff, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_12ScamperSniff_7__iter__, /*tp_iter*/
  __pyx_pw_7scamper_12ScamperSniff_9__next__, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperSniff, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperSniff, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_12ScamperSniff_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperSniff, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHostMX __pyx_vtable_7scamper_ScamperHostMX;

static PyObject *__pyx_tp_new_7scamper_ScamperHostMX(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHostMX *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHostMX *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHostMX;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHostMX(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHostMX) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_13ScamperHostMX_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostMX_pref(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostMX_4pref_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostMX_exch(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostMX_4exch_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperHostMX[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_13ScamperHostMX_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_13ScamperHostMX_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHostMX[] = {
  {"pref", __pyx_getprop_7scamper_13ScamperHostMX_pref, 0, PyDoc_STR("\n        get method to obtain the preference value as encoded in the\n        preference field of the MX resource record.\n\n        :returns: the preference value\n        :rtype: int\n        "), 0},
  {"exch", __pyx_getprop_7scamper_13ScamperHostMX_exch, 0, PyDoc_STR("\n        get method to obtain the exchange string as encoded in the\n        exchange field of the MX resource record.\n\n        :returns: the mail exchanger\n        :rtype: string\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHostMX_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHostMX},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperHostMX` object stores fields from the MX resource record.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHostMX},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHostMX},
  {Py_tp_init, (void *)__pyx_pw_7scamper_13ScamperHostMX_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHostMX},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHostMX_spec = {
  "scamper.ScamperHostMX",
  sizeof(struct __pyx_obj_7scamper_ScamperHostMX),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperHostMX_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperHostMX = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHostMX", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHostMX), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHostMX, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    The :class:`ScamperHostMX` object stores fields from the MX resource record.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHostMX, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHostMX, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_13ScamperHostMX_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHostMX, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHostSOA __pyx_vtable_7scamper_ScamperHostSOA;

static PyObject *__pyx_tp_new_7scamper_ScamperHostSOA(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHostSOA *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHostSOA *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHostSOA;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHostSOA(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHostSOA) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_14ScamperHostSOA_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_14ScamperHostSOA_mname(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHostSOA_5mname_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperHostSOA_rname(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHostSOA_5rname_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperHostSOA_serial(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHostSOA_6serial_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperHostSOA_refresh(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHostSOA_7refresh_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperHostSOA_retry(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHostSOA_5retry_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperHostSOA_expire(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHostSOA_6expire_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperHostSOA_minimum(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHostSOA_7minimum_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperHostSOA[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostSOA_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostSOA_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHostSOA[] = {
  {"mname", __pyx_getprop_7scamper_14ScamperHostSOA_mname, 0, PyDoc_STR("\n        get method to obtain the primary master name server for the zone,\n        as encoded in the mname field of the SOA.\n\n        :returns: the name server\n        :rtype: string\n        "), 0},
  {"rname", __pyx_getprop_7scamper_14ScamperHostSOA_rname, 0, PyDoc_STR("\n        get method to obtain the email address of the administrator\n        responsible for the zone, as encoded in the rname field of the\n        SOA.\n\n        :returns: the email address\n        :rtype: string\n        "), 0},
  {"serial", __pyx_getprop_7scamper_14ScamperHostSOA_serial, 0, PyDoc_STR("\n        get method to obtain the serial number for the zone, as encoded\n        in the serial field of the SOA.\n\n        :returns: the serial number\n        :rtype: int\n        "), 0},
  {"refresh", __pyx_getprop_7scamper_14ScamperHostSOA_refresh, 0, PyDoc_STR("\n        get method to obtain the time interval before the zone should\n        be refreshed from the master, as encoded in the refresh field of\n        the SOA.\n\n        :returns: the refresh interval\n        :rtype: int\n        "), 0},
  {"retry", __pyx_getprop_7scamper_14ScamperHostSOA_retry, 0, PyDoc_STR("\n        get method to obtain the time interval that should elapse before\n        a failed refresh should be retried, as encoded in the retry field\n        of the SOA.\n\n        :returns: the retry interval\n        :rtype: int\n        "), 0},
  {"expire", __pyx_getprop_7scamper_14ScamperHostSOA_expire, 0, PyDoc_STR("\n        get method to obtain the upper limit on the time interval that\n        can elapse before the zone is no longer authoritative, as encoded\n        in the expire field of the SOA.\n\n        :returns: the expire interval\n        :rtype: int\n        "), 0},
  {"minimum", __pyx_getprop_7scamper_14ScamperHostSOA_minimum, 0, PyDoc_STR("\n        get method to obtain the minimum TTL field that should be\n        exported with any resource record from this zone, as encoded\n        in the minimum field of the SOA.\n\n        :returns: the minimum TTL\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHostSOA_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHostSOA},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperHostSOA` object stores fields from the SOA resource\n    record.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHostSOA},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHostSOA},
  {Py_tp_init, (void *)__pyx_pw_7scamper_14ScamperHostSOA_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHostSOA},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHostSOA_spec = {
  "scamper.ScamperHostSOA",
  sizeof(struct __pyx_obj_7scamper_ScamperHostSOA),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperHostSOA_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperHostSOA = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHostSOA", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHostSOA), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHostSOA, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    The :class:`ScamperHostSOA` object stores fields from the SOA resource\n    record.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHostSOA, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHostSOA, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_14ScamperHostSOA_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHostSOA, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHostTXT __pyx_vtable_7scamper_ScamperHostTXT;

static PyObject *__pyx_tp_new_7scamper_ScamperHostTXT(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHostTXT *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHostTXT *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHostTXT;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHostTXT(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHostTXT) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_14ScamperHostTXT_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_14ScamperHostTXT_strc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHostTXT_4strc_1__get__(o);
}

static PyObject *__pyx_specialmethod___pyx_pw_7scamper_14ScamperHostTXT_7__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  PyObject *res = __pyx_pw_7scamper_14ScamperHostTXT_7__next__(self);
  if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); }
  return res;
}

static PyMethodDef __pyx_methods_7scamper_ScamperHostTXT[] = {
  {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_7scamper_14ScamperHostTXT_7__next__, METH_NOARGS|METH_COEXIST, 0},
  {"str", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostTXT_9str, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHostTXT_8str},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostTXT_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostTXT_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHostTXT[] = {
  {"strc", __pyx_getprop_7scamper_14ScamperHostTXT_strc, 0, PyDoc_STR("\n        get method to obtain the number of strings in this TXT record.\n\n        :returns: the number of strings\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHostTXT_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHostTXT},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperHostTXT` object stores fields from the TXT resource\n    record.\n    ")},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_14ScamperHostTXT_5__iter__},
  {Py_tp_iternext, (void *)__pyx_pw_7scamper_14ScamperHostTXT_7__next__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHostTXT},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHostTXT},
  {Py_tp_init, (void *)__pyx_pw_7scamper_14ScamperHostTXT_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHostTXT},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHostTXT_spec = {
  "scamper.ScamperHostTXT",
  sizeof(struct __pyx_obj_7scamper_ScamperHostTXT),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperHostTXT_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperHostTXT = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHostTXT", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHostTXT), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHostTXT, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    The :class:`ScamperHostTXT` object stores fields from the TXT resource\n    record.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_14ScamperHostTXT_5__iter__, /*tp_iter*/
  __pyx_pw_7scamper_14ScamperHostTXT_7__next__, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHostTXT, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHostTXT, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_14ScamperHostTXT_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHostTXT, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHostOPTElem __pyx_vtable_7scamper_ScamperHostOPTElem;

static PyObject *__pyx_tp_new_7scamper_ScamperHostOPTElem(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHostOPTElem *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHostOPTElem *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHostOPTElem;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHostOPTElem(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHostOPTElem) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_18ScamperHostOPTElem_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_18ScamperHostOPTElem_code_num(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_18ScamperHostOPTElem_8code_num_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_18ScamperHostOPTElem_code(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_18ScamperHostOPTElem_4code_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_18ScamperHostOPTElem_data(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_18ScamperHostOPTElem_4data_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperHostOPTElem[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperHostOPTElem_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_18ScamperHostOPTElem_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHostOPTElem[] = {
  {"code_num", __pyx_getprop_7scamper_18ScamperHostOPTElem_code_num, 0, PyDoc_STR("\n        get method to obtain the code of the OPT element, as a number\n\n        :returns: the code\n        :rtype: int\n        "), 0},
  {"code", __pyx_getprop_7scamper_18ScamperHostOPTElem_code, 0, PyDoc_STR("\n        get method to obtain the code of the OPT element, as a string\n\n        :returns: the code\n        :rtype: string\n        "), 0},
  {"data", __pyx_getprop_7scamper_18ScamperHostOPTElem_data, 0, PyDoc_STR("\n        get method to obtain any data in the OPT element.\n\n        :returns: data\n        :rtype: bytes\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHostOPTElem_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHostOPTElem},
  {Py_sq_length, (void *)__pyx_pw_7scamper_18ScamperHostOPTElem_5__len__},
  {Py_mp_length, (void *)__pyx_pw_7scamper_18ScamperHostOPTElem_5__len__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperHostOPTElem` object stores an element from the OPT\n    resource record.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHostOPTElem},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHostOPTElem},
  {Py_tp_init, (void *)__pyx_pw_7scamper_18ScamperHostOPTElem_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHostOPTElem},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHostOPTElem_spec = {
  "scamper.ScamperHostOPTElem",
  sizeof(struct __pyx_obj_7scamper_ScamperHostOPTElem),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperHostOPTElem_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_ScamperHostOPTElem = {
  __pyx_pw_7scamper_18ScamperHostOPTElem_5__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ScamperHostOPTElem = {
  __pyx_pw_7scamper_18ScamperHostOPTElem_5__len__, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_7scamper_ScamperHostOPTElem = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHostOPTElem", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHostOPTElem), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHostOPTElem, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_ScamperHostOPTElem, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ScamperHostOPTElem, /*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*/
  PyDoc_STR("\n    The :class:`ScamperHostOPTElem` object stores an element from the OPT\n    resource record.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHostOPTElem, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHostOPTElem, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_18ScamperHostOPTElem_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHostOPTElem, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHostOPT __pyx_vtable_7scamper_ScamperHostOPT;

static PyObject *__pyx_tp_new_7scamper_ScamperHostOPT(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHostOPT *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHostOPT *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHostOPT;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHostOPT(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHostOPT) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_14ScamperHostOPT_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_14ScamperHostOPT_elemc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHostOPT_5elemc_1__get__(o);
}

static PyObject *__pyx_specialmethod___pyx_pw_7scamper_14ScamperHostOPT_7__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  PyObject *res = __pyx_pw_7scamper_14ScamperHostOPT_7__next__(self);
  if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); }
  return res;
}

static PyMethodDef __pyx_methods_7scamper_ScamperHostOPT[] = {
  {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_7scamper_14ScamperHostOPT_7__next__, METH_NOARGS|METH_COEXIST, 0},
  {"elem", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostOPT_9elem, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHostOPT_8elem},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostOPT_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHostOPT_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHostOPT[] = {
  {"elemc", __pyx_getprop_7scamper_14ScamperHostOPT_elemc, 0, PyDoc_STR("\n        get method to obtain the number of elements in this OPT record.\n\n        :returns: the number of elements\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHostOPT_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHostOPT},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperHostOPT` object stores fields from the OPT resource\n    record.\n    ")},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_14ScamperHostOPT_5__iter__},
  {Py_tp_iternext, (void *)__pyx_pw_7scamper_14ScamperHostOPT_7__next__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHostOPT},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHostOPT},
  {Py_tp_init, (void *)__pyx_pw_7scamper_14ScamperHostOPT_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHostOPT},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHostOPT_spec = {
  "scamper.ScamperHostOPT",
  sizeof(struct __pyx_obj_7scamper_ScamperHostOPT),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperHostOPT_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperHostOPT = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHostOPT", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHostOPT), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHostOPT, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    The :class:`ScamperHostOPT` object stores fields from the OPT resource\n    record.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_14ScamperHostOPT_5__iter__, /*tp_iter*/
  __pyx_pw_7scamper_14ScamperHostOPT_7__next__, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHostOPT, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHostOPT, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_14ScamperHostOPT_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHostOPT, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHostSVCBParam __pyx_vtable_7scamper_ScamperHostSVCBParam;

static PyObject *__pyx_tp_new_7scamper_ScamperHostSVCBParam(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHostSVCBParam *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHostSVCBParam *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHostSVCBParam;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHostSVCBParam(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHostSVCBParam) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_20ScamperHostSVCBParam_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_20ScamperHostSVCBParam_key_num(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperHostSVCBParam_7key_num_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_20ScamperHostSVCBParam_key(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperHostSVCBParam_3key_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_20ScamperHostSVCBParam_val(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperHostSVCBParam_3val_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperHostSVCBParam[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperHostSVCBParam_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperHostSVCBParam_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHostSVCBParam[] = {
  {"key_num", __pyx_getprop_7scamper_20ScamperHostSVCBParam_key_num, 0, PyDoc_STR("\n        get method to obtain the key of the SVCB parameter, as a number\n\n        :returns: the key value\n        :rtype: int\n        "), 0},
  {"key", __pyx_getprop_7scamper_20ScamperHostSVCBParam_key, 0, PyDoc_STR("\n        get method to obtain the key of the SVCB parameter, as a string\n\n        :returns: the key\n        :rtype: string\n        "), 0},
  {"val", __pyx_getprop_7scamper_20ScamperHostSVCBParam_val, 0, PyDoc_STR("\n        get method to obtain the value attached to the SVCB parameter\n\n        :returns: data\n        :rtype: bytes\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHostSVCBParam_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHostSVCBParam},
  {Py_sq_length, (void *)__pyx_pw_7scamper_20ScamperHostSVCBParam_5__len__},
  {Py_mp_length, (void *)__pyx_pw_7scamper_20ScamperHostSVCBParam_5__len__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperHosSVCBParam` object stores an element from the SVCB\n    resource record.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHostSVCBParam},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHostSVCBParam},
  {Py_tp_init, (void *)__pyx_pw_7scamper_20ScamperHostSVCBParam_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHostSVCBParam},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHostSVCBParam_spec = {
  "scamper.ScamperHostSVCBParam",
  sizeof(struct __pyx_obj_7scamper_ScamperHostSVCBParam),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperHostSVCBParam_slots,
};
#else

static PySequenceMethods __pyx_tp_as_sequence_ScamperHostSVCBParam = {
  __pyx_pw_7scamper_20ScamperHostSVCBParam_5__len__, /*sq_length*/
  0, /*sq_concat*/
  0, /*sq_repeat*/
  0, /*sq_item*/
  0, /*sq_slice*/
  0, /*sq_ass_item*/
  0, /*sq_ass_slice*/
  0, /*sq_contains*/
  0, /*sq_inplace_concat*/
  0, /*sq_inplace_repeat*/
};

static PyMappingMethods __pyx_tp_as_mapping_ScamperHostSVCBParam = {
  __pyx_pw_7scamper_20ScamperHostSVCBParam_5__len__, /*mp_length*/
  0, /*mp_subscript*/
  0, /*mp_ass_subscript*/
};

static PyTypeObject __pyx_type_7scamper_ScamperHostSVCBParam = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHostSVCBParam", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHostSVCBParam), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHostSVCBParam, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  &__pyx_tp_as_sequence_ScamperHostSVCBParam, /*tp_as_sequence*/
  &__pyx_tp_as_mapping_ScamperHostSVCBParam, /*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*/
  PyDoc_STR("\n    The :class:`ScamperHosSVCBParam` object stores an element from the SVCB\n    resource record.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHostSVCBParam, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHostSVCBParam, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_20ScamperHostSVCBParam_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHostSVCBParam, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHostSVCB __pyx_vtable_7scamper_ScamperHostSVCB;

static PyObject *__pyx_tp_new_7scamper_ScamperHostSVCB(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHostSVCB *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHostSVCB *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHostSVCB;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHostSVCB(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHostSVCB) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_15ScamperHostSVCB_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_15ScamperHostSVCB_target(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperHostSVCB_6target_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperHostSVCB_priority(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperHostSVCB_8priority_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperHostSVCB_paramc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperHostSVCB_6paramc_1__get__(o);
}

static PyObject *__pyx_specialmethod___pyx_pw_7scamper_15ScamperHostSVCB_7__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  PyObject *res = __pyx_pw_7scamper_15ScamperHostSVCB_7__next__(self);
  if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); }
  return res;
}

static PyMethodDef __pyx_methods_7scamper_ScamperHostSVCB[] = {
  {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_7scamper_15ScamperHostSVCB_7__next__, METH_NOARGS|METH_COEXIST, 0},
  {"param", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperHostSVCB_9param, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperHostSVCB_8param},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperHostSVCB_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperHostSVCB_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHostSVCB[] = {
  {"target", __pyx_getprop_7scamper_15ScamperHostSVCB_target, 0, PyDoc_STR("\n        get method to obtain the target name in this SVCB record.\n\n        :returns: the target name\n        :rtype: string\n        "), 0},
  {"priority", __pyx_getprop_7scamper_15ScamperHostSVCB_priority, 0, PyDoc_STR("\n        get method to obtain the priority of this SVCB record.\n\n        :returns: the priority\n        :rtype: int\n        "), 0},
  {"paramc", __pyx_getprop_7scamper_15ScamperHostSVCB_paramc, 0, PyDoc_STR("\n        get method to obtain the number of parameters in this SVCB record.\n\n        :returns: the number of parameters\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHostSVCB_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHostSVCB},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperHostSVCB` object stores fields from the SVCB resource\n    record.\n    ")},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_15ScamperHostSVCB_5__iter__},
  {Py_tp_iternext, (void *)__pyx_pw_7scamper_15ScamperHostSVCB_7__next__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHostSVCB},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHostSVCB},
  {Py_tp_init, (void *)__pyx_pw_7scamper_15ScamperHostSVCB_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHostSVCB},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHostSVCB_spec = {
  "scamper.ScamperHostSVCB",
  sizeof(struct __pyx_obj_7scamper_ScamperHostSVCB),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperHostSVCB_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperHostSVCB = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHostSVCB", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHostSVCB), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHostSVCB, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    The :class:`ScamperHostSVCB` object stores fields from the SVCB resource\n    record.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_15ScamperHostSVCB_5__iter__, /*tp_iter*/
  __pyx_pw_7scamper_15ScamperHostSVCB_7__next__, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHostSVCB, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHostSVCB, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_15ScamperHostSVCB_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHostSVCB, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHostRR __pyx_vtable_7scamper_ScamperHostRR;

static PyObject *__pyx_tp_new_7scamper_ScamperHostRR(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHostRR *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHostRR *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHostRR;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHostRR(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHostRR) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_13ScamperHostRR_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_rclass(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_6rclass_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_rtype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_5rtype_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_ttl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_3ttl_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_4name_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_addr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_4addr_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_ns(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_2ns_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_cname(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_5cname_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_ptr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_3ptr_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_mx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_2mx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_soa(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_3soa_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_txt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_3txt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_opt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_3opt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_svcb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_4svcb_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_udpsize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_7udpsize_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_edns_version(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_12edns_version_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_13ScamperHostRR_edns_do(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_13ScamperHostRR_7edns_do_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperHostRR[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_13ScamperHostRR_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_13ScamperHostRR_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHostRR[] = {
  {"rclass", __pyx_getprop_7scamper_13ScamperHostRR_rclass, 0, PyDoc_STR("\n        get method to obtain the numeric class value of this RR\n\n        :returns: class value\n        :rtype: int\n        "), 0},
  {"rtype", __pyx_getprop_7scamper_13ScamperHostRR_rtype, 0, PyDoc_STR("\n        get method to obtain the numeric type value of this RR\n\n        :returns: type value\n        :rtype: int\n        "), 0},
  {"ttl", __pyx_getprop_7scamper_13ScamperHostRR_ttl, 0, PyDoc_STR("\n        get method to obtain the TTL value of this RR\n\n        :returns: TTL value\n        :rtype: int\n        "), 0},
  {"name", __pyx_getprop_7scamper_13ScamperHostRR_name, 0, PyDoc_STR("\n        get method to obtain the name queried for this RR\n\n        :returns: name\n        :rtype: string\n        "), 0},
  {"addr", __pyx_getprop_7scamper_13ScamperHostRR_addr, 0, PyDoc_STR("\n        get method to obtain the address contained in the RR, if the\n        record contains an address (A or AAAA)\n\n        :returns: the address value\n        :rtype: ScamperAddr\n        "), 0},
  {"ns", __pyx_getprop_7scamper_13ScamperHostRR_ns, 0, PyDoc_STR("\n        get method to obtain the name server reported in the RR.\n\n        :returns: the NS reported\n        :rtype: string\n        "), 0},
  {"cname", __pyx_getprop_7scamper_13ScamperHostRR_cname, 0, PyDoc_STR("\n        get method to obtain the canonical name (cname) reported\n\n        :returns: the cname\n        :rtype: string\n        "), 0},
  {"ptr", __pyx_getprop_7scamper_13ScamperHostRR_ptr, 0, PyDoc_STR("\n        get method to obtain the PTR value in the RR\n\n        :returns: the PTR value\n        :rtype: string\n        "), 0},
  {"mx", __pyx_getprop_7scamper_13ScamperHostRR_mx, 0, PyDoc_STR("\n        get method to obtain an object that contains the MX record.\n\n        :returns: the MX record\n        :rtype: ScamperHostMX\n        "), 0},
  {"soa", __pyx_getprop_7scamper_13ScamperHostRR_soa, 0, PyDoc_STR("\n        get method to obtain an object that contains the SOA record.\n\n        :returns: the SOA record\n        :rtype: ScamperHostSOA\n        "), 0},
  {"txt", __pyx_getprop_7scamper_13ScamperHostRR_txt, 0, PyDoc_STR("\n        get method to obtain an object that contains the TXT record.\n\n        :returns: the TXT record\n        :rtype: ScamperHostTXT\n        "), 0},
  {"opt", __pyx_getprop_7scamper_13ScamperHostRR_opt, 0, PyDoc_STR("\n        get method to obtain an object that contains the OPT record.\n\n        :returns: the OPT record\n        :rtype: ScamperHostOPT\n        "), 0},
  {"svcb", __pyx_getprop_7scamper_13ScamperHostRR_svcb, 0, PyDoc_STR("\n        get method to obtain an object that contains the SVCB record.\n\n        :returns: the SVCB record\n        :rtype: ScamperHostSVCB\n        "), 0},
  {"udpsize", __pyx_getprop_7scamper_13ScamperHostRR_udpsize, 0, PyDoc_STR("\n        get method to obtain the UDP payload size reported in the\n        OPT record.\n\n        :returns: the reported UDP buffer size\n        :rtype: int\n        "), 0},
  {"edns_version", __pyx_getprop_7scamper_13ScamperHostRR_edns_version, 0, PyDoc_STR("\n        get method to obtain the EDNS version reported in the\n        OPT record.\n\n        :returns: the reported EDNS version\n        :rtype: int\n        "), 0},
  {"edns_do", __pyx_getprop_7scamper_13ScamperHostRR_edns_do, 0, PyDoc_STR("\n        get method to obtain the value of the EDNS DO flag reported in the\n        OPT record.\n\n        :returns: the reported EDNS DO flag\n        :rtype: bool\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHostRR_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHostRR},
  {Py_tp_str, (void *)__pyx_pw_7scamper_13ScamperHostRR_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperHostRR` object stores fields from a DNS resource record.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHostRR},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHostRR},
  {Py_tp_init, (void *)__pyx_pw_7scamper_13ScamperHostRR_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHostRR},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHostRR_spec = {
  "scamper.ScamperHostRR",
  sizeof(struct __pyx_obj_7scamper_ScamperHostRR),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperHostRR_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperHostRR = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHostRR", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHostRR), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHostRR, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_13ScamperHostRR_5__str__, /*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*/
  PyDoc_STR("\n    The :class:`ScamperHostRR` object stores fields from a DNS resource record.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHostRR, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHostRR, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_13ScamperHostRR_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHostRR, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHostQuery __pyx_vtable_7scamper_ScamperHostQuery;

static PyObject *__pyx_tp_new_7scamper_ScamperHostQuery(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHostQuery *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHostQuery *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHostQuery;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHostQuery(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHostQuery) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_16ScamperHostQuery_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_tx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_2tx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_rx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_2rx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_rtt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_3rtt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_rcode_num(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_9rcode_num_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_rcode(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_5rcode_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_extended_rcode_num(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_18extended_rcode_num_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_extended_rcode(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_14extended_rcode_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_flags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_5flags_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_id(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_2id_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_ancount(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_7ancount_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_nscount(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_7nscount_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_arcount(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_7arcount_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_udpsize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_7udpsize_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_edns_version(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_12edns_version_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_16ScamperHostQuery_edns_do(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_16ScamperHostQuery_7edns_do_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperHostQuery[] = {
  {"an", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperHostQuery_5an, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperHostQuery_4an},
  {"ns", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperHostQuery_7ns, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperHostQuery_6ns},
  {"ar", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperHostQuery_9ar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_16ScamperHostQuery_8ar},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperHostQuery_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_16ScamperHostQuery_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHostQuery[] = {
  {"tx", __pyx_getprop_7scamper_16ScamperHostQuery_tx, 0, PyDoc_STR("\n        get method that returns the time when the DNS query was made.\n\n        :returns: the transmit time for the query\n        :rtype: datetime\n        "), 0},
  {"rx", __pyx_getprop_7scamper_16ScamperHostQuery_rx, 0, PyDoc_STR("\n        get method that returns the time when a DNS response was received.\n\n        :returns: the time when a response was received, or None if no response\n        :rtype: datetime\n        "), 0},
  {"rtt", __pyx_getprop_7scamper_16ScamperHostQuery_rtt, 0, PyDoc_STR("\n        get method that returns the the delay between query and response\n        for the query\n\n        :returns: the delay between query and response\n        :rtype: timedelta\n        "), 0},
  {"rcode_num", __pyx_getprop_7scamper_16ScamperHostQuery_rcode_num, 0, PyDoc_STR("\n        get method that returns the rcode of the response, as a number\n\n        :returns: the rcode\n        :rtype: int\n        "), 0},
  {"rcode", __pyx_getprop_7scamper_16ScamperHostQuery_rcode, 0, PyDoc_STR("\n        get method that returns the rcode of the response, as a string\n\n        :returns: the rcode\n        :rtype: string\n        "), 0},
  {"extended_rcode_num", __pyx_getprop_7scamper_16ScamperHostQuery_extended_rcode_num, 0, PyDoc_STR("\n        get method that returns an extended rcode from the response.\n        if the response does not include an extended rcode, then this\n        will be the same as calling rcode_num.\n\n        :returns: the extended rcode\n        :rtype: int\n        "), 0},
  {"extended_rcode", __pyx_getprop_7scamper_16ScamperHostQuery_extended_rcode, 0, PyDoc_STR("\n        get method that returns an extended rcode from the response.\n        if the response does not include an extended rcode, then this\n        will be the same as calling rcode.\n\n        :returns: the extended rcode\n        :rtype: int\n        "), 0},
  {"flags", __pyx_getprop_7scamper_16ScamperHostQuery_flags, 0, PyDoc_STR("\n        get method that returns the flags from the reply\n\n        :returns: the flags\n        :rtype: int\n        "), 0},
  {"id", __pyx_getprop_7scamper_16ScamperHostQuery_id, 0, PyDoc_STR("\n        get method that returns the id set in the query\n\n        :returns: the id number\n        :rtype: int\n        "), 0},
  {"ancount", __pyx_getprop_7scamper_16ScamperHostQuery_ancount, 0, PyDoc_STR("\n        get method that returns the number of RRs in the answer section\n\n        :returns: the number of answer RRs\n        :rtype: int\n        "), 0},
  {"nscount", __pyx_getprop_7scamper_16ScamperHostQuery_nscount, 0, PyDoc_STR("\n        get method that returns the number of RRs in the NS section\n\n        :returns: the number of NS RRs\n        :rtype: int\n        "), 0},
  {"arcount", __pyx_getprop_7scamper_16ScamperHostQuery_arcount, 0, PyDoc_STR("\n        get method that returns the number of RRs in the AR section\n\n        :returns: the number of AR RRs\n        :rtype: int\n        "), 0},
  {"udpsize", __pyx_getprop_7scamper_16ScamperHostQuery_udpsize, 0, PyDoc_STR("\n        get method to obtain the UDP payload size reported in the\n        OPT record found in the AR section of the response, if any.\n\n        :returns: the reported UDP buffer size\n        :rtype: int\n        "), 0},
  {"edns_version", __pyx_getprop_7scamper_16ScamperHostQuery_edns_version, 0, PyDoc_STR("\n        get method to obtain the EDNS version reported in the\n        OPT record found in the AR section of the response, if any.\n\n        :returns: the reported EDNS version\n        :rtype: int\n        "), 0},
  {"edns_do", __pyx_getprop_7scamper_16ScamperHostQuery_edns_do, 0, PyDoc_STR("\n        get method to obtain the value of the EDNS DO flag reported in the\n        OPT record found in the AR section of the response, if any.\n\n        :returns: the reported EDNS DO flag\n        :rtype: bool\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHostQuery_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHostQuery},
  {Py_tp_doc, (void *)PyDoc_STR("\n    The :class:`ScamperHostQuery` object stores information about a DNS query.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHostQuery},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHostQuery},
  {Py_tp_init, (void *)__pyx_pw_7scamper_16ScamperHostQuery_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHostQuery},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHostQuery_spec = {
  "scamper.ScamperHostQuery",
  sizeof(struct __pyx_obj_7scamper_ScamperHostQuery),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperHostQuery_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperHostQuery = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHostQuery", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHostQuery), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHostQuery, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    The :class:`ScamperHostQuery` object stores information about a DNS query.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHostQuery, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHostQuery, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_16ScamperHostQuery_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHostQuery, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHost __pyx_vtable_7scamper_ScamperHost;

static PyObject *__pyx_tp_new_7scamper_ScamperHost(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHost *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHost *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHost;
  p->_q = ((struct __pyx_obj_7scamper_ScamperHostQuery *)Py_None); Py_INCREF(Py_None);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHost(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperHost *p = (struct __pyx_obj_7scamper_ScamperHost *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHost) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_11ScamperHost_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_q);
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperHost(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperHost *p = (struct __pyx_obj_7scamper_ScamperHost *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_q) {
    e = (*v)(((PyObject *)p->_q), a); if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperHost(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperHost *p = (struct __pyx_obj_7scamper_ScamperHost *)o;
  tmp = ((PyObject*)p->_q);
  p->_q = ((struct __pyx_obj_7scamper_ScamperHostQuery *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_list(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_4list_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_cycle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_5cycle_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_dst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_3dst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_userid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_6userid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_qtype_num(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_9qtype_num_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_qtype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_5qtype_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_qclass(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_6qclass_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_qname(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_5qname_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_ecs(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_3ecs_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_rcode_num(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_9rcode_num_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_rcode(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_5rcode_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_extended_rcode_num(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_18extended_rcode_num_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_extended_rcode(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_14extended_rcode_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_tx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_2tx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_rx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_2rx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_rtt(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_3rtt_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_ancount(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_7ancount_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_nscount(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_7nscount_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_arcount(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_7arcount_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_udpsize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_7udpsize_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_edns_version(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_12edns_version_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost_edns_do(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_7edns_do_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHost__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHost_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperHost__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperHost_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_11ScamperHost_5_inst_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7scamper_ScamperHost[] = {
  {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_5to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_4to_json},
  {"an", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_7an, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_6an},
  {"ans", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_9ans, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_8ans},
  {"ns", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_11ns, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_10ns},
  {"nss", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_13nss, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_12nss},
  {"ar", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_15ar, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_14ar},
  {"ars", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_17ars, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_16ars},
  {"ans_addrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_19ans_addrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_18ans_addrs},
  {"ans_nses", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_21ans_nses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_20ans_nses},
  {"ans_ptrs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_23ans_ptrs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_22ans_ptrs},
  {"ans_txts", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_25ans_txts, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_24ans_txts},
  {"ans_mxes", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_27ans_mxes, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHost_26ans_mxes},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_29__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHost_31__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHost[] = {
  {"inst", __pyx_getprop_7scamper_11ScamperHost_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"list", __pyx_getprop_7scamper_11ScamperHost_list, 0, PyDoc_STR("\n        get list associated with this measurement.\n\n        :returns: the list\n        :rtype: ScamperList\n        "), 0},
  {"cycle", __pyx_getprop_7scamper_11ScamperHost_cycle, 0, PyDoc_STR("\n        get cycle associated with this measurement.\n\n        :returns: the cycle\n        :rtype: ScamperCycle\n        "), 0},
  {"src", __pyx_getprop_7scamper_11ScamperHost_src, 0, PyDoc_STR("\n        get method to obtain the source address this measurement\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"dst", __pyx_getprop_7scamper_11ScamperHost_dst, 0, PyDoc_STR("\n        get method to obtain the destination address for a DNS measurement\n\n        :returns: the destination address\n        :rtype: ScamperAddr\n        "), 0},
  {"userid", __pyx_getprop_7scamper_11ScamperHost_userid, 0, PyDoc_STR("\n        get method to obtain the userid parameter.\n\n        :returns: the userid\n        :rtype: int\n        "), 0},
  {"start", __pyx_getprop_7scamper_11ScamperHost_start, 0, PyDoc_STR("\n        get method to obtain the time this measurement started.\n\n        :returns: the start timestamp\n        :rtype: datetime\n        "), 0},
  {"qtype_num", __pyx_getprop_7scamper_11ScamperHost_qtype_num, 0, PyDoc_STR("\n        get method to obtain the qtype for this DNS measurement\n\n        :returns: the qtype number\n        :rtype: int\n        "), 0},
  {"qtype", __pyx_getprop_7scamper_11ScamperHost_qtype, 0, PyDoc_STR("\n        get method to obtain the qtype for this DNS measurement\n\n        :returns: the qtype string\n        :rtype: string\n        "), 0},
  {"qclass", __pyx_getprop_7scamper_11ScamperHost_qclass, 0, PyDoc_STR("\n        get method to obtain the qclass for this DNS measurement\n\n        :returns: the qclass string\n        :rtype: string\n        "), 0},
  {"qname", __pyx_getprop_7scamper_11ScamperHost_qname, 0, PyDoc_STR("\n        get method to obtain the qname for this DNS measurement\n\n        :returns: the qname\n        :rtype: string\n        "), 0},
  {"ecs", __pyx_getprop_7scamper_11ScamperHost_ecs, 0, PyDoc_STR("\n        get method to obtain the value of the EDNS-Client-Subnet included\n        in the query for this DNS measurement\n\n        :returns: the ecs value\n        :rtype: string\n        "), 0},
  {"rcode_num", __pyx_getprop_7scamper_11ScamperHost_rcode_num, 0, PyDoc_STR("\n        get method that returns the rcode from the first query with a\n        response, as a number\n\n        :returns: the rcode\n        :rtype: int\n        "), 0},
  {"rcode", __pyx_getprop_7scamper_11ScamperHost_rcode, 0, PyDoc_STR("\n        get method to obtain the rcode from the first query with a response\n\n        :returns: the rcode\n        :rtype: string\n        "), 0},
  {"extended_rcode_num", __pyx_getprop_7scamper_11ScamperHost_extended_rcode_num, 0, PyDoc_STR("\n        get method that returns an extended rcode from the first query\n        with a response, as a number.\n        if the response does not include an extended rcode, then this\n        will be the same as calling rcode_num.\n\n        :returns: the extended rcode\n        :rtype: int\n        "), 0},
  {"extended_rcode", __pyx_getprop_7scamper_11ScamperHost_extended_rcode, 0, PyDoc_STR("\n        get method that returns an extended rcode from the first query\n        with a response.\n        if the response does not include an extended rcode, then this\n        will be the same as calling rcode.\n\n        :returns: the extended rcode\n        :rtype: string\n        "), 0},
  {"tx", __pyx_getprop_7scamper_11ScamperHost_tx, 0, PyDoc_STR("\n        get method to obtain the transmit time for the first query with\n        a response\n\n        :returns: the transmit timestamp\n        :rtype: datetime\n        "), 0},
  {"rx", __pyx_getprop_7scamper_11ScamperHost_rx, 0, PyDoc_STR("\n        get method to obtain the receive time for the first query with\n        a response\n\n        :returns: the receive timestamp\n        :rtype: datetime\n        "), 0},
  {"rtt", __pyx_getprop_7scamper_11ScamperHost_rtt, 0, PyDoc_STR("\n        get method to obtain the delay between query and response for the\n        first query with a response\n\n        :returns: the delay between query and response\n        :rtype: timedelta\n        "), 0},
  {"ancount", __pyx_getprop_7scamper_11ScamperHost_ancount, 0, PyDoc_STR("\n        get method to obtain the number of AN RRs from the first query\n        with a response\n\n        :returns: the number of AN RRs\n        :rtype: int\n        "), 0},
  {"nscount", __pyx_getprop_7scamper_11ScamperHost_nscount, 0, PyDoc_STR("\n        get method to obtain the number of NS RRs from the first query\n        with a response\n\n        :returns: the number of NS RRs\n        :rtype: int\n        "), 0},
  {"arcount", __pyx_getprop_7scamper_11ScamperHost_arcount, 0, PyDoc_STR("\n        get method to obtain the number of AR RRs from the first query\n        with a response\n\n        :returns: the number of AR RRs\n        :rtype: int\n        "), 0},
  {"udpsize", __pyx_getprop_7scamper_11ScamperHost_udpsize, 0, PyDoc_STR("\n        get method to obtain the UDP payload size reported in the\n        OPT record found in the AR section of the first query with a\n        response, if any.\n\n        :returns: the reported UDP buffer size\n        :rtype: int\n        "), 0},
  {"edns_version", __pyx_getprop_7scamper_11ScamperHost_edns_version, 0, PyDoc_STR("\n        get method to obtain the EDNS version reported in the\n        OPT record found in the AR section of the first query with a\n        response, if any.\n\n        :returns: the reported EDNS version\n        :rtype: int\n        "), 0},
  {"edns_do", __pyx_getprop_7scamper_11ScamperHost_edns_do, 0, PyDoc_STR("\n        get method to obtain the value of the EDNS DO flag reported in the\n        OPT record found in the AR section of the first query with a\n        response, if any.\n\n        :returns: the reported EDNS DO flag\n        :rtype: bool\n        "), 0},
  {"_inst", __pyx_getprop_7scamper_11ScamperHost__inst, __pyx_setprop_7scamper_11ScamperHost__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHost_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHost},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperHost` is used by scamper to store results from a DNS\n    measurement.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperHost},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperHost},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHost},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHost},
  {Py_tp_init, (void *)__pyx_pw_7scamper_11ScamperHost_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHost},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHost_spec = {
  "scamper.ScamperHost",
  sizeof(struct __pyx_obj_7scamper_ScamperHost),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperHost_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperHost = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHost", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHost), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHost, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    :class:`ScamperHost` is used by scamper to store results from a DNS\n    measurement.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperHost, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperHost, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHost, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHost, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_11ScamperHost_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHost, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHttpBuf __pyx_vtable_7scamper_ScamperHttpBuf;

static PyObject *__pyx_tp_new_7scamper_ScamperHttpBuf(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHttpBuf *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHttpBuf *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHttpBuf;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHttpBuf(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHttpBuf) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_14ScamperHttpBuf_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_14ScamperHttpBuf_timestamp(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHttpBuf_9timestamp_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperHttpBuf_dir_str(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHttpBuf_7dir_str_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperHttpBuf_type_str(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHttpBuf_8type_str_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_14ScamperHttpBuf_payload(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_14ScamperHttpBuf_7payload_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperHttpBuf[] = {
  {"is_tx", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_5is_tx, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHttpBuf_4is_tx},
  {"is_rx", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_7is_rx, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHttpBuf_6is_rx},
  {"is_tls", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_9is_tls, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHttpBuf_8is_tls},
  {"is_hdr", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_11is_hdr, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHttpBuf_10is_hdr},
  {"is_data", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_13is_data, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_14ScamperHttpBuf_12is_data},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_14ScamperHttpBuf_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHttpBuf[] = {
  {"timestamp", __pyx_getprop_7scamper_14ScamperHttpBuf_timestamp, 0, PyDoc_STR("\n        get method that returns the time when the chunk was transmitted\n        or received.\n\n        :returns: the timestamp for the chunk\n        :rtype: datetime\n        "), 0},
  {"dir_str", __pyx_getprop_7scamper_14ScamperHttpBuf_dir_str, 0, PyDoc_STR("\n        method to obtain the direction of this chunk\n\n        :returns: the direction (tx or rx)\n        :rtype: string\n        "), 0},
  {"type_str", __pyx_getprop_7scamper_14ScamperHttpBuf_type_str, 0, PyDoc_STR("\n        method to obtain the type of this chunk\n\n        :returns: the type (tls, hdr, or data)\n        :rtype: string\n        "), 0},
  {"payload", __pyx_getprop_7scamper_14ScamperHttpBuf_payload, 0, PyDoc_STR("\n        get method to obtain the payload for this chunk.\n\n        :returns: the payload\n        :rtype: bytes\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHttpBuf_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHttpBuf},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperHttpBuf` is used by scamper to store chunks of data\n    received during a HTTP measurement.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHttpBuf},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHttpBuf},
  {Py_tp_init, (void *)__pyx_pw_7scamper_14ScamperHttpBuf_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHttpBuf},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHttpBuf_spec = {
  "scamper.ScamperHttpBuf",
  sizeof(struct __pyx_obj_7scamper_ScamperHttpBuf),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperHttpBuf_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperHttpBuf = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHttpBuf", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHttpBuf), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHttpBuf, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperHttpBuf` is used by scamper to store chunks of data\n    received during a HTTP measurement.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHttpBuf, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHttpBuf, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_14ScamperHttpBuf_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHttpBuf, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperHttp __pyx_vtable_7scamper_ScamperHttp;

static PyObject *__pyx_tp_new_7scamper_ScamperHttp(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperHttp *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperHttp *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperHttp;
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperHttp(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperHttp *p = (struct __pyx_obj_7scamper_ScamperHttp *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperHttp) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_11ScamperHttp_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperHttp(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperHttp *p = (struct __pyx_obj_7scamper_ScamperHttp *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperHttp(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperHttp *p = (struct __pyx_obj_7scamper_ScamperHttp *)o;
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_list(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_4list_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_cycle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_5cycle_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_userid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_6userid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_dst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_3dst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_sport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_5sport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_dport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_5dport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_url(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_3url_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_status_code(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_11status_code_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_response(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_8response_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_response_hdr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_12response_hdr_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_transmit_hdr(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_12transmit_hdr_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_response_hdrs(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_13response_hdrs_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_transmit_hdrs(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_13transmit_hdrs_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp_buf_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_9buf_count_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperHttp__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperHttp_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperHttp__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperHttp_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_11ScamperHttp_5_inst_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7scamper_ScamperHttp[] = {
  {"response_hdr_byname", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_7response_hdr_byname, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHttp_6response_hdr_byname},
  {"transmit_hdr_byname", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_9transmit_hdr_byname, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHttp_8transmit_hdr_byname},
  {"buf", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_11buf, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHttp_10buf},
  {"bufs", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_13bufs, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperHttp_12bufs},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperHttp_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperHttp[] = {
  {"inst", __pyx_getprop_7scamper_11ScamperHttp_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"list", __pyx_getprop_7scamper_11ScamperHttp_list, 0, PyDoc_STR("\n        get list associated with this measurement.\n\n        :returns: the list\n        :rtype: ScamperList\n        "), 0},
  {"cycle", __pyx_getprop_7scamper_11ScamperHttp_cycle, 0, PyDoc_STR("\n        get cycle associated with this measurement.\n\n        :returns: the cycle\n        :rtype: ScamperCycle\n        "), 0},
  {"userid", __pyx_getprop_7scamper_11ScamperHttp_userid, 0, PyDoc_STR("\n        get method to obtain the userid parameter.\n\n        :returns: the userid\n        :rtype: int\n        "), 0},
  {"start", __pyx_getprop_7scamper_11ScamperHttp_start, 0, PyDoc_STR("\n        get method to obtain the time this measurement started.\n\n        :returns: the start timestamp\n        :rtype: datetime\n        "), 0},
  {"src", __pyx_getprop_7scamper_11ScamperHttp_src, 0, PyDoc_STR("\n        get method to obtain the source address for this measurement.\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"dst", __pyx_getprop_7scamper_11ScamperHttp_dst, 0, PyDoc_STR("\n        get method to obtain the destination address for this measurement.\n\n        :returns: the destination address\n        :rtype: ScamperAddr\n        "), 0},
  {"sport", __pyx_getprop_7scamper_11ScamperHttp_sport, 0, PyDoc_STR("\n        get method to obtain the source port the client used.\n\n        :returns: the source port\n        :rtype: int\n        "), 0},
  {"dport", __pyx_getprop_7scamper_11ScamperHttp_dport, 0, PyDoc_STR("\n        get method to obtain the destination port the client reached the\n        server on.\n\n        :returns: the destination port\n        :rtype: int\n        "), 0},
  {"url", __pyx_getprop_7scamper_11ScamperHttp_url, 0, PyDoc_STR("\n        get method to obtain the URL for this measurement.\n\n        :returns: the URL\n        :rtype: string\n        "), 0},
  {"status_code", __pyx_getprop_7scamper_11ScamperHttp_status_code, 0, PyDoc_STR("\n        get method to obtain the HTTP status code for this measurement.\n\n        :returns: the status code\n        :rtype: int\n        "), 0},
  {"response", __pyx_getprop_7scamper_11ScamperHttp_response, 0, PyDoc_STR("\n        get method to obtain the response for this measurement.\n\n        :returns: the response\n        :rtype: bytes\n        "), 0},
  {"response_hdr", __pyx_getprop_7scamper_11ScamperHttp_response_hdr, 0, PyDoc_STR("\n        get method to obtain the response header for this measurement, as\n        a single string.\n\n        :returns: the response\n        :rtype: string\n        "), 0},
  {"transmit_hdr", __pyx_getprop_7scamper_11ScamperHttp_transmit_hdr, 0, PyDoc_STR("\n        get method to obtain the transmit header for this measurement, as\n        a single string.\n\n        :returns: the response\n        :rtype: string\n        "), 0},
  {"response_hdrs", __pyx_getprop_7scamper_11ScamperHttp_response_hdrs, 0, PyDoc_STR("\n        get method to obtain the response headers for this measurement,\n        stored in a dictionary.  all the response header names and values\n        are stored in lowercase form in the dictionary.\n\n        :returns: response header dictionary\n        :rtype: dict\n        "), 0},
  {"transmit_hdrs", __pyx_getprop_7scamper_11ScamperHttp_transmit_hdrs, 0, PyDoc_STR("\n        get method to obtain the transmit headers for this measurement,\n        stored in a dictionary.  all the transmit header names and values\n        are stored in lowercase form in the dictionary.\n\n        :returns: transmit header dictionary\n        :rtype: dict\n        "), 0},
  {"buf_count", __pyx_getprop_7scamper_11ScamperHttp_buf_count, 0, PyDoc_STR("\n        get method to return the number of ScamperHttpBuf in this exchange.\n\n        :returns: the number of buffers in the exchange\n        :rtype: int:\n        "), 0},
  {"_inst", __pyx_getprop_7scamper_11ScamperHttp__inst, __pyx_setprop_7scamper_11ScamperHttp__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperHttp_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperHttp},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperHttp` is used by scamper to store results from a HTTP\n    measurement.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperHttp},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperHttp},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_11ScamperHttp_5__iter__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperHttp},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperHttp},
  {Py_tp_init, (void *)__pyx_pw_7scamper_11ScamperHttp_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperHttp},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperHttp_spec = {
  "scamper.ScamperHttp",
  sizeof(struct __pyx_obj_7scamper_ScamperHttp),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperHttp_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperHttp = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperHttp", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperHttp), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperHttp, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    :class:`ScamperHttp` is used by scamper to store results from a HTTP\n    measurement.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperHttp, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperHttp, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_11ScamperHttp_5__iter__, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperHttp, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperHttp, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_11ScamperHttp_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperHttp, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperUdpprobeReply __pyx_vtable_7scamper_ScamperUdpprobeReply;

static PyObject *__pyx_tp_new_7scamper_ScamperUdpprobeReply(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperUdpprobeReply *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperUdpprobeReply *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperUdpprobeReply;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperUdpprobeReply(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperUdpprobeReply) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_20ScamperUdpprobeReply_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_20ScamperUdpprobeReply_rx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperUdpprobeReply_2rx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_20ScamperUdpprobeReply_payload(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperUdpprobeReply_7payload_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_20ScamperUdpprobeReply_ifname(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperUdpprobeReply_6ifname_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperUdpprobeReply[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperUdpprobeReply_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperUdpprobeReply_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperUdpprobeReply[] = {
  {"rx", __pyx_getprop_7scamper_20ScamperUdpprobeReply_rx, 0, PyDoc_STR("\n        get method that returns the time when the reply was received.\n\n        :returns: the timestamp for the reply\n        :rtype: datetime\n        "), 0},
  {"payload", __pyx_getprop_7scamper_20ScamperUdpprobeReply_payload, 0, PyDoc_STR("\n        get method that returns the payload contained in the response.\n\n        :returns: the payload\n        :rtype: bytes\n        "), 0},
  {"ifname", __pyx_getprop_7scamper_20ScamperUdpprobeReply_ifname, 0, PyDoc_STR("\n        get method to obtain the name of the interface that received the\n        reply, if recorded.\n\n        :return: the name of the interface.\n        :rtype: string\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperUdpprobeReply_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperUdpprobeReply},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperUdpprobeReply` is used by scamper to store responses\n    for a :class:`ScamperUdpprobe` measurement.\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperUdpprobeReply},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperUdpprobeReply},
  {Py_tp_init, (void *)__pyx_pw_7scamper_20ScamperUdpprobeReply_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperUdpprobeReply},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperUdpprobeReply_spec = {
  "scamper.ScamperUdpprobeReply",
  sizeof(struct __pyx_obj_7scamper_ScamperUdpprobeReply),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperUdpprobeReply_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperUdpprobeReply = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperUdpprobeReply", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperUdpprobeReply), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperUdpprobeReply, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperUdpprobeReply` is used by scamper to store responses\n    for a :class:`ScamperUdpprobe` measurement.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperUdpprobeReply, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperUdpprobeReply, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_20ScamperUdpprobeReply_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperUdpprobeReply, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperUdpprobeProbe __pyx_vtable_7scamper_ScamperUdpprobeProbe;

static PyObject *__pyx_tp_new_7scamper_ScamperUdpprobeProbe(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperUdpprobeProbe *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperUdpprobeProbe *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperUdpprobeProbe;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperUdpprobeProbe(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperUdpprobeProbe) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_20ScamperUdpprobeProbe_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_20ScamperUdpprobeProbe_tx(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperUdpprobeProbe_2tx_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_20ScamperUdpprobeProbe_sport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperUdpprobeProbe_5sport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_20ScamperUdpprobeProbe_reply_count(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_20ScamperUdpprobeProbe_11reply_count_1__get__(o);
}

static PyObject *__pyx_specialmethod___pyx_pw_7scamper_20ScamperUdpprobeProbe_7__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  PyObject *res = __pyx_pw_7scamper_20ScamperUdpprobeProbe_7__next__(self);
  if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); }
  return res;
}

static PyMethodDef __pyx_methods_7scamper_ScamperUdpprobeProbe[] = {
  {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_7scamper_20ScamperUdpprobeProbe_7__next__, METH_NOARGS|METH_COEXIST, 0},
  {"reply", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperUdpprobeProbe_9reply, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_20ScamperUdpprobeProbe_8reply},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperUdpprobeProbe_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_20ScamperUdpprobeProbe_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperUdpprobeProbe[] = {
  {"tx", __pyx_getprop_7scamper_20ScamperUdpprobeProbe_tx, 0, PyDoc_STR("\n        get method that returns the time when the probe was transmitted.\n\n        :returns: the timestamp for the probe\n        :rtype: datetime\n        "), 0},
  {"sport", __pyx_getprop_7scamper_20ScamperUdpprobeProbe_sport, 0, PyDoc_STR("\n        get method to obtain the source port value used by this probe\n\n        :returns: the source port\n        :rtype: int\n        "), 0},
  {"reply_count", __pyx_getprop_7scamper_20ScamperUdpprobeProbe_reply_count, 0, PyDoc_STR("\n        get method that returns the number of replies recorded for this probe\n\n        :returns: the number of replies recorded\n        :rtype: int\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperUdpprobeProbe_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperUdpprobeProbe},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperUdpprobeProbe` is used by scamper to store information\n    about a specific UDP probe.\n    ")},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_20ScamperUdpprobeProbe_5__iter__},
  {Py_tp_iternext, (void *)__pyx_pw_7scamper_20ScamperUdpprobeProbe_7__next__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperUdpprobeProbe},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperUdpprobeProbe},
  {Py_tp_init, (void *)__pyx_pw_7scamper_20ScamperUdpprobeProbe_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperUdpprobeProbe},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperUdpprobeProbe_spec = {
  "scamper.ScamperUdpprobeProbe",
  sizeof(struct __pyx_obj_7scamper_ScamperUdpprobeProbe),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperUdpprobeProbe_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperUdpprobeProbe = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperUdpprobeProbe", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperUdpprobeProbe), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperUdpprobeProbe, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    :class:`ScamperUdpprobeProbe` is used by scamper to store information\n    about a specific UDP probe.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_20ScamperUdpprobeProbe_5__iter__, /*tp_iter*/
  __pyx_pw_7scamper_20ScamperUdpprobeProbe_7__next__, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperUdpprobeProbe, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperUdpprobeProbe, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_20ScamperUdpprobeProbe_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperUdpprobeProbe, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperUdpprobe __pyx_vtable_7scamper_ScamperUdpprobe;

static PyObject *__pyx_tp_new_7scamper_ScamperUdpprobe(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperUdpprobe *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperUdpprobe *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperUdpprobe;
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperUdpprobe(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperUdpprobe *p = (struct __pyx_obj_7scamper_ScamperUdpprobe *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperUdpprobe) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_15ScamperUdpprobe_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_inst);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperUdpprobe(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperUdpprobe *p = (struct __pyx_obj_7scamper_ScamperUdpprobe *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_inst) {
    e = (*v)(((PyObject *)p->_inst), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperUdpprobe(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperUdpprobe *p = (struct __pyx_obj_7scamper_ScamperUdpprobe *)o;
  tmp = ((PyObject*)p->_inst);
  p->_inst = ((struct __pyx_obj_7scamper_ScamperInst *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_4inst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_list(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_4list_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_cycle(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_5cycle_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_userid(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_6userid_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_start(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_5start_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_src(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_3src_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_dst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_3dst_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_sport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_5sport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_dport(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_5dport_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_wait_timeout(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_12wait_timeout_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_payload(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_7payload_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe_probe_sent(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_10probe_sent_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_15ScamperUdpprobe__inst(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_15ScamperUdpprobe_5_inst_1__get__(o);
}

static int __pyx_setprop_7scamper_15ScamperUdpprobe__inst(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_15ScamperUdpprobe_5_inst_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_15ScamperUdpprobe_5_inst_5__del__(o);
  }
}

static PyObject *__pyx_specialmethod___pyx_pw_7scamper_15ScamperUdpprobe_7__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  PyObject *res = __pyx_pw_7scamper_15ScamperUdpprobe_7__next__(self);
  if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); }
  return res;
}

static PyMethodDef __pyx_methods_7scamper_ScamperUdpprobe[] = {
  {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_7scamper_15ScamperUdpprobe_7__next__, METH_NOARGS|METH_COEXIST, 0},
  {"to_json", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperUdpprobe_9to_json, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperUdpprobe_8to_json},
  {"probe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperUdpprobe_11probe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperUdpprobe_10probe},
  {"replies", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperUdpprobe_13replies, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_15ScamperUdpprobe_12replies},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperUdpprobe_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_15ScamperUdpprobe_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperUdpprobe[] = {
  {"inst", __pyx_getprop_7scamper_15ScamperUdpprobe_inst, 0, PyDoc_STR("\n        get :class:`ScamperInst` associated with this measurement,\n        if the measurement was conducted using a :class:`ScamperCtrl`.\n\n        :returns: the instance\n        :rtype: ScamperInst\n        "), 0},
  {"list", __pyx_getprop_7scamper_15ScamperUdpprobe_list, 0, PyDoc_STR("\n        get list associated with this measurement.\n\n        :returns: the list\n        :rtype: ScamperList\n        "), 0},
  {"cycle", __pyx_getprop_7scamper_15ScamperUdpprobe_cycle, 0, PyDoc_STR("\n        get cycle associated with this measurement.\n\n        :returns: the cycle\n        :rtype: ScamperCycle\n        "), 0},
  {"userid", __pyx_getprop_7scamper_15ScamperUdpprobe_userid, 0, PyDoc_STR("\n        get method to obtain the userid parameter.\n\n        :returns: the userid\n        :rtype: int\n        "), 0},
  {"start", __pyx_getprop_7scamper_15ScamperUdpprobe_start, 0, PyDoc_STR("\n        get method to obtain the time this measurement started.\n\n        :returns: the start timestamp\n        :rtype: datetime\n        "), 0},
  {"src", __pyx_getprop_7scamper_15ScamperUdpprobe_src, 0, PyDoc_STR("\n        get method to obtain the source address for this measurement.\n\n        :returns: the source address\n        :rtype: ScamperAddr\n        "), 0},
  {"dst", __pyx_getprop_7scamper_15ScamperUdpprobe_dst, 0, PyDoc_STR("\n        get method to obtain the destination address for this measurement.\n\n        :returns: the destination address\n        :rtype: ScamperAddr\n        "), 0},
  {"sport", __pyx_getprop_7scamper_15ScamperUdpprobe_sport, 0, PyDoc_STR("\n        get method to obtain the source port value provided to the udpprobe\n        measurement.\n\n        :returns: the source port\n        :rtype: int\n        "), 0},
  {"dport", __pyx_getprop_7scamper_15ScamperUdpprobe_dport, 0, PyDoc_STR("\n        get method to obtain the destination port the client reached the\n        server on.\n\n        :returns: the destination port\n        :rtype: int\n        "), 0},
  {"wait_timeout", __pyx_getprop_7scamper_15ScamperUdpprobe_wait_timeout, 0, PyDoc_STR("\n        get method to obtain the length of time to wait before declaring\n        a probe lost.\n\n        :returns: the timeout value.\n        :rtype: timedelta\n        "), 0},
  {"payload", __pyx_getprop_7scamper_15ScamperUdpprobe_payload, 0, PyDoc_STR("\n        get method that returns the payload contained in the probe.\n\n        :returns: the payload\n        :rtype: bytes\n        "), 0},
  {"probe_sent", __pyx_getprop_7scamper_15ScamperUdpprobe_probe_sent, 0, 0, 0},
  {"_inst", __pyx_getprop_7scamper_15ScamperUdpprobe__inst, __pyx_setprop_7scamper_15ScamperUdpprobe__inst, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperUdpprobe_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperUdpprobe},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperUdpprobe` is used by scamper to store results from a UDP\n    probe measurement.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperUdpprobe},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperUdpprobe},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_15ScamperUdpprobe_5__iter__},
  {Py_tp_iternext, (void *)__pyx_pw_7scamper_15ScamperUdpprobe_7__next__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperUdpprobe},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperUdpprobe},
  {Py_tp_init, (void *)__pyx_pw_7scamper_15ScamperUdpprobe_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperUdpprobe},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperUdpprobe_spec = {
  "scamper.ScamperUdpprobe",
  sizeof(struct __pyx_obj_7scamper_ScamperUdpprobe),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperUdpprobe_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperUdpprobe = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperUdpprobe", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperUdpprobe), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperUdpprobe, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    :class:`ScamperUdpprobe` is used by scamper to store results from a UDP\n    probe measurement.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperUdpprobe, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperUdpprobe, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_15ScamperUdpprobe_5__iter__, /*tp_iter*/
  __pyx_pw_7scamper_15ScamperUdpprobe_7__next__, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperUdpprobe, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperUdpprobe, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_15ScamperUdpprobe_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperUdpprobe, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper_ScamperFile(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperFile(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperFile) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_11ScamperFile_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_11ScamperFile_filetype(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperFile_8filetype_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperFile_filename(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperFile_8filename_1__get__(o);
}

static PyObject *__pyx_specialmethod___pyx_pw_7scamper_11ScamperFile_7__next__(PyObject *self, CYTHON_UNUSED PyObject *arg) {
  PyObject *res = __pyx_pw_7scamper_11ScamperFile_7__next__(self);
  if (!res && !PyErr_Occurred()) { PyErr_SetNone(PyExc_StopIteration); }
  return res;
}

static PyMethodDef __pyx_methods_7scamper_ScamperFile[] = {
  {"__next__", (PyCFunction)__pyx_specialmethod___pyx_pw_7scamper_11ScamperFile_7__next__, METH_NOARGS|METH_COEXIST, 0},
  {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_9__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_11__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"close", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_13close, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperFile_12close},
  {"filter_types", (PyCFunction)(void(*)(void))(PyCFunctionWithKeywords)__pyx_pw_7scamper_11ScamperFile_15filter_types, METH_VARARGS|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperFile_14filter_types},
  {"read", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_17read, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperFile_16read},
  {"write", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_19write, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperFile_18write},
  {"is_write", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_21is_write, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"is_read", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_23is_read, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_25__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperFile_27__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperFile[] = {
  {"filetype", __pyx_getprop_7scamper_11ScamperFile_filetype, 0, PyDoc_STR("\n        get method to obtain the type of :class:`ScamperFile` (warts or arts)\n\n        :returns: the type\n        :rtype: string\n        "), 0},
  {"filename", __pyx_getprop_7scamper_11ScamperFile_filename, 0, PyDoc_STR("\n        get method to obtain the filename for the :class:`ScamperFile`\n\n        :returns: the filename\n        :rtype: string\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperFile_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperFile},
  {Py_tp_doc, (void *)PyDoc_STR("\n    A :class:`ScamperFile` can be used to interact with measurement results\n    collected by scamper.  The constructor takes the following parameters,\n    the first of which is mandatory; the remainder are optional named\n    parameters.\n\n    - filename: a string identifying the name of the file to open.\n    - mode: a string ('r' or 'w') identifying whether the file is to be    opened read or write.\n    - kind: the type of the file to open, if opened for writing.     Choices: warts, warts.gz, warts.bz2, warts.xz, json, text.\n    - filter_types: a list containing the types of the objects to return     when reading.     By default, a file opened for reading returns all types of objects.\n\n    The class implements an iterator interface, which a caller can use to\n    read objects out of the file.\n    ")},
  {Py_tp_iter, (void *)__pyx_pw_7scamper_11ScamperFile_5__iter__},
  {Py_tp_iternext, (void *)__pyx_pw_7scamper_11ScamperFile_7__next__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperFile},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperFile},
  {Py_tp_init, (void *)__pyx_pw_7scamper_11ScamperFile_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperFile},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperFile_spec = {
  "scamper.ScamperFile",
  sizeof(struct __pyx_obj_7scamper_ScamperFile),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperFile_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperFile = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperFile", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperFile), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperFile, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    A :class:`ScamperFile` can be used to interact with measurement results\n    collected by scamper.  The constructor takes the following parameters,\n    the first of which is mandatory; the remainder are optional named\n    parameters.\n\n    - filename: a string identifying the name of the file to open.\n    - mode: a string ('r' or 'w') identifying whether the file is to be    opened read or write.\n    - kind: the type of the file to open, if opened for writing.     Choices: warts, warts.gz, warts.bz2, warts.xz, json, text.\n    - filter_types: a list containing the types of the objects to return     when reading.     By default, a file opened for reading returns all types of objects.\n\n    The class implements an iterator interface, which a caller can use to\n    read objects out of the file.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  __pyx_pw_7scamper_11ScamperFile_5__iter__, /*tp_iter*/
  __pyx_pw_7scamper_11ScamperFile_7__next__, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperFile, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperFile, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_11ScamperFile_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperFile, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperCtrl __pyx_vtable_7scamper_ScamperCtrl;

static PyObject *__pyx_tp_new_7scamper_ScamperCtrl(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperCtrl *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperCtrl *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperCtrl;
  p->_morecb = Py_None; Py_INCREF(Py_None);
  p->_eofcb = Py_None; Py_INCREF(Py_None);
  p->_syncdata = Py_None; Py_INCREF(Py_None);
  p->_outfile = Py_None; Py_INCREF(Py_None);
  p->_param = Py_None; Py_INCREF(Py_None);
  p->_objs = Py_None; Py_INCREF(Py_None);
  p->_exceptions = Py_None; Py_INCREF(Py_None);
  p->_insts = Py_None; Py_INCREF(Py_None);
  p->_tasks = Py_None; Py_INCREF(Py_None);
  p->_muxs = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperCtrl(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperCtrl *p = (struct __pyx_obj_7scamper_ScamperCtrl *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperCtrl) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_11ScamperCtrl_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_morecb);
  Py_CLEAR(p->_eofcb);
  Py_CLEAR(p->_syncdata);
  Py_CLEAR(p->_outfile);
  Py_CLEAR(p->_param);
  Py_CLEAR(p->_objs);
  Py_CLEAR(p->_exceptions);
  Py_CLEAR(p->_insts);
  Py_CLEAR(p->_tasks);
  Py_CLEAR(p->_muxs);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperCtrl(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperCtrl *p = (struct __pyx_obj_7scamper_ScamperCtrl *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_morecb) {
    e = (*v)(p->_morecb, a); if (e) return e;
  }
  if (p->_eofcb) {
    e = (*v)(p->_eofcb, a); if (e) return e;
  }
  if (p->_syncdata) {
    e = (*v)(p->_syncdata, a); if (e) return e;
  }
  if (p->_outfile) {
    e = (*v)(p->_outfile, a); if (e) return e;
  }
  if (p->_param) {
    e = (*v)(p->_param, a); if (e) return e;
  }
  if (p->_objs) {
    e = (*v)(p->_objs, a); if (e) return e;
  }
  if (p->_exceptions) {
    e = (*v)(p->_exceptions, a); if (e) return e;
  }
  if (p->_insts) {
    e = (*v)(p->_insts, a); if (e) return e;
  }
  if (p->_tasks) {
    e = (*v)(p->_tasks, a); if (e) return e;
  }
  if (p->_muxs) {
    e = (*v)(p->_muxs, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperCtrl(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperCtrl *p = (struct __pyx_obj_7scamper_ScamperCtrl *)o;
  tmp = ((PyObject*)p->_morecb);
  p->_morecb = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_eofcb);
  p->_eofcb = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_syncdata);
  p->_syncdata = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_outfile);
  p->_outfile = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_param);
  p->_param = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_objs);
  p->_objs = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_exceptions);
  p->_exceptions = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_insts);
  p->_insts = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_tasks);
  p->_tasks = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->_muxs);
  p->_muxs = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl_param(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_5param_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperCtrl_param(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperCtrl_5param_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl_morecb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_6morecb_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperCtrl_morecb(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperCtrl_6morecb_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl_eofcb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_5eofcb_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperCtrl_eofcb(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperCtrl_5eofcb_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl_outfile(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_7outfile_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperCtrl_outfile(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperCtrl_7outfile_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl_taskc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_5taskc_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl_instc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_5instc_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl__morecb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_7_morecb_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperCtrl__morecb(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperCtrl_7_morecb_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_11ScamperCtrl_7_morecb_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl__eofcb(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_6_eofcb_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperCtrl__eofcb(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperCtrl_6_eofcb_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_11ScamperCtrl_6_eofcb_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl__syncdata(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_9_syncdata_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperCtrl__syncdata(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperCtrl_9_syncdata_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_11ScamperCtrl_9_syncdata_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl__outfile(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_8_outfile_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperCtrl__outfile(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperCtrl_8_outfile_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_11ScamperCtrl_8_outfile_5__del__(o);
  }
}

static PyObject *__pyx_getprop_7scamper_11ScamperCtrl__param(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperCtrl_6_param_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperCtrl__param(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperCtrl_6_param_3__set__(o, v);
  }
  else {
    return __pyx_pw_7scamper_11ScamperCtrl_6_param_5__del__(o);
  }
}

static PyMethodDef __pyx_methods_7scamper_ScamperCtrl[] = {
  {"__enter__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_5__enter__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__exit__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_7__exit__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"add_unix", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_9add_unix, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_8add_unix},
  {"add_inet", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_11add_inet, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_10add_inet},
  {"add_remote", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_13add_remote, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_12add_remote},
  {"add_remote_dir", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_15add_remote_dir, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_14add_remote_dir},
  {"add_mux", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_17add_mux, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_16add_mux},
  {"_add_vp", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_19_add_vp, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"add_vps", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_21add_vps, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"exceptions", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_23exceptions, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_22exceptions},
  {"responses", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_26responses, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_25responses},
  {"poll", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_29poll, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_28poll},
  {"done", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_31done, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_30done},
  {"vps", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_33vps, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_32vps},
  {"instances", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_35instances, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_34instances},
  {"_getinst", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_37_getinst, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"_dotasks", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_39_dotasks, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"do_trace", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_41do_trace, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_40do_trace},
  {"do_tracelb", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_43do_tracelb, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_42do_tracelb},
  {"do_ping", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_45do_ping, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_44do_ping},
  {"do_dns", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_47do_dns, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_46do_dns},
  {"do_ally", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_49do_ally, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_48do_ally},
  {"do_mercator", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_51do_mercator, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_50do_mercator},
  {"do_midarest", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_53do_midarest, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_52do_midarest},
  {"do_midardisc", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_55do_midardisc, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_54do_midardisc},
  {"do_radargun", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_57do_radargun, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_56do_radargun},
  {"do_prefixscan", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_59do_prefixscan, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_58do_prefixscan},
  {"do_sniff", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_61do_sniff, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_60do_sniff},
  {"do_http", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_63do_http, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_62do_http},
  {"do_udpprobe", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_65do_udpprobe, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_64do_udpprobe},
  {"do_tbit", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_67do_tbit, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_66do_tbit},
  {"is_done", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_69is_done, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperCtrl_68is_done},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_71__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperCtrl_73__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperCtrl[] = {
  {"param", __pyx_getprop_7scamper_11ScamperCtrl_param, __pyx_setprop_7scamper_11ScamperCtrl_param, 0, 0},
  {"morecb", __pyx_getprop_7scamper_11ScamperCtrl_morecb, __pyx_setprop_7scamper_11ScamperCtrl_morecb, 0, 0},
  {"eofcb", __pyx_getprop_7scamper_11ScamperCtrl_eofcb, __pyx_setprop_7scamper_11ScamperCtrl_eofcb, 0, 0},
  {"outfile", __pyx_getprop_7scamper_11ScamperCtrl_outfile, __pyx_setprop_7scamper_11ScamperCtrl_outfile, 0, 0},
  {"taskc", __pyx_getprop_7scamper_11ScamperCtrl_taskc, 0, PyDoc_STR("\n        get method that returns the total number of tasks outstanding\n        for this :class:`ScamperCtrl` object.\n        "), 0},
  {"instc", __pyx_getprop_7scamper_11ScamperCtrl_instc, 0, PyDoc_STR("\n        get method that returns the number of :class:`ScamperInst` managed by\n        this :class:`ScamperCtrl` object.\n        "), 0},
  {"_morecb", __pyx_getprop_7scamper_11ScamperCtrl__morecb, __pyx_setprop_7scamper_11ScamperCtrl__morecb, 0, 0},
  {"_eofcb", __pyx_getprop_7scamper_11ScamperCtrl__eofcb, __pyx_setprop_7scamper_11ScamperCtrl__eofcb, 0, 0},
  {"_syncdata", __pyx_getprop_7scamper_11ScamperCtrl__syncdata, __pyx_setprop_7scamper_11ScamperCtrl__syncdata, 0, 0},
  {"_outfile", __pyx_getprop_7scamper_11ScamperCtrl__outfile, __pyx_setprop_7scamper_11ScamperCtrl__outfile, 0, 0},
  {"_param", __pyx_getprop_7scamper_11ScamperCtrl__param, __pyx_setprop_7scamper_11ScamperCtrl__param, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperCtrl_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperCtrl},
  {Py_tp_doc, (void *)PyDoc_STR("\n    :class:`ScamperCtrl` is used to interact with a collection (one or more)\n    :class:`ScamperInst` objects.\n    The :class:`ScamperCtrl` constructor takes the following named\n    parameters, all of which are optional:\n\n    - meta: whether the caller wants meta objects     (:class:`ScamperList`, :class:`ScamperCycle`) or not.  default is false.\n    - morecb: a callback that is called when an instance signals that it     wants more work.  The callback takes three parameters:     :class:`ScamperCtrl`, :class:`ScamperInst`, and a parameter that the     callback can use.\n    - eofcb: a callback that is called when an instance signals that it     has finished.  The callback takes the same three parameters as morecb.\n    - param: a parameter that is passed to morecb and eofcb.\n    - outfile: a :class:`ScamperFile` that should record all measurement     results.  This can save the caller from doing that itself.\n    - unix: the path to a unix domain socket representing a local instance,     which will then become a :class:`ScamperInst`.\n    - remote: the path to a unix domain socket representing a remote     instance, which will then become a :class:`ScamperInst`.\n    - remote_dir: the path to a directory containing unix domain sockets     each representing a remote instance, which will each then become a     :class:`ScamperInst`.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperCtrl},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperCtrl},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperCtrl},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperCtrl},
  {Py_tp_init, (void *)__pyx_pw_7scamper_11ScamperCtrl_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperCtrl},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperCtrl_spec = {
  "scamper.ScamperCtrl",
  sizeof(struct __pyx_obj_7scamper_ScamperCtrl),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperCtrl_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperCtrl = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperCtrl", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperCtrl), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperCtrl, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    :class:`ScamperCtrl` is used to interact with a collection (one or more)\n    :class:`ScamperInst` objects.\n    The :class:`ScamperCtrl` constructor takes the following named\n    parameters, all of which are optional:\n\n    - meta: whether the caller wants meta objects     (:class:`ScamperList`, :class:`ScamperCycle`) or not.  default is false.\n    - morecb: a callback that is called when an instance signals that it     wants more work.  The callback takes three parameters:     :class:`ScamperCtrl`, :class:`ScamperInst`, and a parameter that the     callback can use.\n    - eofcb: a callback that is called when an instance signals that it     has finished.  The callback takes the same three parameters as morecb.\n    - param: a parameter that is passed to morecb and eofcb.\n    - outfile: a :class:`ScamperFile` that should record all measurement     results.  This can save the caller from doing that itself.\n    - unix: the path to a unix domain socket representing a local instance,     which will then become a :class:`ScamperInst`.\n    - remote: the path to a unix domain socket representing a remote     instance, which will then become a :class:`ScamperInst`.\n    - remote_dir: the path to a directory containing unix domain sockets     each representing a remote instance, which will each then become a     :class:`ScamperInst`.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperCtrl, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperCtrl, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperCtrl, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperCtrl, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_11ScamperCtrl_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperCtrl, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperMux __pyx_vtable_7scamper_ScamperMux;

static PyObject *__pyx_tp_new_7scamper_ScamperMux(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperMux *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperMux *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperMux;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperMux(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperMux) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyMethodDef __pyx_methods_7scamper_ScamperMux[] = {
  {"vps", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_10ScamperMux_3vps, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_10ScamperMux_5__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_10ScamperMux_7__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperMux_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperMux},
  {Py_tp_doc, (void *)PyDoc_STR("\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperMux},
  {Py_tp_init, (void *)__pyx_pw_7scamper_10ScamperMux_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperMux},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperMux_spec = {
  "scamper.ScamperMux",
  sizeof(struct __pyx_obj_7scamper_ScamperMux),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperMux_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperMux = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperMux", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperMux), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperMux, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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*/
  PyDoc_STR("\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperMux, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_10ScamperMux_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperMux, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperVp __pyx_vtable_7scamper_ScamperVp;

static PyObject *__pyx_tp_new_7scamper_ScamperVp(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperVp *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperVp *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperVp;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperVp(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperVp) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_9ScamperVp_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyObject *__pyx_getprop_7scamper_9ScamperVp_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_9ScamperVp_4name_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_9ScamperVp_shortname(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_9ScamperVp_9shortname_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_9ScamperVp_tags(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_9ScamperVp_4tags_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_9ScamperVp_asn4(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_9ScamperVp_4asn4_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_9ScamperVp_ipv4(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_9ScamperVp_4ipv4_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_9ScamperVp_loc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_9ScamperVp_3loc_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_9ScamperVp_cc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_9ScamperVp_2cc_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_9ScamperVp_st(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_9ScamperVp_2st_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_9ScamperVp_place(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_9ScamperVp_5place_1__get__(o);
}

static PyMethodDef __pyx_methods_7scamper_ScamperVp[] = {
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_9ScamperVp_7__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_9ScamperVp_9__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperVp[] = {
  {"name", __pyx_getprop_7scamper_9ScamperVp_name, 0, PyDoc_STR("\n        get method to obtain the name of the VP\n\n        :returns: the name of the VP\n        :rtype: string\n        "), 0},
  {"shortname", __pyx_getprop_7scamper_9ScamperVp_shortname, 0, PyDoc_STR("\n        get method to obtain the short name of the VP, if available.\n        if a short name is not associated with the VP, then it returns\n        the regular name.\n\n        :returns: the short name, if available\n        :rtype: string\n        "), 0},
  {"tags", __pyx_getprop_7scamper_9ScamperVp_tags, 0, PyDoc_STR("\n        get method to obtain the tags associated with the VP, as a set.\n\n        :returns: a set of strings, each a tag\n        :rtype: set\n        "), 0},
  {"asn4", __pyx_getprop_7scamper_9ScamperVp_asn4, 0, PyDoc_STR("\n        get method to obtain the IPv4 ASN associated with the VP.\n\n        :returns: the IPv4 ASN\n        :rtype: int or string\n        "), 0},
  {"ipv4", __pyx_getprop_7scamper_9ScamperVp_ipv4, 0, PyDoc_STR("\n        get method to obtain the public IPv4 address from where the VP\n        connected.\n\n        :returns: the IPv4 address\n        :rtype: string\n        "), 0},
  {"loc", __pyx_getprop_7scamper_9ScamperVp_loc, 0, PyDoc_STR("\n        get method to obtain the location of a VP, if known.\n\n        :returns: lat, long\n        :rtype: pair of floats\n        "), 0},
  {"cc", __pyx_getprop_7scamper_9ScamperVp_cc, 0, PyDoc_STR("\n        get method to obtain the country code associated with the VP\n\n        :returns: the iso3166 country code, in upper case\n        :rtype: string\n        "), 0},
  {"st", __pyx_getprop_7scamper_9ScamperVp_st, 0, PyDoc_STR("\n        get method to obtain the state associated with the VP\n\n        :returns: the iso3166 state code, in upper case\n        :rtype: string\n        "), 0},
  {"place", __pyx_getprop_7scamper_9ScamperVp_place, 0, PyDoc_STR("\n        get method to obtain the populated place associated with the VP\n\n        :returns: the place\n        :rtype: string\n        "), 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperVp_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperVp},
  {Py_tp_str, (void *)__pyx_pw_7scamper_9ScamperVp_5__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    ")},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperVp},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperVp},
  {Py_tp_init, (void *)__pyx_pw_7scamper_9ScamperVp_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperVp},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperVp_spec = {
  "scamper.ScamperVp",
  sizeof(struct __pyx_obj_7scamper_ScamperVp),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperVp_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperVp = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperVp", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperVp), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperVp, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_9ScamperVp_5__str__, /*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*/
  PyDoc_STR("\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperVp, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperVp, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_9ScamperVp_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperVp, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperInst __pyx_vtable_7scamper_ScamperInst;

static PyObject *__pyx_tp_new_7scamper_ScamperInst(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperInst *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperInst *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperInst;
  p->_tasks = Py_None; Py_INCREF(Py_None);
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperInst(PyObject *o) {
  struct __pyx_obj_7scamper_ScamperInst *p = (struct __pyx_obj_7scamper_ScamperInst *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperInst) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_11ScamperInst_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  Py_CLEAR(p->_tasks);
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static int __pyx_tp_traverse_7scamper_ScamperInst(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper_ScamperInst *p = (struct __pyx_obj_7scamper_ScamperInst *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->_tasks) {
    e = (*v)(p->_tasks, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper_ScamperInst(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper_ScamperInst *p = (struct __pyx_obj_7scamper_ScamperInst *)o;
  tmp = ((PyObject*)p->_tasks);
  p->_tasks = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_4name_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst_cc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_2cc_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst_st(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_2st_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst_place(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_5place_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst_shortname(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_9shortname_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst_ipv4(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_4ipv4_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst_asn4(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_4asn4_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst_loc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_3loc_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst_taskc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_5taskc_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst_resultc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_7resultc_1__get__(o);
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst__eof(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_4_eof_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperInst__eof(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperInst_4_eof_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_7scamper_11ScamperInst__queued(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_7scamper_11ScamperInst_7_queued_1__get__(o);
}

static int __pyx_setprop_7scamper_11ScamperInst__queued(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_7scamper_11ScamperInst_7_queued_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_7scamper_ScamperInst[] = {
  {"done", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperInst_11done, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperInst_10done},
  {"is_eof", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperInst_13is_eof, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperInst_12is_eof},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperInst_15__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperInst_17__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_7scamper_ScamperInst[] = {
  {"name", __pyx_getprop_7scamper_11ScamperInst_name, 0, PyDoc_STR("\n        return a friendly string that identifies the instance in some way\n        "), 0},
  {"cc", __pyx_getprop_7scamper_11ScamperInst_cc, 0, PyDoc_STR("\n        return the country code associated with the instance, if known.\n        "), 0},
  {"st", __pyx_getprop_7scamper_11ScamperInst_st, 0, PyDoc_STR("\n        return the state code associated with the instance, if known.\n        "), 0},
  {"place", __pyx_getprop_7scamper_11ScamperInst_place, 0, PyDoc_STR("\n        return the place name associated with the instance, if known.\n        "), 0},
  {"shortname", __pyx_getprop_7scamper_11ScamperInst_shortname, 0, PyDoc_STR("\n        return the short name associated with the instance, or the\n        regular name if a short name is unavailable.\n        "), 0},
  {"ipv4", __pyx_getprop_7scamper_11ScamperInst_ipv4, 0, PyDoc_STR("\n        return the IPv4 address associated with the instance, if known.\n        "), 0},
  {"asn4", __pyx_getprop_7scamper_11ScamperInst_asn4, 0, PyDoc_STR("\n        return the IPv4 ASN associated with the instance, if known.\n        "), 0},
  {"loc", __pyx_getprop_7scamper_11ScamperInst_loc, 0, PyDoc_STR("\n        return the location associated with the instance, if known.\n        "), 0},
  {"taskc", __pyx_getprop_7scamper_11ScamperInst_taskc, 0, PyDoc_STR("\n        get method that returns the total number of tasks outstanding\n        for this :class:`ScamperInst` object.\n        "), 0},
  {"resultc", __pyx_getprop_7scamper_11ScamperInst_resultc, 0, PyDoc_STR("\n        get method that returns the total number of tasks with a result\n        queued but not yet delivered.\n        "), 0},
  {"_eof", __pyx_getprop_7scamper_11ScamperInst__eof, __pyx_setprop_7scamper_11ScamperInst__eof, 0, 0},
  {"_queued", __pyx_getprop_7scamper_11ScamperInst__queued, __pyx_setprop_7scamper_11ScamperInst__queued, 0, 0},
  {0, 0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperInst_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperInst},
  {Py_tp_hash, (void *)__pyx_pw_7scamper_11ScamperInst_7__hash__},
  {Py_tp_str, (void *)__pyx_pw_7scamper_11ScamperInst_9__str__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    A :class:`ScamperInst` represents a connection to a single scamper\n    instance, for which we can issue measurement requests.\n    This class implements functions for sorting and hashing.\n    ")},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper_ScamperInst},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper_ScamperInst},
  {Py_tp_richcompare, (void *)__pyx_pw_7scamper_11ScamperInst_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperInst},
  {Py_tp_getset, (void *)__pyx_getsets_7scamper_ScamperInst},
  {Py_tp_init, (void *)__pyx_pw_7scamper_11ScamperInst_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperInst},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperInst_spec = {
  "scamper.ScamperInst",
  sizeof(struct __pyx_obj_7scamper_ScamperInst),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC,
  __pyx_type_7scamper_ScamperInst_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperInst = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperInst", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperInst), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperInst, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  __pyx_pw_7scamper_11ScamperInst_7__hash__, /*tp_hash*/
  0, /*tp_call*/
  __pyx_pw_7scamper_11ScamperInst_9__str__, /*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|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  PyDoc_STR("\n    A :class:`ScamperInst` represents a connection to a single scamper\n    instance, for which we can issue measurement requests.\n    This class implements functions for sorting and hashing.\n    "), /*tp_doc*/
  __pyx_tp_traverse_7scamper_ScamperInst, /*tp_traverse*/
  __pyx_tp_clear_7scamper_ScamperInst, /*tp_clear*/
  __pyx_pw_7scamper_11ScamperInst_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperInst, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_7scamper_ScamperInst, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_11ScamperInst_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperInst, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif
static struct __pyx_vtabstruct_7scamper_ScamperTask __pyx_vtable_7scamper_ScamperTask;

static PyObject *__pyx_tp_new_7scamper_ScamperTask(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_7scamper_ScamperTask *p;
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  if (likely(!__Pyx_PyType_HasFeature(t, Py_TPFLAGS_IS_ABSTRACT))) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_mstate_global->__pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  #endif
  p = ((struct __pyx_obj_7scamper_ScamperTask *)o);
  p->__pyx_vtab = __pyx_vtabptr_7scamper_ScamperTask;
  return o;
}

static void __pyx_tp_dealloc_7scamper_ScamperTask(PyObject *o) {
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && (!PyType_IS_GC(Py_TYPE(o)) || !__Pyx_PyObject_GC_IsFinalized(o))) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper_ScamperTask) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) + 1);
    __pyx_pw_7scamper_11ScamperTask_3__dealloc__(o);
    __Pyx_SET_REFCNT(o, Py_REFCNT(o) - 1);
    PyErr_Restore(etype, eval, etb);
  }
  #if CYTHON_USE_TYPE_SLOTS
  (*Py_TYPE(o)->tp_free)(o);
  #else
  {
    freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
    if (tp_free) tp_free(o);
  }
  #endif
}

static PyMethodDef __pyx_methods_7scamper_ScamperTask[] = {
  {"halt", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTask_9halt, __Pyx_METH_FASTCALL|METH_KEYWORDS, __pyx_doc_7scamper_11ScamperTask_8halt},
  {"__reduce_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTask_11__reduce_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {"__setstate_cython__", (PyCFunction)(void(*)(void))(__Pyx_PyCFunction_FastCallWithKeywords)__pyx_pw_7scamper_11ScamperTask_13__setstate_cython__, __Pyx_METH_FASTCALL|METH_KEYWORDS, 0},
  {0, 0, 0, 0}
};
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper_ScamperTask_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper_ScamperTask},
  {Py_tp_hash, (void *)__pyx_pw_7scamper_11ScamperTask_7__hash__},
  {Py_tp_doc, (void *)PyDoc_STR("\n    A :class:`ScamperTask` object represents a scheduled measurement.\n    This class implements functions for sorting and hashing.\n    ")},
  {Py_tp_richcompare, (void *)__pyx_pw_7scamper_11ScamperTask_5__richcmp__},
  {Py_tp_methods, (void *)__pyx_methods_7scamper_ScamperTask},
  {Py_tp_init, (void *)__pyx_pw_7scamper_11ScamperTask_1__init__},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper_ScamperTask},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper_ScamperTask_spec = {
  "scamper.ScamperTask",
  sizeof(struct __pyx_obj_7scamper_ScamperTask),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE,
  __pyx_type_7scamper_ScamperTask_slots,
};
#else

static PyTypeObject __pyx_type_7scamper_ScamperTask = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""ScamperTask", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper_ScamperTask), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper_ScamperTask, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  __pyx_pw_7scamper_11ScamperTask_7__hash__, /*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*/
  PyDoc_STR("\n    A :class:`ScamperTask` object represents a scheduled measurement.\n    This class implements functions for sorting and hashing.\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  __pyx_pw_7scamper_11ScamperTask_5__richcmp__, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_7scamper_ScamperTask, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  __pyx_pw_7scamper_11ScamperTask_1__init__, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper_ScamperTask, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct__notes(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct__notes > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct__notes)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct__notes[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct__notes];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct__notes));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct__notes(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct__notes *p = (struct __pyx_obj_7scamper___pyx_scope_struct__notes *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct__notes) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct__notes < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct__notes)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct__notes[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct__notes++] = ((struct __pyx_obj_7scamper___pyx_scope_struct__notes *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct__notes(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct__notes *p = (struct __pyx_obj_7scamper___pyx_scope_struct__notes *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct__notes_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct__notes},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct__notes},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct__notes},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct__notes_spec = {
  "scamper.__pyx_scope_struct__notes",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct__notes),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct__notes_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct__notes = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct__notes", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct__notes), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct__notes, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct__notes, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct__notes, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_1_exceptions(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_1_exceptions > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_1_exceptions[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_1_exceptions];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_1_exceptions(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *p = (struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_1_exceptions) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_self);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_1_exceptions < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_1_exceptions[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_1_exceptions++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_1_exceptions(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *p = (struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_1_exceptions_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_1_exceptions},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_1_exceptions},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_1_exceptions},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_1_exceptions_spec = {
  "scamper.__pyx_scope_struct_1_exceptions",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_1_exceptions_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_1_exceptions = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_1_exceptions", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_1_exceptions), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_1_exceptions, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_1_exceptions, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_1_exceptions, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_2_responses(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_2_responses > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_2_responses)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_2_responses[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_2_responses];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_2_responses));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_2_responses(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *p = (struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_2_responses) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_diff);
  Py_CLEAR(p->__pyx_v_e);
  Py_CLEAR(p->__pyx_v_inst);
  Py_CLEAR(p->__pyx_v_now);
  Py_CLEAR(p->__pyx_v_o);
  Py_CLEAR(p->__pyx_v_onion);
  Py_CLEAR(p->__pyx_v_self);
  Py_CLEAR(p->__pyx_v_timeout);
  Py_CLEAR(p->__pyx_v_u);
  Py_CLEAR(p->__pyx_v_until);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_2_responses < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_2_responses)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_2_responses[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_2_responses++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_2_responses(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *p = (struct __pyx_obj_7scamper___pyx_scope_struct_2_responses *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_diff) {
    e = (*v)(p->__pyx_v_diff, a); if (e) return e;
  }
  if (p->__pyx_v_e) {
    e = (*v)(p->__pyx_v_e, a); if (e) return e;
  }
  if (p->__pyx_v_inst) {
    e = (*v)(p->__pyx_v_inst, a); if (e) return e;
  }
  if (p->__pyx_v_now) {
    e = (*v)(p->__pyx_v_now, a); if (e) return e;
  }
  if (p->__pyx_v_o) {
    e = (*v)(p->__pyx_v_o, a); if (e) return e;
  }
  if (p->__pyx_v_onion) {
    e = (*v)(p->__pyx_v_onion, a); if (e) return e;
  }
  if (p->__pyx_v_self) {
    e = (*v)(((PyObject *)p->__pyx_v_self), a); if (e) return e;
  }
  if (p->__pyx_v_timeout) {
    e = (*v)(p->__pyx_v_timeout, a); if (e) return e;
  }
  if (p->__pyx_v_u) {
    e = (*v)(p->__pyx_v_u, a); if (e) return e;
  }
  if (p->__pyx_v_until) {
    e = (*v)(p->__pyx_v_until, a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_2_responses_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_2_responses},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_2_responses},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_2_responses},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_2_responses_spec = {
  "scamper.__pyx_scope_struct_2_responses",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_2_responses),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_2_responses_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_2_responses = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_2_responses", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_2_responses), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_2_responses, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_2_responses, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_2_responses, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_3_do_trace(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_3_do_trace > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_3_do_trace[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_3_do_trace];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_3_do_trace(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *p = (struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_3_do_trace) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_m);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_3_do_trace < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_3_do_trace[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_3_do_trace++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_3_do_trace(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *p = (struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_m) {
    e = (*v)(p->__pyx_v_m, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper___pyx_scope_struct_3_do_trace(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *p = (struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace *)o;
  tmp = ((PyObject*)p->__pyx_v_m);
  p->__pyx_v_m = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_3_do_trace_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_3_do_trace},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_3_do_trace},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper___pyx_scope_struct_3_do_trace},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_3_do_trace},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_3_do_trace_spec = {
  "scamper.__pyx_scope_struct_3_do_trace",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_3_do_trace_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_3_do_trace = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_3_do_trace", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_3_do_trace), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_3_do_trace, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_3_do_trace, /*tp_traverse*/
  __pyx_tp_clear_7scamper___pyx_scope_struct_3_do_trace, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_3_do_trace, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_4_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_4_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_4_genexpr[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_4_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_4_genexpr(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_4_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_s);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_4_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_4_genexpr[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_4_genexpr++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_4_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_4_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_4_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_4_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_4_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_4_genexpr_spec = {
  "scamper.__pyx_scope_struct_4_genexpr",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_4_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_4_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_4_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_4_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_4_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_4_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_4_genexpr, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_5_do_tracelb(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_5_do_tracelb > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_5_do_tracelb[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_5_do_tracelb];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_5_do_tracelb(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *p = (struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_5_do_tracelb) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_m);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_5_do_tracelb < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_5_do_tracelb[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_5_do_tracelb++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_5_do_tracelb(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *p = (struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_m) {
    e = (*v)(p->__pyx_v_m, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper___pyx_scope_struct_5_do_tracelb(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *p = (struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb *)o;
  tmp = ((PyObject*)p->__pyx_v_m);
  p->__pyx_v_m = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_5_do_tracelb_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_5_do_tracelb},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_5_do_tracelb},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper___pyx_scope_struct_5_do_tracelb},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_5_do_tracelb},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_5_do_tracelb_spec = {
  "scamper.__pyx_scope_struct_5_do_tracelb",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_5_do_tracelb_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_5_do_tracelb = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_5_do_tracelb", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_5_do_tracelb), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_5_do_tracelb, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_5_do_tracelb, /*tp_traverse*/
  __pyx_tp_clear_7scamper___pyx_scope_struct_5_do_tracelb, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_5_do_tracelb, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_6_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_6_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_6_genexpr[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_6_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_6_genexpr(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_6_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_s);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_6_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_6_genexpr[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_6_genexpr++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_6_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_6_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_6_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_6_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_6_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_6_genexpr_spec = {
  "scamper.__pyx_scope_struct_6_genexpr",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_6_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_6_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_6_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_6_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_6_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_6_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_6_genexpr, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_7_do_ping(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_7_do_ping > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_7_do_ping[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_7_do_ping];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_7_do_ping(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *p = (struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_7_do_ping) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_m);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_7_do_ping < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_7_do_ping[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_7_do_ping++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_7_do_ping(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *p = (struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_m) {
    e = (*v)(p->__pyx_v_m, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper___pyx_scope_struct_7_do_ping(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *p = (struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping *)o;
  tmp = ((PyObject*)p->__pyx_v_m);
  p->__pyx_v_m = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_7_do_ping_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_7_do_ping},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_7_do_ping},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper___pyx_scope_struct_7_do_ping},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_7_do_ping},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_7_do_ping_spec = {
  "scamper.__pyx_scope_struct_7_do_ping",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_7_do_ping_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_7_do_ping = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_7_do_ping", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_7_do_ping), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_7_do_ping, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_7_do_ping, /*tp_traverse*/
  __pyx_tp_clear_7scamper___pyx_scope_struct_7_do_ping, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_7_do_ping, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_8_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_8_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_8_genexpr[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_8_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_8_genexpr(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_8_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_s);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_8_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_8_genexpr[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_8_genexpr++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_8_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_8_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_8_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_8_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_8_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_8_genexpr_spec = {
  "scamper.__pyx_scope_struct_8_genexpr",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_8_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_8_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_8_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_8_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_8_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_8_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_8_genexpr, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_9_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_9_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_9_genexpr[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_9_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_9_genexpr(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_9_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_s);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_9_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_9_genexpr[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_9_genexpr++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_9_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_9_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_9_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_9_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_9_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_9_genexpr_spec = {
  "scamper.__pyx_scope_struct_9_genexpr",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_9_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_9_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_9_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_9_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_9_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_9_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_9_genexpr, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_10_do_ally(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_10_do_ally > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_10_do_ally[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_10_do_ally];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_10_do_ally(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *p = (struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_10_do_ally) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_m);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_10_do_ally < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_10_do_ally[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_10_do_ally++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_10_do_ally(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *p = (struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_m) {
    e = (*v)(p->__pyx_v_m, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper___pyx_scope_struct_10_do_ally(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *p = (struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally *)o;
  tmp = ((PyObject*)p->__pyx_v_m);
  p->__pyx_v_m = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_10_do_ally_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_10_do_ally},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_10_do_ally},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper___pyx_scope_struct_10_do_ally},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_10_do_ally},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_10_do_ally_spec = {
  "scamper.__pyx_scope_struct_10_do_ally",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_10_do_ally_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_10_do_ally = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_10_do_ally", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_10_do_ally), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_10_do_ally, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_10_do_ally, /*tp_traverse*/
  __pyx_tp_clear_7scamper___pyx_scope_struct_10_do_ally, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_10_do_ally, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_11_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_11_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_11_genexpr[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_11_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_11_genexpr(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_11_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_s);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_11_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_11_genexpr[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_11_genexpr++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_11_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_11_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_11_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_11_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_11_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_11_genexpr_spec = {
  "scamper.__pyx_scope_struct_11_genexpr",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_11_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_11_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_11_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_11_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_11_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_11_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_11_genexpr, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_12_do_prefixscan(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_12_do_prefixscan > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_12_do_prefixscan[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_12_do_prefixscan];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_12_do_prefixscan(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *p = (struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_12_do_prefixscan) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_m);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_12_do_prefixscan < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_12_do_prefixscan[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_12_do_prefixscan++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_12_do_prefixscan(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *p = (struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_v_m) {
    e = (*v)(p->__pyx_v_m, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_7scamper___pyx_scope_struct_12_do_prefixscan(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *p = (struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan *)o;
  tmp = ((PyObject*)p->__pyx_v_m);
  p->__pyx_v_m = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_12_do_prefixscan_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_12_do_prefixscan},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_12_do_prefixscan},
  {Py_tp_clear, (void *)__pyx_tp_clear_7scamper___pyx_scope_struct_12_do_prefixscan},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_12_do_prefixscan},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_12_do_prefixscan_spec = {
  "scamper.__pyx_scope_struct_12_do_prefixscan",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_12_do_prefixscan_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_12_do_prefixscan = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_12_do_prefixscan", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_12_do_prefixscan), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_12_do_prefixscan, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_12_do_prefixscan, /*tp_traverse*/
  __pyx_tp_clear_7scamper___pyx_scope_struct_12_do_prefixscan, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_12_do_prefixscan, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyObject *__pyx_tp_new_7scamper___pyx_scope_struct_13_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  #if CYTHON_COMPILING_IN_LIMITED_API
  allocfunc alloc_func = (allocfunc)PyType_GetSlot(t, Py_tp_alloc);
  o = alloc_func(t, 0);
  #else
  #if CYTHON_USE_FREELISTS
  if (likely((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_13_genexpr > 0) & (int)(t->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr)))) {
    o = (PyObject*)__pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_13_genexpr[--__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_13_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else
  #endif
  {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  #endif
  return o;
}

static void __pyx_tp_dealloc_7scamper___pyx_scope_struct_13_genexpr(PyObject *o) {
  struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *)o;
  #if CYTHON_USE_TP_FINALIZE
  if (unlikely((PY_VERSION_HEX >= 0x03080000 || __Pyx_PyType_HasFeature(Py_TYPE(o), Py_TPFLAGS_HAVE_FINALIZE)) && __Pyx_PyObject_GetSlot(o, tp_finalize, destructor)) && !__Pyx_PyObject_GC_IsFinalized(o)) {
    if (__Pyx_PyObject_GetSlot(o, tp_dealloc, destructor) == __pyx_tp_dealloc_7scamper___pyx_scope_struct_13_genexpr) {
      if (PyObject_CallFinalizerFromDealloc(o)) return;
    }
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_s);
  #if CYTHON_USE_FREELISTS
  if (((int)(__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_13_genexpr < 8) & (int)(Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr)))) {
    __pyx_mstate_global->__pyx_freelist_7scamper___pyx_scope_struct_13_genexpr[__pyx_mstate_global->__pyx_freecount_7scamper___pyx_scope_struct_13_genexpr++] = ((struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *)o);
  } else
  #endif
  {
    #if CYTHON_USE_TYPE_SLOTS
    (*Py_TYPE(o)->tp_free)(o);
    #else
    {
      freefunc tp_free = (freefunc)PyType_GetSlot(Py_TYPE(o), Py_tp_free);
      if (tp_free) tp_free(o);
    }
    #endif
  }
}

static int __pyx_tp_traverse_7scamper___pyx_scope_struct_13_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *p = (struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr *)o;
  {
    e = __Pyx_call_type_traverse(o, 1, v, a);
    if (e) return e;
  }
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject *)p->__pyx_outer_scope), a); if (e) return e;
  }
  return 0;
}
#if CYTHON_USE_TYPE_SPECS
static PyType_Slot __pyx_type_7scamper___pyx_scope_struct_13_genexpr_slots[] = {
  {Py_tp_dealloc, (void *)__pyx_tp_dealloc_7scamper___pyx_scope_struct_13_genexpr},
  {Py_tp_traverse, (void *)__pyx_tp_traverse_7scamper___pyx_scope_struct_13_genexpr},
  {Py_tp_new, (void *)__pyx_tp_new_7scamper___pyx_scope_struct_13_genexpr},
  {0, 0},
};
static PyType_Spec __pyx_type_7scamper___pyx_scope_struct_13_genexpr_spec = {
  "scamper.__pyx_scope_struct_13_genexpr",
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr),
  0,
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE,
  __pyx_type_7scamper___pyx_scope_struct_13_genexpr_slots,
};
#else

static PyTypeObject __pyx_type_7scamper___pyx_scope_struct_13_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  "scamper.""__pyx_scope_struct_13_genexpr", /*tp_name*/
  sizeof(struct __pyx_obj_7scamper___pyx_scope_struct_13_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_7scamper___pyx_scope_struct_13_genexpr, /*tp_dealloc*/
  #if PY_VERSION_HEX < 0x030800b4
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b4
  0, /*tp_vectorcall_offset*/
  #endif
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  0, /*tp_as_async*/
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  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_HAVE_GC|Py_TPFLAGS_HAVE_FINALIZE, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_7scamper___pyx_scope_struct_13_genexpr, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  #if !CYTHON_USE_TYPE_SPECS
  0, /*tp_dictoffset*/
  #endif
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_7scamper___pyx_scope_struct_13_genexpr, /*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 CYTHON_USE_TP_FINALIZE
  0, /*tp_finalize*/
  #else
  NULL, /*tp_finalize*/
  #endif
  #if PY_VERSION_HEX >= 0x030800b1 && (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM >= 0x07030800)
  0, /*tp_vectorcall*/
  #endif
  #if __PYX_NEED_TP_PRINT_SLOT == 1
  0, /*tp_print*/
  #endif
  #if PY_VERSION_HEX >= 0x030C0000
  0, /*tp_watched*/
  #endif
  #if PY_VERSION_HEX >= 0x030d00A4
  0, /*tp_versions_used*/
  #endif
  #if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX >= 0x03090000 && PY_VERSION_HEX < 0x030a0000
  0, /*tp_pypy_flags*/
  #endif
};
#endif

static PyMethodDef __pyx_methods[] = {
  {0, 0, 0, 0}
};
/* #### Code section: initfunc_declarations ### */
static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_InitGlobals(void); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate); /*proto*/
static CYTHON_SMALL_CODE int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate); /*proto*/
/* #### Code section: init_module ### */

static int __Pyx_modinit_global_init_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_global_init_code", 0);
  /*--- Global init code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_variable_export_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_export_code", 0);
  /*--- Variable export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_export_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_export_code", 0);
  /*--- Function export code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_type_init_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_init_code", 0);
  /*--- Type init code ---*/
  __pyx_vtabptr_7scamper_ScamperAddr = &__pyx_vtable_7scamper_ScamperAddr;
  __pyx_vtable_7scamper_ScamperAddr.from_ptr = (struct __pyx_obj_7scamper_ScamperAddr *(*)(scamper_addr_t *))__pyx_f_7scamper_11ScamperAddr_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperAddr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperAddr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperAddr)) __PYX_ERR(0, 384, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperAddr_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperAddr) < 0) __PYX_ERR(0, 384, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperAddr = &__pyx_type_7scamper_ScamperAddr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperAddr) < 0) __PYX_ERR(0, 384, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperAddr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperAddr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperAddr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperAddr, __pyx_vtabptr_7scamper_ScamperAddr) < 0) __PYX_ERR(0, 384, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperAddr) < 0) __PYX_ERR(0, 384, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperAddr_2, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperAddr) < 0) __PYX_ERR(0, 384, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperAddr) < 0) __PYX_ERR(0, 384, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperList = &__pyx_vtable_7scamper_ScamperList;
  __pyx_vtable_7scamper_ScamperList.from_ptr = (struct __pyx_obj_7scamper_ScamperList *(*)(scamper_list_t *))__pyx_f_7scamper_11ScamperList_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperList = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperList_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperList)) __PYX_ERR(0, 571, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperList_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperList) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperList = &__pyx_type_7scamper_ScamperList;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperList) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperList->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperList->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperList->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperList, __pyx_vtabptr_7scamper_ScamperList) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperList) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperList, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperList) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperList) < 0) __PYX_ERR(0, 571, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperCycle = &__pyx_vtable_7scamper_ScamperCycle;
  __pyx_vtable_7scamper_ScamperCycle.from_ptr = (struct __pyx_obj_7scamper_ScamperCycle *(*)(scamper_cycle_t *, uint16_t))__pyx_f_7scamper_12ScamperCycle_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperCycle = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperCycle_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperCycle)) __PYX_ERR(0, 674, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperCycle_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperCycle) < 0) __PYX_ERR(0, 674, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperCycle = &__pyx_type_7scamper_ScamperCycle;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperCycle) < 0) __PYX_ERR(0, 674, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperCycle->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperCycle->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperCycle->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperCycle, __pyx_vtabptr_7scamper_ScamperCycle) < 0) __PYX_ERR(0, 674, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperCycle) < 0) __PYX_ERR(0, 674, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperCycle, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperCycle) < 0) __PYX_ERR(0, 674, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperCycle) < 0) __PYX_ERR(0, 674, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperIcmpExt = &__pyx_vtable_7scamper_ScamperIcmpExt;
  __pyx_vtable_7scamper_ScamperIcmpExt.from_ptr = (struct __pyx_obj_7scamper_ScamperIcmpExt *(*)(scamper_icmpext_t *))__pyx_f_7scamper_14ScamperIcmpExt_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperIcmpExt_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt)) __PYX_ERR(0, 861, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperIcmpExt_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt) < 0) __PYX_ERR(0, 861, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt = &__pyx_type_7scamper_ScamperIcmpExt;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt) < 0) __PYX_ERR(0, 861, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt, __pyx_vtabptr_7scamper_ScamperIcmpExt) < 0) __PYX_ERR(0, 861, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt) < 0) __PYX_ERR(0, 861, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExt, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt) < 0) __PYX_ERR(0, 861, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExt) < 0) __PYX_ERR(0, 861, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperIcmpExts = &__pyx_vtable_7scamper_ScamperIcmpExts;
  __pyx_vtable_7scamper_ScamperIcmpExts.from_ptr = (struct __pyx_obj_7scamper_ScamperIcmpExts *(*)(scamper_icmpexts_t *))__pyx_f_7scamper_15ScamperIcmpExts_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperIcmpExts_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts)) __PYX_ERR(0, 1027, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperIcmpExts_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts) < 0) __PYX_ERR(0, 1027, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts = &__pyx_type_7scamper_ScamperIcmpExts;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts) < 0) __PYX_ERR(0, 1027, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts, __pyx_vtabptr_7scamper_ScamperIcmpExts) < 0) __PYX_ERR(0, 1027, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts) < 0) __PYX_ERR(0, 1027, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExts, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts) < 0) __PYX_ERR(0, 1027, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperIcmpExts) < 0) __PYX_ERR(0, 1027, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTraceHop = &__pyx_vtable_7scamper_ScamperTraceHop;
  __pyx_vtable_7scamper_ScamperTraceHop.from_ptr = (struct __pyx_obj_7scamper_ScamperTraceHop *(*)(scamper_trace_probe_t *, scamper_trace_reply_t *, uint32_t))__pyx_f_7scamper_15ScamperTraceHop_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTraceHop_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop)) __PYX_ERR(0, 1108, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTraceHop_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop) < 0) __PYX_ERR(0, 1108, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop = &__pyx_type_7scamper_ScamperTraceHop;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop) < 0) __PYX_ERR(0, 1108, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop, __pyx_vtabptr_7scamper_ScamperTraceHop) < 0) __PYX_ERR(0, 1108, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop) < 0) __PYX_ERR(0, 1108, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTraceHop, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop) < 0) __PYX_ERR(0, 1108, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTraceHop) < 0) __PYX_ERR(0, 1108, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTracePmtudNote = &__pyx_vtable_7scamper_ScamperTracePmtudNote;
  __pyx_vtable_7scamper_ScamperTracePmtudNote.from_ptr = (struct __pyx_obj_7scamper_ScamperTracePmtudNote *(*)(scamper_trace_pmtud_note_t *, uint8_t, uint32_t))__pyx_f_7scamper_21ScamperTracePmtudNote_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTracePmtudNote_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote)) __PYX_ERR(0, 1525, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTracePmtudNote_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote) < 0) __PYX_ERR(0, 1525, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote = &__pyx_type_7scamper_ScamperTracePmtudNote;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote) < 0) __PYX_ERR(0, 1525, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote, __pyx_vtabptr_7scamper_ScamperTracePmtudNote) < 0) __PYX_ERR(0, 1525, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote) < 0) __PYX_ERR(0, 1525, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTracePmtudNote, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote) < 0) __PYX_ERR(0, 1525, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtudNote) < 0) __PYX_ERR(0, 1525, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTracePmtud = &__pyx_vtable_7scamper_ScamperTracePmtud;
  __pyx_vtable_7scamper_ScamperTracePmtud.from_ptr = (struct __pyx_obj_7scamper_ScamperTracePmtud *(*)(struct __pyx_obj_7scamper_ScamperTrace *))__pyx_f_7scamper_17ScamperTracePmtud_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTracePmtud_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud)) __PYX_ERR(0, 1600, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTracePmtud_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud) < 0) __PYX_ERR(0, 1600, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud = &__pyx_type_7scamper_ScamperTracePmtud;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud) < 0) __PYX_ERR(0, 1600, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud, __pyx_vtabptr_7scamper_ScamperTracePmtud) < 0) __PYX_ERR(0, 1600, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud) < 0) __PYX_ERR(0, 1600, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTracePmtud, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud) < 0) __PYX_ERR(0, 1600, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracePmtud) < 0) __PYX_ERR(0, 1600, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTrace = &__pyx_vtable_7scamper_ScamperTrace;
  __pyx_vtable_7scamper_ScamperTrace.from_ptr = (struct __pyx_obj_7scamper_ScamperTrace *(*)(scamper_trace_t *))__pyx_f_7scamper_12ScamperTrace_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTrace = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTrace_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTrace)) __PYX_ERR(0, 1681, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTrace_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTrace) < 0) __PYX_ERR(0, 1681, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTrace = &__pyx_type_7scamper_ScamperTrace;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTrace) < 0) __PYX_ERR(0, 1681, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTrace->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTrace->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTrace->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTrace, __pyx_vtabptr_7scamper_ScamperTrace) < 0) __PYX_ERR(0, 1681, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTrace) < 0) __PYX_ERR(0, 1681, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTrace, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTrace) < 0) __PYX_ERR(0, 1681, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTrace) < 0) __PYX_ERR(0, 1681, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperPingReply = &__pyx_vtable_7scamper_ScamperPingReply;
  __pyx_vtable_7scamper_ScamperPingReply.from_ptr = (struct __pyx_obj_7scamper_ScamperPingReply *(*)(scamper_ping_reply_t *, scamper_ping_probe_t *, scamper_ping_t *))__pyx_f_7scamper_16ScamperPingReply_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperPingReply_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply)) __PYX_ERR(0, 2283, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperPingReply_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply) < 0) __PYX_ERR(0, 2283, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply = &__pyx_type_7scamper_ScamperPingReply;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply) < 0) __PYX_ERR(0, 2283, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply, __pyx_vtabptr_7scamper_ScamperPingReply) < 0) __PYX_ERR(0, 2283, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply) < 0) __PYX_ERR(0, 2283, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperPingReply, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply) < 0) __PYX_ERR(0, 2283, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperPingReply) < 0) __PYX_ERR(0, 2283, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperPing = &__pyx_vtable_7scamper_ScamperPing;
  __pyx_vtable_7scamper_ScamperPing.from_ptr = (struct __pyx_obj_7scamper_ScamperPing *(*)(scamper_ping_t *))__pyx_f_7scamper_11ScamperPing_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperPing = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperPing_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperPing)) __PYX_ERR(0, 2636, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperPing_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperPing) < 0) __PYX_ERR(0, 2636, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperPing = &__pyx_type_7scamper_ScamperPing;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperPing) < 0) __PYX_ERR(0, 2636, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperPing->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperPing->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperPing->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperPing, __pyx_vtabptr_7scamper_ScamperPing) < 0) __PYX_ERR(0, 2636, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperPing) < 0) __PYX_ERR(0, 2636, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperPing, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperPing) < 0) __PYX_ERR(0, 2636, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperPing) < 0) __PYX_ERR(0, 2636, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTracelbReply = &__pyx_vtable_7scamper_ScamperTracelbReply;
  __pyx_vtable_7scamper_ScamperTracelbReply.from_ptr = (struct __pyx_obj_7scamper_ScamperTracelbReply *(*)(scamper_tracelb_reply_t *))__pyx_f_7scamper_19ScamperTracelbReply_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTracelbReply_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply)) __PYX_ERR(0, 3232, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTracelbReply_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply) < 0) __PYX_ERR(0, 3232, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply = &__pyx_type_7scamper_ScamperTracelbReply;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply) < 0) __PYX_ERR(0, 3232, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply, __pyx_vtabptr_7scamper_ScamperTracelbReply) < 0) __PYX_ERR(0, 3232, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply) < 0) __PYX_ERR(0, 3232, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTracelbReply, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply) < 0) __PYX_ERR(0, 3232, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbReply) < 0) __PYX_ERR(0, 3232, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTracelbProbe = &__pyx_vtable_7scamper_ScamperTracelbProbe;
  __pyx_vtable_7scamper_ScamperTracelbProbe.from_ptr = (struct __pyx_obj_7scamper_ScamperTracelbProbe *(*)(scamper_tracelb_probe_t *))__pyx_f_7scamper_19ScamperTracelbProbe_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTracelbProbe_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe)) __PYX_ERR(0, 3382, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTracelbProbe_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe) < 0) __PYX_ERR(0, 3382, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe = &__pyx_type_7scamper_ScamperTracelbProbe;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe) < 0) __PYX_ERR(0, 3382, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe, __pyx_vtabptr_7scamper_ScamperTracelbProbe) < 0) __PYX_ERR(0, 3382, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe) < 0) __PYX_ERR(0, 3382, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTracelbProbe, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe) < 0) __PYX_ERR(0, 3382, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbe) < 0) __PYX_ERR(0, 3382, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTracelbProbeset = &__pyx_vtable_7scamper_ScamperTracelbProbeset;
  __pyx_vtable_7scamper_ScamperTracelbProbeset.from_ptr = (struct __pyx_obj_7scamper_ScamperTracelbProbeset *(*)(scamper_tracelb_probeset_t *))__pyx_f_7scamper_22ScamperTracelbProbeset_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTracelbProbeset_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset)) __PYX_ERR(0, 3480, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTracelbProbeset_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset) < 0) __PYX_ERR(0, 3480, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset = &__pyx_type_7scamper_ScamperTracelbProbeset;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset) < 0) __PYX_ERR(0, 3480, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset, __pyx_vtabptr_7scamper_ScamperTracelbProbeset) < 0) __PYX_ERR(0, 3480, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset) < 0) __PYX_ERR(0, 3480, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTracelbProbeset, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset) < 0) __PYX_ERR(0, 3480, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbProbeset) < 0) __PYX_ERR(0, 3480, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTracelbNode = &__pyx_vtable_7scamper_ScamperTracelbNode;
  __pyx_vtable_7scamper_ScamperTracelbNode.from_ptr = (struct __pyx_obj_7scamper_ScamperTracelbNode *(*)(scamper_tracelb_node_t *))__pyx_f_7scamper_18ScamperTracelbNode_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTracelbNode_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode)) __PYX_ERR(0, 3539, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTracelbNode_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode) < 0) __PYX_ERR(0, 3539, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode = &__pyx_type_7scamper_ScamperTracelbNode;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode) < 0) __PYX_ERR(0, 3539, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode, __pyx_vtabptr_7scamper_ScamperTracelbNode) < 0) __PYX_ERR(0, 3539, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode) < 0) __PYX_ERR(0, 3539, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNode, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode) < 0) __PYX_ERR(0, 3539, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbNode) < 0) __PYX_ERR(0, 3539, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTracelbLink = &__pyx_vtable_7scamper_ScamperTracelbLink;
  __pyx_vtable_7scamper_ScamperTracelbLink.from_ptr = (struct __pyx_obj_7scamper_ScamperTracelbLink *(*)(scamper_tracelb_link_t *))__pyx_f_7scamper_18ScamperTracelbLink_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTracelbLink_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink)) __PYX_ERR(0, 3624, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTracelbLink_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink) < 0) __PYX_ERR(0, 3624, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink = &__pyx_type_7scamper_ScamperTracelbLink;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink) < 0) __PYX_ERR(0, 3624, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink, __pyx_vtabptr_7scamper_ScamperTracelbLink) < 0) __PYX_ERR(0, 3624, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink) < 0) __PYX_ERR(0, 3624, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLink, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink) < 0) __PYX_ERR(0, 3624, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelbLink) < 0) __PYX_ERR(0, 3624, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTracelb = &__pyx_vtable_7scamper_ScamperTracelb;
  __pyx_vtable_7scamper_ScamperTracelb.from_ptr = (struct __pyx_obj_7scamper_ScamperTracelb *(*)(scamper_tracelb_t *))__pyx_f_7scamper_14ScamperTracelb_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTracelb_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb)) __PYX_ERR(0, 3730, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTracelb_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb) < 0) __PYX_ERR(0, 3730, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb = &__pyx_type_7scamper_ScamperTracelb;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb) < 0) __PYX_ERR(0, 3730, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb, __pyx_vtabptr_7scamper_ScamperTracelb) < 0) __PYX_ERR(0, 3730, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb) < 0) __PYX_ERR(0, 3730, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTracelb, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb) < 0) __PYX_ERR(0, 3730, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTracelb) < 0) __PYX_ERR(0, 3730, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperDealiasReply = &__pyx_vtable_7scamper_ScamperDealiasReply;
  __pyx_vtable_7scamper_ScamperDealiasReply.from_ptr = (struct __pyx_obj_7scamper_ScamperDealiasReply *(*)(scamper_dealias_reply_t *, scamper_dealias_probe_t *))__pyx_f_7scamper_19ScamperDealiasReply_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperDealiasReply_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply)) __PYX_ERR(0, 4107, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperDealiasReply_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply) < 0) __PYX_ERR(0, 4107, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply = &__pyx_type_7scamper_ScamperDealiasReply;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply) < 0) __PYX_ERR(0, 4107, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply, __pyx_vtabptr_7scamper_ScamperDealiasReply) < 0) __PYX_ERR(0, 4107, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply) < 0) __PYX_ERR(0, 4107, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReply, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply) < 0) __PYX_ERR(0, 4107, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasReply) < 0) __PYX_ERR(0, 4107, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperDealiasMidardiscRound_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound)) __PYX_ERR(0, 4305, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperDealiasMidardiscRound_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound) < 0) __PYX_ERR(0, 4305, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound = &__pyx_type_7scamper_ScamperDealiasMidardiscRound;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound) < 0) __PYX_ERR(0, 4305, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperDealiasMidardiscRound, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound) < 0) __PYX_ERR(0, 4305, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasMidardiscRound) < 0) __PYX_ERR(0, 4305, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperDealiasProbedef = &__pyx_vtable_7scamper_ScamperDealiasProbedef;
  __pyx_vtable_7scamper_ScamperDealiasProbedef.from_ptr = (struct __pyx_obj_7scamper_ScamperDealiasProbedef *(*)(scamper_dealias_probedef_t *))__pyx_f_7scamper_22ScamperDealiasProbedef_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperDealiasProbedef_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef)) __PYX_ERR(0, 4384, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperDealiasProbedef_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef) < 0) __PYX_ERR(0, 4384, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef = &__pyx_type_7scamper_ScamperDealiasProbedef;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef) < 0) __PYX_ERR(0, 4384, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef, __pyx_vtabptr_7scamper_ScamperDealiasProbedef) < 0) __PYX_ERR(0, 4384, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef) < 0) __PYX_ERR(0, 4384, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedef_2, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef) < 0) __PYX_ERR(0, 4384, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbedef) < 0) __PYX_ERR(0, 4384, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperDealiasProbe = &__pyx_vtable_7scamper_ScamperDealiasProbe;
  __pyx_vtable_7scamper_ScamperDealiasProbe.from_ptr = (struct __pyx_obj_7scamper_ScamperDealiasProbe *(*)(scamper_dealias_probe_t *))__pyx_f_7scamper_19ScamperDealiasProbe_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperDealiasProbe_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe)) __PYX_ERR(0, 4759, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperDealiasProbe_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe) < 0) __PYX_ERR(0, 4759, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe = &__pyx_type_7scamper_ScamperDealiasProbe;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe) < 0) __PYX_ERR(0, 4759, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe, __pyx_vtabptr_7scamper_ScamperDealiasProbe) < 0) __PYX_ERR(0, 4759, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe) < 0) __PYX_ERR(0, 4759, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbe, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe) < 0) __PYX_ERR(0, 4759, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperDealiasProbe) < 0) __PYX_ERR(0, 4759, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperDealias = &__pyx_vtable_7scamper_ScamperDealias;
  __pyx_vtable_7scamper_ScamperDealias.from_ptr = (struct __pyx_obj_7scamper_ScamperDealias *(*)(scamper_dealias_t *))__pyx_f_7scamper_14ScamperDealias_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperDealias = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperDealias_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperDealias)) __PYX_ERR(0, 4886, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperDealias_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperDealias) < 0) __PYX_ERR(0, 4886, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperDealias = &__pyx_type_7scamper_ScamperDealias;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealias) < 0) __PYX_ERR(0, 4886, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperDealias->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperDealias->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperDealias->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealias, __pyx_vtabptr_7scamper_ScamperDealias) < 0) __PYX_ERR(0, 4886, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperDealias) < 0) __PYX_ERR(0, 4886, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperDealias, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperDealias) < 0) __PYX_ERR(0, 4886, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperDealias) < 0) __PYX_ERR(0, 4886, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperNeighbourdisc = &__pyx_vtable_7scamper_ScamperNeighbourdisc;
  __pyx_vtable_7scamper_ScamperNeighbourdisc.from_ptr = (struct __pyx_obj_7scamper_ScamperNeighbourdisc *(*)(scamper_neighbourdisc_t *))__pyx_f_7scamper_20ScamperNeighbourdisc_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperNeighbourdisc_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc)) __PYX_ERR(0, 5348, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperNeighbourdisc_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc) < 0) __PYX_ERR(0, 5348, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc = &__pyx_type_7scamper_ScamperNeighbourdisc;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc) < 0) __PYX_ERR(0, 5348, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc, __pyx_vtabptr_7scamper_ScamperNeighbourdisc) < 0) __PYX_ERR(0, 5348, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc) < 0) __PYX_ERR(0, 5348, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperNeighbourdisc, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc) < 0) __PYX_ERR(0, 5348, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperNeighbourdisc) < 0) __PYX_ERR(0, 5348, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTbitPkt = &__pyx_vtable_7scamper_ScamperTbitPkt;
  __pyx_vtable_7scamper_ScamperTbitPkt.from_ptr = (struct __pyx_obj_7scamper_ScamperTbitPkt *(*)(scamper_tbit_pkt_t *))__pyx_f_7scamper_14ScamperTbitPkt_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTbitPkt_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt)) __PYX_ERR(0, 5396, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTbitPkt_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt) < 0) __PYX_ERR(0, 5396, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt = &__pyx_type_7scamper_ScamperTbitPkt;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt) < 0) __PYX_ERR(0, 5396, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt, __pyx_vtabptr_7scamper_ScamperTbitPkt) < 0) __PYX_ERR(0, 5396, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt) < 0) __PYX_ERR(0, 5396, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTbitPkt, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt) < 0) __PYX_ERR(0, 5396, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTbitPkt) < 0) __PYX_ERR(0, 5396, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTbit = &__pyx_vtable_7scamper_ScamperTbit;
  __pyx_vtable_7scamper_ScamperTbit.from_ptr = (struct __pyx_obj_7scamper_ScamperTbit *(*)(scamper_tbit_t *))__pyx_f_7scamper_11ScamperTbit_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTbit = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTbit_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTbit)) __PYX_ERR(0, 5470, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTbit_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTbit) < 0) __PYX_ERR(0, 5470, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTbit = &__pyx_type_7scamper_ScamperTbit;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTbit) < 0) __PYX_ERR(0, 5470, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTbit->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTbit->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTbit->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTbit, __pyx_vtabptr_7scamper_ScamperTbit) < 0) __PYX_ERR(0, 5470, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTbit) < 0) __PYX_ERR(0, 5470, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTbit, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTbit) < 0) __PYX_ERR(0, 5470, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTbit) < 0) __PYX_ERR(0, 5470, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperSting = &__pyx_vtable_7scamper_ScamperSting;
  __pyx_vtable_7scamper_ScamperSting.from_ptr = (struct __pyx_obj_7scamper_ScamperSting *(*)(scamper_sting_t *))__pyx_f_7scamper_12ScamperSting_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperSting = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperSting_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperSting)) __PYX_ERR(0, 5653, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperSting_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperSting) < 0) __PYX_ERR(0, 5653, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperSting = &__pyx_type_7scamper_ScamperSting;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperSting) < 0) __PYX_ERR(0, 5653, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperSting->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperSting->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperSting->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperSting, __pyx_vtabptr_7scamper_ScamperSting) < 0) __PYX_ERR(0, 5653, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperSting) < 0) __PYX_ERR(0, 5653, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperSting, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperSting) < 0) __PYX_ERR(0, 5653, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperSting) < 0) __PYX_ERR(0, 5653, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperSniffPkt = &__pyx_vtable_7scamper_ScamperSniffPkt;
  __pyx_vtable_7scamper_ScamperSniffPkt.from_ptr = (struct __pyx_obj_7scamper_ScamperSniffPkt *(*)(scamper_sniff_pkt_t *))__pyx_f_7scamper_15ScamperSniffPkt_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperSniffPkt_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt)) __PYX_ERR(0, 5685, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperSniffPkt_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt) < 0) __PYX_ERR(0, 5685, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt = &__pyx_type_7scamper_ScamperSniffPkt;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt) < 0) __PYX_ERR(0, 5685, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt, __pyx_vtabptr_7scamper_ScamperSniffPkt) < 0) __PYX_ERR(0, 5685, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt) < 0) __PYX_ERR(0, 5685, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperSniffPkt, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt) < 0) __PYX_ERR(0, 5685, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperSniffPkt) < 0) __PYX_ERR(0, 5685, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperSniff = &__pyx_vtable_7scamper_ScamperSniff;
  __pyx_vtable_7scamper_ScamperSniff.from_ptr = (struct __pyx_obj_7scamper_ScamperSniff *(*)(scamper_sniff_t *))__pyx_f_7scamper_12ScamperSniff_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperSniff = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperSniff_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperSniff)) __PYX_ERR(0, 5735, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperSniff_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperSniff) < 0) __PYX_ERR(0, 5735, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperSniff = &__pyx_type_7scamper_ScamperSniff;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperSniff) < 0) __PYX_ERR(0, 5735, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperSniff->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperSniff->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperSniff->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperSniff, __pyx_vtabptr_7scamper_ScamperSniff) < 0) __PYX_ERR(0, 5735, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperSniff) < 0) __PYX_ERR(0, 5735, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperSniff, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperSniff) < 0) __PYX_ERR(0, 5735, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperSniff) < 0) __PYX_ERR(0, 5735, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHostMX = &__pyx_vtable_7scamper_ScamperHostMX;
  __pyx_vtable_7scamper_ScamperHostMX.from_ptr = (struct __pyx_obj_7scamper_ScamperHostMX *(*)(scamper_host_rr_mx_t *))__pyx_f_7scamper_13ScamperHostMX_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHostMX_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX)) __PYX_ERR(0, 5928, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHostMX_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX) < 0) __PYX_ERR(0, 5928, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX = &__pyx_type_7scamper_ScamperHostMX;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX) < 0) __PYX_ERR(0, 5928, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX, __pyx_vtabptr_7scamper_ScamperHostMX) < 0) __PYX_ERR(0, 5928, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX) < 0) __PYX_ERR(0, 5928, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHostMX, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX) < 0) __PYX_ERR(0, 5928, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostMX) < 0) __PYX_ERR(0, 5928, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHostSOA = &__pyx_vtable_7scamper_ScamperHostSOA;
  __pyx_vtable_7scamper_ScamperHostSOA.from_ptr = (struct __pyx_obj_7scamper_ScamperHostSOA *(*)(scamper_host_rr_soa_t *))__pyx_f_7scamper_14ScamperHostSOA_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHostSOA_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA)) __PYX_ERR(0, 5975, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHostSOA_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA) < 0) __PYX_ERR(0, 5975, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA = &__pyx_type_7scamper_ScamperHostSOA;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA) < 0) __PYX_ERR(0, 5975, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA, __pyx_vtabptr_7scamper_ScamperHostSOA) < 0) __PYX_ERR(0, 5975, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA) < 0) __PYX_ERR(0, 5975, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHostSOA, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA) < 0) __PYX_ERR(0, 5975, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSOA) < 0) __PYX_ERR(0, 5975, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHostTXT = &__pyx_vtable_7scamper_ScamperHostTXT;
  __pyx_vtable_7scamper_ScamperHostTXT.from_ptr = (struct __pyx_obj_7scamper_ScamperHostTXT *(*)(scamper_host_rr_txt_t *))__pyx_f_7scamper_14ScamperHostTXT_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHostTXT_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT)) __PYX_ERR(0, 6086, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHostTXT_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT) < 0) __PYX_ERR(0, 6086, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT = &__pyx_type_7scamper_ScamperHostTXT;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT) < 0) __PYX_ERR(0, 6086, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT, __pyx_vtabptr_7scamper_ScamperHostTXT) < 0) __PYX_ERR(0, 6086, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT) < 0) __PYX_ERR(0, 6086, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHostTXT, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT) < 0) __PYX_ERR(0, 6086, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostTXT) < 0) __PYX_ERR(0, 6086, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHostOPTElem = &__pyx_vtable_7scamper_ScamperHostOPTElem;
  __pyx_vtable_7scamper_ScamperHostOPTElem.from_ptr = (struct __pyx_obj_7scamper_ScamperHostOPTElem *(*)(scamper_host_rr_opt_elem_t *))__pyx_f_7scamper_18ScamperHostOPTElem_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHostOPTElem_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem)) __PYX_ERR(0, 6146, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHostOPTElem_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem) < 0) __PYX_ERR(0, 6146, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem = &__pyx_type_7scamper_ScamperHostOPTElem;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem) < 0) __PYX_ERR(0, 6146, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem, __pyx_vtabptr_7scamper_ScamperHostOPTElem) < 0) __PYX_ERR(0, 6146, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem) < 0) __PYX_ERR(0, 6146, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHostOPTElem, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem) < 0) __PYX_ERR(0, 6146, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPTElem) < 0) __PYX_ERR(0, 6146, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHostOPT = &__pyx_vtable_7scamper_ScamperHostOPT;
  __pyx_vtable_7scamper_ScamperHostOPT.from_ptr = (struct __pyx_obj_7scamper_ScamperHostOPT *(*)(scamper_host_rr_opt_t *))__pyx_f_7scamper_14ScamperHostOPT_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHostOPT_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT)) __PYX_ERR(0, 6210, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHostOPT_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT) < 0) __PYX_ERR(0, 6210, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT = &__pyx_type_7scamper_ScamperHostOPT;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT) < 0) __PYX_ERR(0, 6210, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT, __pyx_vtabptr_7scamper_ScamperHostOPT) < 0) __PYX_ERR(0, 6210, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT) < 0) __PYX_ERR(0, 6210, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHostOPT, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT) < 0) __PYX_ERR(0, 6210, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostOPT) < 0) __PYX_ERR(0, 6210, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHostSVCBParam = &__pyx_vtable_7scamper_ScamperHostSVCBParam;
  __pyx_vtable_7scamper_ScamperHostSVCBParam.from_ptr = (struct __pyx_obj_7scamper_ScamperHostSVCBParam *(*)(scamper_host_rr_svcb_param_t *))__pyx_f_7scamper_20ScamperHostSVCBParam_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHostSVCBParam_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam)) __PYX_ERR(0, 6273, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHostSVCBParam_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam) < 0) __PYX_ERR(0, 6273, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam = &__pyx_type_7scamper_ScamperHostSVCBParam;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam) < 0) __PYX_ERR(0, 6273, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam, __pyx_vtabptr_7scamper_ScamperHostSVCBParam) < 0) __PYX_ERR(0, 6273, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam) < 0) __PYX_ERR(0, 6273, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHostSVCBParam, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam) < 0) __PYX_ERR(0, 6273, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCBParam) < 0) __PYX_ERR(0, 6273, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHostSVCB = &__pyx_vtable_7scamper_ScamperHostSVCB;
  __pyx_vtable_7scamper_ScamperHostSVCB.from_ptr = (struct __pyx_obj_7scamper_ScamperHostSVCB *(*)(scamper_host_rr_svcb_t *))__pyx_f_7scamper_15ScamperHostSVCB_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHostSVCB_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB)) __PYX_ERR(0, 6337, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHostSVCB_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB) < 0) __PYX_ERR(0, 6337, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB = &__pyx_type_7scamper_ScamperHostSVCB;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB) < 0) __PYX_ERR(0, 6337, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB, __pyx_vtabptr_7scamper_ScamperHostSVCB) < 0) __PYX_ERR(0, 6337, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB) < 0) __PYX_ERR(0, 6337, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHostSVCB, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB) < 0) __PYX_ERR(0, 6337, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostSVCB) < 0) __PYX_ERR(0, 6337, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHostRR = &__pyx_vtable_7scamper_ScamperHostRR;
  __pyx_vtable_7scamper_ScamperHostRR.from_ptr = (struct __pyx_obj_7scamper_ScamperHostRR *(*)(scamper_host_rr_t *))__pyx_f_7scamper_13ScamperHostRR_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHostRR_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR)) __PYX_ERR(0, 6423, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHostRR_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR) < 0) __PYX_ERR(0, 6423, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR = &__pyx_type_7scamper_ScamperHostRR;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR) < 0) __PYX_ERR(0, 6423, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR, __pyx_vtabptr_7scamper_ScamperHostRR) < 0) __PYX_ERR(0, 6423, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR) < 0) __PYX_ERR(0, 6423, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHostRR, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR) < 0) __PYX_ERR(0, 6423, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostRR) < 0) __PYX_ERR(0, 6423, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHostQuery = &__pyx_vtable_7scamper_ScamperHostQuery;
  __pyx_vtable_7scamper_ScamperHostQuery.from_ptr = (struct __pyx_obj_7scamper_ScamperHostQuery *(*)(scamper_host_query_t *))__pyx_f_7scamper_16ScamperHostQuery_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHostQuery_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery)) __PYX_ERR(0, 6773, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHostQuery_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery) < 0) __PYX_ERR(0, 6773, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery = &__pyx_type_7scamper_ScamperHostQuery;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery) < 0) __PYX_ERR(0, 6773, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery, __pyx_vtabptr_7scamper_ScamperHostQuery) < 0) __PYX_ERR(0, 6773, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery) < 0) __PYX_ERR(0, 6773, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHostQuery, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery) < 0) __PYX_ERR(0, 6773, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHostQuery) < 0) __PYX_ERR(0, 6773, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHost = &__pyx_vtable_7scamper_ScamperHost;
  __pyx_vtable_7scamper_ScamperHost.from_ptr = (struct __pyx_obj_7scamper_ScamperHost *(*)(scamper_host_t *))__pyx_f_7scamper_11ScamperHost_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHost = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHost_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHost)) __PYX_ERR(0, 7029, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHost_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHost) < 0) __PYX_ERR(0, 7029, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHost = &__pyx_type_7scamper_ScamperHost;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHost) < 0) __PYX_ERR(0, 7029, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHost->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHost->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHost->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHost, __pyx_vtabptr_7scamper_ScamperHost) < 0) __PYX_ERR(0, 7029, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHost) < 0) __PYX_ERR(0, 7029, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHost, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHost) < 0) __PYX_ERR(0, 7029, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHost) < 0) __PYX_ERR(0, 7029, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHttpBuf = &__pyx_vtable_7scamper_ScamperHttpBuf;
  __pyx_vtable_7scamper_ScamperHttpBuf.from_ptr = (struct __pyx_obj_7scamper_ScamperHttpBuf *(*)(scamper_http_buf_t *))__pyx_f_7scamper_14ScamperHttpBuf_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHttpBuf_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf)) __PYX_ERR(0, 7524, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHttpBuf_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf) < 0) __PYX_ERR(0, 7524, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf = &__pyx_type_7scamper_ScamperHttpBuf;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf) < 0) __PYX_ERR(0, 7524, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf, __pyx_vtabptr_7scamper_ScamperHttpBuf) < 0) __PYX_ERR(0, 7524, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf) < 0) __PYX_ERR(0, 7524, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHttpBuf, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf) < 0) __PYX_ERR(0, 7524, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHttpBuf) < 0) __PYX_ERR(0, 7524, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperHttp = &__pyx_vtable_7scamper_ScamperHttp;
  __pyx_vtable_7scamper_ScamperHttp.from_ptr = (struct __pyx_obj_7scamper_ScamperHttp *(*)(scamper_http_t *))__pyx_f_7scamper_11ScamperHttp_from_ptr;
  __pyx_vtable_7scamper_ScamperHttp._htfs_todict = (PyObject *(*)(struct __pyx_obj_7scamper_ScamperHttp *, scamper_http_hdr_fields_t *))__pyx_f_7scamper_11ScamperHttp__htfs_todict;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHttp = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperHttp_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHttp)) __PYX_ERR(0, 7663, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperHttp_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperHttp) < 0) __PYX_ERR(0, 7663, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperHttp = &__pyx_type_7scamper_ScamperHttp;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperHttp) < 0) __PYX_ERR(0, 7663, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperHttp->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperHttp->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperHttp->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperHttp, __pyx_vtabptr_7scamper_ScamperHttp) < 0) __PYX_ERR(0, 7663, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperHttp) < 0) __PYX_ERR(0, 7663, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperHttp, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHttp) < 0) __PYX_ERR(0, 7663, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperHttp) < 0) __PYX_ERR(0, 7663, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperUdpprobeReply = &__pyx_vtable_7scamper_ScamperUdpprobeReply;
  __pyx_vtable_7scamper_ScamperUdpprobeReply.from_ptr = (struct __pyx_obj_7scamper_ScamperUdpprobeReply *(*)(scamper_udpprobe_reply_t *))__pyx_f_7scamper_20ScamperUdpprobeReply_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperUdpprobeReply_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply)) __PYX_ERR(0, 8056, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperUdpprobeReply_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply) < 0) __PYX_ERR(0, 8056, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply = &__pyx_type_7scamper_ScamperUdpprobeReply;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply) < 0) __PYX_ERR(0, 8056, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply, __pyx_vtabptr_7scamper_ScamperUdpprobeReply) < 0) __PYX_ERR(0, 8056, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply) < 0) __PYX_ERR(0, 8056, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReply, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply) < 0) __PYX_ERR(0, 8056, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeReply) < 0) __PYX_ERR(0, 8056, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperUdpprobeProbe = &__pyx_vtable_7scamper_ScamperUdpprobeProbe;
  __pyx_vtable_7scamper_ScamperUdpprobeProbe.from_ptr = (struct __pyx_obj_7scamper_ScamperUdpprobeProbe *(*)(scamper_udpprobe_probe_t *))__pyx_f_7scamper_20ScamperUdpprobeProbe_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperUdpprobeProbe_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe)) __PYX_ERR(0, 8121, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperUdpprobeProbe_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe) < 0) __PYX_ERR(0, 8121, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe = &__pyx_type_7scamper_ScamperUdpprobeProbe;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe) < 0) __PYX_ERR(0, 8121, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe, __pyx_vtabptr_7scamper_ScamperUdpprobeProbe) < 0) __PYX_ERR(0, 8121, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe) < 0) __PYX_ERR(0, 8121, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeProbe, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe) < 0) __PYX_ERR(0, 8121, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobeProbe) < 0) __PYX_ERR(0, 8121, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperUdpprobe = &__pyx_vtable_7scamper_ScamperUdpprobe;
  __pyx_vtable_7scamper_ScamperUdpprobe.from_ptr = (struct __pyx_obj_7scamper_ScamperUdpprobe *(*)(scamper_udpprobe_t *))__pyx_f_7scamper_15ScamperUdpprobe_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperUdpprobe_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe)) __PYX_ERR(0, 8201, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperUdpprobe_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe) < 0) __PYX_ERR(0, 8201, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe = &__pyx_type_7scamper_ScamperUdpprobe;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe) < 0) __PYX_ERR(0, 8201, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe, __pyx_vtabptr_7scamper_ScamperUdpprobe) < 0) __PYX_ERR(0, 8201, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe) < 0) __PYX_ERR(0, 8201, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobe, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe) < 0) __PYX_ERR(0, 8201, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperUdpprobe) < 0) __PYX_ERR(0, 8201, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperFile = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperFile_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperFile)) __PYX_ERR(0, 8406, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperFile_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperFile) < 0) __PYX_ERR(0, 8406, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperFile = &__pyx_type_7scamper_ScamperFile;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperFile) < 0) __PYX_ERR(0, 8406, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperFile->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperFile->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperFile->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperFile, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperFile) < 0) __PYX_ERR(0, 8406, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperFile) < 0) __PYX_ERR(0, 8406, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperCtrl = &__pyx_vtable_7scamper_ScamperCtrl;
  __pyx_vtable_7scamper_ScamperCtrl._task = (PyObject *(*)(struct __pyx_obj_7scamper_ScamperCtrl *, scamper_task_t *, scamper_inst_t *, int))__pyx_f_7scamper_11ScamperCtrl__task;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperCtrl_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl)) __PYX_ERR(0, 8863, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperCtrl_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl) < 0) __PYX_ERR(0, 8863, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl = &__pyx_type_7scamper_ScamperCtrl;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl) < 0) __PYX_ERR(0, 8863, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl, __pyx_vtabptr_7scamper_ScamperCtrl) < 0) __PYX_ERR(0, 8863, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl) < 0) __PYX_ERR(0, 8863, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperCtrl, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl) < 0) __PYX_ERR(0, 8863, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperCtrl) < 0) __PYX_ERR(0, 8863, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperMux = &__pyx_vtable_7scamper_ScamperMux;
  __pyx_vtable_7scamper_ScamperMux.from_ptr = (struct __pyx_obj_7scamper_ScamperMux *(*)(scamper_mux_t *))__pyx_f_7scamper_10ScamperMux_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperMux = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperMux_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperMux)) __PYX_ERR(0, 10503, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperMux_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperMux) < 0) __PYX_ERR(0, 10503, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperMux = &__pyx_type_7scamper_ScamperMux;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperMux) < 0) __PYX_ERR(0, 10503, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperMux->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperMux->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperMux->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperMux, __pyx_vtabptr_7scamper_ScamperMux) < 0) __PYX_ERR(0, 10503, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperMux) < 0) __PYX_ERR(0, 10503, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperMux, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperMux) < 0) __PYX_ERR(0, 10503, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperMux) < 0) __PYX_ERR(0, 10503, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperVp = &__pyx_vtable_7scamper_ScamperVp;
  __pyx_vtable_7scamper_ScamperVp.from_ptr = (struct __pyx_obj_7scamper_ScamperVp *(*)(scamper_vp_t *))__pyx_f_7scamper_9ScamperVp_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperVp = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperVp_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperVp)) __PYX_ERR(0, 10531, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperVp_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperVp) < 0) __PYX_ERR(0, 10531, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperVp = &__pyx_type_7scamper_ScamperVp;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperVp) < 0) __PYX_ERR(0, 10531, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperVp->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperVp->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperVp->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperVp, __pyx_vtabptr_7scamper_ScamperVp) < 0) __PYX_ERR(0, 10531, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperVp) < 0) __PYX_ERR(0, 10531, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperVp, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperVp) < 0) __PYX_ERR(0, 10531, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperVp) < 0) __PYX_ERR(0, 10531, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperInst = &__pyx_vtable_7scamper_ScamperInst;
  __pyx_vtable_7scamper_ScamperInst.from_ptr = (struct __pyx_obj_7scamper_ScamperInst *(*)(scamper_inst_t *))__pyx_f_7scamper_11ScamperInst_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperInst = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperInst_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperInst)) __PYX_ERR(0, 10692, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperInst_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperInst) < 0) __PYX_ERR(0, 10692, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperInst = &__pyx_type_7scamper_ScamperInst;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperInst) < 0) __PYX_ERR(0, 10692, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperInst->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperInst->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperInst->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperInst, __pyx_vtabptr_7scamper_ScamperInst) < 0) __PYX_ERR(0, 10692, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperInst) < 0) __PYX_ERR(0, 10692, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperInst_2, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperInst) < 0) __PYX_ERR(0, 10692, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperInst) < 0) __PYX_ERR(0, 10692, __pyx_L1_error)
  __pyx_vtabptr_7scamper_ScamperTask = &__pyx_vtable_7scamper_ScamperTask;
  __pyx_vtable_7scamper_ScamperTask.from_ptr = (struct __pyx_obj_7scamper_ScamperTask *(*)(scamper_task_t *, scamper_inst_t *))__pyx_f_7scamper_11ScamperTask_from_ptr;
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTask = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper_ScamperTask_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTask)) __PYX_ERR(0, 10887, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper_ScamperTask_spec, __pyx_mstate->__pyx_ptype_7scamper_ScamperTask) < 0) __PYX_ERR(0, 10887, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper_ScamperTask = &__pyx_type_7scamper_ScamperTask;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper_ScamperTask) < 0) __PYX_ERR(0, 10887, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper_ScamperTask->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper_ScamperTask->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper_ScamperTask->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  if (__Pyx_SetVtable(__pyx_mstate->__pyx_ptype_7scamper_ScamperTask, __pyx_vtabptr_7scamper_ScamperTask) < 0) __PYX_ERR(0, 10887, __pyx_L1_error)
  if (__Pyx_MergeVtables(__pyx_mstate->__pyx_ptype_7scamper_ScamperTask) < 0) __PYX_ERR(0, 10887, __pyx_L1_error)
  if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_ScamperTask, (PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTask) < 0) __PYX_ERR(0, 10887, __pyx_L1_error)
  if (__Pyx_setup_reduce((PyObject *) __pyx_mstate->__pyx_ptype_7scamper_ScamperTask) < 0) __PYX_ERR(0, 10887, __pyx_L1_error)
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct__notes = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct__notes_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct__notes)) __PYX_ERR(0, 1659, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct__notes_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct__notes) < 0) __PYX_ERR(0, 1659, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct__notes = &__pyx_type_7scamper___pyx_scope_struct__notes;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct__notes) < 0) __PYX_ERR(0, 1659, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct__notes->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct__notes->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct__notes->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_1_exceptions_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions)) __PYX_ERR(0, 9101, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_1_exceptions_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions) < 0) __PYX_ERR(0, 9101, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions = &__pyx_type_7scamper___pyx_scope_struct_1_exceptions;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions) < 0) __PYX_ERR(0, 9101, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_1_exceptions->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_2_responses = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_2_responses_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_2_responses)) __PYX_ERR(0, 9110, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_2_responses_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_2_responses) < 0) __PYX_ERR(0, 9110, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_2_responses = &__pyx_type_7scamper___pyx_scope_struct_2_responses;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_2_responses) < 0) __PYX_ERR(0, 9110, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_2_responses->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_2_responses->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_2_responses->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_3_do_trace_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace)) __PYX_ERR(0, 9413, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_3_do_trace_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace) < 0) __PYX_ERR(0, 9413, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace = &__pyx_type_7scamper___pyx_scope_struct_3_do_trace;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace) < 0) __PYX_ERR(0, 9413, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_3_do_trace->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_4_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr)) __PYX_ERR(0, 9484, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_4_genexpr_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr) < 0) __PYX_ERR(0, 9484, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr = &__pyx_type_7scamper___pyx_scope_struct_4_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr) < 0) __PYX_ERR(0, 9484, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_4_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_5_do_tracelb_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb)) __PYX_ERR(0, 9541, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_5_do_tracelb_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb) < 0) __PYX_ERR(0, 9541, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb = &__pyx_type_7scamper___pyx_scope_struct_5_do_tracelb;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb) < 0) __PYX_ERR(0, 9541, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_5_do_tracelb->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_6_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr)) __PYX_ERR(0, 9597, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_6_genexpr_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr) < 0) __PYX_ERR(0, 9597, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr = &__pyx_type_7scamper___pyx_scope_struct_6_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr) < 0) __PYX_ERR(0, 9597, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_6_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_7_do_ping_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping)) __PYX_ERR(0, 9636, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_7_do_ping_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping) < 0) __PYX_ERR(0, 9636, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping = &__pyx_type_7scamper___pyx_scope_struct_7_do_ping;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping) < 0) __PYX_ERR(0, 9636, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_7_do_ping->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_8_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr)) __PYX_ERR(0, 9719, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_8_genexpr_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr) < 0) __PYX_ERR(0, 9719, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr = &__pyx_type_7scamper___pyx_scope_struct_8_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr) < 0) __PYX_ERR(0, 9719, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_8_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_9_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr)) __PYX_ERR(0, 9733, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_9_genexpr_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr) < 0) __PYX_ERR(0, 9733, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr = &__pyx_type_7scamper___pyx_scope_struct_9_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr) < 0) __PYX_ERR(0, 9733, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_9_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_10_do_ally_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally)) __PYX_ERR(0, 9854, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_10_do_ally_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally) < 0) __PYX_ERR(0, 9854, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally = &__pyx_type_7scamper___pyx_scope_struct_10_do_ally;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally) < 0) __PYX_ERR(0, 9854, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_10_do_ally->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_11_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr)) __PYX_ERR(0, 9917, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_11_genexpr_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr) < 0) __PYX_ERR(0, 9917, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr = &__pyx_type_7scamper___pyx_scope_struct_11_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr) < 0) __PYX_ERR(0, 9917, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_11_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_12_do_prefixscan_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan)) __PYX_ERR(0, 10201, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_12_do_prefixscan_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan) < 0) __PYX_ERR(0, 10201, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan = &__pyx_type_7scamper___pyx_scope_struct_12_do_prefixscan;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan) < 0) __PYX_ERR(0, 10201, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_12_do_prefixscan->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  #if CYTHON_USE_TYPE_SPECS
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr = (PyTypeObject *) __Pyx_PyType_FromModuleAndSpec(__pyx_m, &__pyx_type_7scamper___pyx_scope_struct_13_genexpr_spec, NULL); if (unlikely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr)) __PYX_ERR(0, 10266, __pyx_L1_error)
  if (__Pyx_fix_up_extension_type_from_spec(&__pyx_type_7scamper___pyx_scope_struct_13_genexpr_spec, __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr) < 0) __PYX_ERR(0, 10266, __pyx_L1_error)
  #else
  __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr = &__pyx_type_7scamper___pyx_scope_struct_13_genexpr;
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  #endif
  #if !CYTHON_USE_TYPE_SPECS
  if (__Pyx_PyType_Ready(__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr) < 0) __PYX_ERR(0, 10266, __pyx_L1_error)
  #endif
  #if !CYTHON_COMPILING_IN_LIMITED_API
  if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr->tp_dictoffset && __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr->tp_getattro == PyObject_GenericGetAttr)) {
    __pyx_mstate->__pyx_ptype_7scamper___pyx_scope_struct_13_genexpr->tp_getattro = PyObject_GenericGetAttr;
  }
  #endif
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_type_import_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__Pyx_modinit_type_import_code", 0);
  /*--- Type import code ---*/
  __pyx_t_1 = PyImport_ImportModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 9, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_mstate->__pyx_ptype_7cpython_4type_type = __Pyx_ImportType_3_1_2(__pyx_t_1, __Pyx_BUILTIN_MODULE_NAME, "type",
  #if defined(PYPY_VERSION_NUM) && PYPY_VERSION_NUM < 0x050B0000
  sizeof(PyTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyTypeObject),
  #elif CYTHON_COMPILING_IN_LIMITED_API
  0, 0,
  #else
  sizeof(PyHeapTypeObject), __PYX_GET_STRUCT_ALIGNMENT_3_1_2(PyHeapTypeObject),
  #endif
  __Pyx_ImportType_CheckSize_Warn_3_1_2); if (!__pyx_mstate->__pyx_ptype_7cpython_4type_type) __PYX_ERR(2, 9, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_modinit_variable_import_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_variable_import_code", 0);
  /*--- Variable import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

static int __Pyx_modinit_function_import_code(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_modinit_function_import_code", 0);
  /*--- Function import code ---*/
  __Pyx_RefNannyFinishContext();
  return 0;
}

#if CYTHON_PEP489_MULTI_PHASE_INIT
static PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def); /*proto*/
static int __pyx_pymod_exec_scamper(PyObject* module); /*proto*/
static PyModuleDef_Slot __pyx_moduledef_slots[] = {
  {Py_mod_create, (void*)__pyx_pymod_create},
  {Py_mod_exec, (void*)__pyx_pymod_exec_scamper},
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
  {Py_mod_gil, Py_MOD_GIL_USED},
  #endif
  #if PY_VERSION_HEX >= 0x030C0000 && CYTHON_USE_MODULE_STATE
  {Py_mod_multiple_interpreters, Py_MOD_MULTIPLE_INTERPRETERS_NOT_SUPPORTED},
  #endif
  {0, NULL}
};
#endif

#ifdef __cplusplus
namespace {
  struct PyModuleDef __pyx_moduledef =
  #else
  static struct PyModuleDef __pyx_moduledef =
  #endif
  {
      PyModuleDef_HEAD_INIT,
      "scamper",
      __pyx_k_The_scamper_module_contains_a_c, /* m_doc */
    #if CYTHON_USE_MODULE_STATE
      sizeof(__pyx_mstatetype), /* m_size */
    #else
      (CYTHON_PEP489_MULTI_PHASE_INIT) ? 0 : -1, /* m_size */
    #endif
      __pyx_methods /* m_methods */,
    #if CYTHON_PEP489_MULTI_PHASE_INIT
      __pyx_moduledef_slots, /* m_slots */
    #else
      NULL, /* m_reload */
    #endif
    #if CYTHON_USE_MODULE_STATE
      __pyx_m_traverse, /* m_traverse */
      __pyx_m_clear, /* m_clear */
      NULL /* m_free */
    #else
      NULL, /* m_traverse */
      NULL, /* m_clear */
      NULL /* m_free */
    #endif
  };
  #ifdef __cplusplus
} /* anonymous namespace */
#endif

/* PyModInitFuncType */
#ifndef CYTHON_NO_PYINIT_EXPORT
  #define __Pyx_PyMODINIT_FUNC PyMODINIT_FUNC
#else
  #ifdef __cplusplus
  #define __Pyx_PyMODINIT_FUNC extern "C" PyObject *
  #else
  #define __Pyx_PyMODINIT_FUNC PyObject *
  #endif
#endif

__Pyx_PyMODINIT_FUNC PyInit_scamper(void) CYTHON_SMALL_CODE; /*proto*/
__Pyx_PyMODINIT_FUNC PyInit_scamper(void)
#if CYTHON_PEP489_MULTI_PHASE_INIT
{
  return PyModuleDef_Init(&__pyx_moduledef);
}
/* ModuleCreationPEP489 */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
static PY_INT64_T __Pyx_GetCurrentInterpreterId(void) {
    {
        PyObject *module = PyImport_ImportModule("_interpreters"); // 3.13+ I think
        if (!module) {
            PyErr_Clear(); // just try the 3.8-3.12 version
            module = PyImport_ImportModule("_xxsubinterpreters");
            if (!module) goto bad;
        }
        PyObject *current = PyObject_CallMethod(module, "get_current", NULL);
        Py_DECREF(module);
        if (!current) goto bad;
        if (PyTuple_Check(current)) {
            PyObject *new_current = PySequence_GetItem(current, 0);
            Py_DECREF(current);
            current = new_current;
            if (!new_current) goto bad;
        }
        long long as_c_int = PyLong_AsLongLong(current);
        Py_DECREF(current);
        return as_c_int;
    }
  bad:
    PySys_WriteStderr("__Pyx_GetCurrentInterpreterId failed. Try setting the C define CYTHON_PEP489_MULTI_PHASE_INIT=0\n");
    return -1;
}
#endif
#if !CYTHON_USE_MODULE_STATE
static CYTHON_SMALL_CODE int __Pyx_check_single_interpreter(void) {
    static PY_INT64_T main_interpreter_id = -1;
#if CYTHON_COMPILING_IN_GRAAL
    PY_INT64_T current_id = PyInterpreterState_GetIDFromThreadState(PyThreadState_Get());
#elif CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX >= 0x03090000
    PY_INT64_T current_id = PyInterpreterState_GetID(PyInterpreterState_Get());
#elif CYTHON_COMPILING_IN_LIMITED_API
    PY_INT64_T current_id = __Pyx_GetCurrentInterpreterId();
#else
    PY_INT64_T current_id = PyInterpreterState_GetID(PyThreadState_Get()->interp);
#endif
    if (unlikely(current_id == -1)) {
        return -1;
    }
    if (main_interpreter_id == -1) {
        main_interpreter_id = current_id;
        return 0;
    } else if (unlikely(main_interpreter_id != current_id)) {
        PyErr_SetString(
            PyExc_ImportError,
            "Interpreter change detected - this module can only be loaded into one interpreter per process.");
        return -1;
    }
    return 0;
}
#endif
static CYTHON_SMALL_CODE int __Pyx_copy_spec_to_module(PyObject *spec, PyObject *moddict, const char* from_name, const char* to_name, int allow_none)
{
    PyObject *value = PyObject_GetAttrString(spec, from_name);
    int result = 0;
    if (likely(value)) {
        if (allow_none || value != Py_None) {
            result = PyDict_SetItemString(moddict, to_name, value);
        }
        Py_DECREF(value);
    } else if (PyErr_ExceptionMatches(PyExc_AttributeError)) {
        PyErr_Clear();
    } else {
        result = -1;
    }
    return result;
}
static CYTHON_SMALL_CODE PyObject* __pyx_pymod_create(PyObject *spec, PyModuleDef *def) {
    PyObject *module = NULL, *moddict, *modname;
    CYTHON_UNUSED_VAR(def);
    #if !CYTHON_USE_MODULE_STATE
    if (__Pyx_check_single_interpreter())
        return NULL;
    #endif
    if (__pyx_m)
        return __Pyx_NewRef(__pyx_m);
    modname = PyObject_GetAttrString(spec, "name");
    if (unlikely(!modname)) goto bad;
    module = PyModule_NewObject(modname);
    Py_DECREF(modname);
    if (unlikely(!module)) goto bad;
    moddict = PyModule_GetDict(module);
    if (unlikely(!moddict)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "loader", "__loader__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "origin", "__file__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "parent", "__package__", 1) < 0)) goto bad;
    if (unlikely(__Pyx_copy_spec_to_module(spec, moddict, "submodule_search_locations", "__path__", 0) < 0)) goto bad;
    return module;
bad:
    Py_XDECREF(module);
    return NULL;
}


static CYTHON_SMALL_CODE int __pyx_pymod_exec_scamper(PyObject *__pyx_pyinit_module)
#endif
{
  int stringtab_initialized = 0;
  #if CYTHON_USE_MODULE_STATE
  int pystate_addmodule_run = 0;
  #endif
  __pyx_mstatetype *__pyx_mstate = NULL;
  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;
  PyObject *__pyx_t_6 = NULL;
  size_t __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  if (__pyx_m) {
    if (__pyx_m == __pyx_pyinit_module) return 0;
    PyErr_SetString(PyExc_RuntimeError, "Module 'scamper' has already been imported. Re-initialisation is not supported.");
    return -1;
  }
  #else
  if (__pyx_m) return __Pyx_NewRef(__pyx_m);
  #endif
  /*--- Module creation code ---*/
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  __pyx_t_1 = __pyx_pyinit_module;
  Py_INCREF(__pyx_t_1);
  #else
  __pyx_t_1 = PyModule_Create(&__pyx_moduledef); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #if CYTHON_USE_MODULE_STATE
  {
    int add_module_result = __Pyx_State_AddModule(__pyx_t_1, &__pyx_moduledef);
    __pyx_t_1 = 0; /* transfer ownership from __pyx_t_1 to "scamper" pseudovariable */
    if (unlikely((add_module_result < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
    pystate_addmodule_run = 1;
  }
  #else
  __pyx_m = __pyx_t_1;
  #endif
  #if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
  PyUnstable_Module_SetGIL(__pyx_m, Py_MOD_GIL_USED);
  #endif
  __pyx_mstate = __pyx_mstate_global;
  CYTHON_UNUSED_VAR(__pyx_t_1);
  __pyx_mstate->__pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_mstate->__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error)
  Py_INCREF(__pyx_mstate->__pyx_d);
  __pyx_mstate->__pyx_b = __Pyx_PyImport_AddModuleRef(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_mstate->__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_cython_runtime = __Pyx_PyImport_AddModuleRef("cython_runtime"); if (unlikely(!__pyx_mstate->__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error)
  if (PyObject_SetAttrString(__pyx_m, "__builtins__", __pyx_mstate->__pyx_b) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /* ImportRefnannyAPI */
  #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("PyInit_scamper", 0);
  if (__Pyx_check_binary_version(__PYX_LIMITED_VERSION_HEX, __Pyx_get_runtime_version(), CYTHON_COMPILING_IN_LIMITED_API) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #ifdef __Pxy_PyFrame_Initialize_Offsets
  __Pxy_PyFrame_Initialize_Offsets();
  #endif
  __pyx_mstate->__pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_mstate->__pyx_empty_tuple)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_bytes)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_empty_unicode = PyUnicode_FromStringAndSize("", 0); if (unlikely(!__pyx_mstate->__pyx_empty_unicode)) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Initialize various global constants etc. ---*/
  if (__Pyx_InitConstants(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  stringtab_initialized = 1;
  if (__Pyx_InitGlobals() < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #if 0 || defined(__Pyx_CyFunction_USED) || defined(__Pyx_FusedFunction_USED) || defined(__Pyx_Coroutine_USED) || defined(__Pyx_Generator_USED) || defined(__Pyx_AsyncGen_USED)
  if (__pyx_CommonTypesMetaclass_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_CyFunction_USED
  if (__pyx_CyFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_FusedFunction_USED
  if (__pyx_FusedFunction_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Coroutine_USED
  if (__pyx_Coroutine_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_Generator_USED
  if (__pyx_Generator_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  #ifdef __Pyx_AsyncGen_USED
  if (__pyx_AsyncGen_init(__pyx_m) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  #endif
  /*--- Library function declarations ---*/
  if (__pyx_module_is_main_scamper) {
    if (PyObject_SetAttr(__pyx_m, __pyx_mstate_global->__pyx_n_u_name_2, __pyx_mstate_global->__pyx_n_u_main) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  }
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) __PYX_ERR(0, 1, __pyx_L1_error)
    if (!PyDict_GetItemString(modules, "scamper")) {
      if (unlikely((PyDict_SetItemString(modules, "scamper", __pyx_m) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
    }
  }
  /*--- Builtin init code ---*/
  if (__Pyx_InitCachedBuiltins(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Constants init code ---*/
  if (__Pyx_InitCachedConstants(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  if (__Pyx_CreateCodeObjects(__pyx_mstate) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  /*--- Global type/function init code ---*/
  (void)__Pyx_modinit_global_init_code(__pyx_mstate);
  (void)__Pyx_modinit_variable_export_code(__pyx_mstate);
  (void)__Pyx_modinit_function_export_code(__pyx_mstate);
  if (unlikely((__Pyx_modinit_type_init_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
  if (unlikely((__Pyx_modinit_type_import_code(__pyx_mstate) < 0))) __PYX_ERR(0, 1, __pyx_L1_error)
  (void)__Pyx_modinit_variable_import_code(__pyx_mstate);
  (void)__Pyx_modinit_function_import_code(__pyx_mstate);
  /*--- Execution code ---*/

  /* "scamper.pyx":276
 * from cpython.object cimport Py_LT, Py_EQ, Py_GT, Py_LE, Py_NE, Py_GE
 * from posix.time cimport timeval
 * import time, datetime             # <<<<<<<<<<<<<<
 * import os, stat
 * import binascii
*/
  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_time, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_time, __pyx_t_2) < 0) __PYX_ERR(0, 276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_datetime, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_datetime, __pyx_t_2) < 0) __PYX_ERR(0, 276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":277
 * from posix.time cimport timeval
 * import time, datetime
 * import os, stat             # <<<<<<<<<<<<<<
 * import binascii
 * import enum
*/
  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_os, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_os, __pyx_t_2) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_stat, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 277, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_stat, __pyx_t_2) < 0) __PYX_ERR(0, 277, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":278
 * import time, datetime
 * import os, stat
 * import binascii             # <<<<<<<<<<<<<<
 * import enum
 * import re
*/
  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_binascii, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_binascii, __pyx_t_2) < 0) __PYX_ERR(0, 278, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":279
 * import os, stat
 * import binascii
 * import enum             # <<<<<<<<<<<<<<
 * import re
 * 
*/
  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_enum, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 279, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_enum, __pyx_t_2) < 0) __PYX_ERR(0, 279, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":280
 * import binascii
 * import enum
 * import re             # <<<<<<<<<<<<<<
 * 
 * cimport cscamper_addr
*/
  __pyx_t_2 = __Pyx_ImportDottedModule(__pyx_mstate_global->__pyx_n_u_re, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_re, __pyx_t_2) < 0) __PYX_ERR(0, 280, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":300
 * 
 * # from scamper_file.h
 * SCAMPER_FILE_OBJ_LIST          = 1             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_CYCLE_START   = 2
 * SCAMPER_FILE_OBJ_CYCLE_DEF     = 3
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_LIST, __pyx_mstate_global->__pyx_int_1) < 0) __PYX_ERR(0, 300, __pyx_L1_error)

  /* "scamper.pyx":301
 * # from scamper_file.h
 * SCAMPER_FILE_OBJ_LIST          = 1
 * SCAMPER_FILE_OBJ_CYCLE_START   = 2             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_CYCLE_DEF     = 3
 * SCAMPER_FILE_OBJ_CYCLE_STOP    = 4
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_START, __pyx_mstate_global->__pyx_int_2) < 0) __PYX_ERR(0, 301, __pyx_L1_error)

  /* "scamper.pyx":302
 * SCAMPER_FILE_OBJ_LIST          = 1
 * SCAMPER_FILE_OBJ_CYCLE_START   = 2
 * SCAMPER_FILE_OBJ_CYCLE_DEF     = 3             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_CYCLE_STOP    = 4
 * SCAMPER_FILE_OBJ_ADDR          = 5
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF, __pyx_mstate_global->__pyx_int_3) < 0) __PYX_ERR(0, 302, __pyx_L1_error)

  /* "scamper.pyx":303
 * SCAMPER_FILE_OBJ_CYCLE_START   = 2
 * SCAMPER_FILE_OBJ_CYCLE_DEF     = 3
 * SCAMPER_FILE_OBJ_CYCLE_STOP    = 4             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_ADDR          = 5
 * SCAMPER_FILE_OBJ_TRACE         = 6
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_STOP, __pyx_mstate_global->__pyx_int_4) < 0) __PYX_ERR(0, 303, __pyx_L1_error)

  /* "scamper.pyx":304
 * SCAMPER_FILE_OBJ_CYCLE_DEF     = 3
 * SCAMPER_FILE_OBJ_CYCLE_STOP    = 4
 * SCAMPER_FILE_OBJ_ADDR          = 5             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_TRACE         = 6
 * SCAMPER_FILE_OBJ_PING          = 7
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_ADDR, __pyx_mstate_global->__pyx_int_5) < 0) __PYX_ERR(0, 304, __pyx_L1_error)

  /* "scamper.pyx":305
 * SCAMPER_FILE_OBJ_CYCLE_STOP    = 4
 * SCAMPER_FILE_OBJ_ADDR          = 5
 * SCAMPER_FILE_OBJ_TRACE         = 6             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_PING          = 7
 * SCAMPER_FILE_OBJ_TRACELB       = 8
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TRACE, __pyx_mstate_global->__pyx_int_6) < 0) __PYX_ERR(0, 305, __pyx_L1_error)

  /* "scamper.pyx":306
 * SCAMPER_FILE_OBJ_ADDR          = 5
 * SCAMPER_FILE_OBJ_TRACE         = 6
 * SCAMPER_FILE_OBJ_PING          = 7             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_TRACELB       = 8
 * SCAMPER_FILE_OBJ_DEALIAS       = 9
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_PING, __pyx_mstate_global->__pyx_int_7) < 0) __PYX_ERR(0, 306, __pyx_L1_error)

  /* "scamper.pyx":307
 * SCAMPER_FILE_OBJ_TRACE         = 6
 * SCAMPER_FILE_OBJ_PING          = 7
 * SCAMPER_FILE_OBJ_TRACELB       = 8             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_DEALIAS       = 9
 * SCAMPER_FILE_OBJ_NEIGHBOURDISC = 10
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TRACELB, __pyx_mstate_global->__pyx_int_8) < 0) __PYX_ERR(0, 307, __pyx_L1_error)

  /* "scamper.pyx":308
 * SCAMPER_FILE_OBJ_PING          = 7
 * SCAMPER_FILE_OBJ_TRACELB       = 8
 * SCAMPER_FILE_OBJ_DEALIAS       = 9             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_NEIGHBOURDISC = 10
 * SCAMPER_FILE_OBJ_TBIT          = 11
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_DEALIAS, __pyx_mstate_global->__pyx_int_9) < 0) __PYX_ERR(0, 308, __pyx_L1_error)

  /* "scamper.pyx":309
 * SCAMPER_FILE_OBJ_TRACELB       = 8
 * SCAMPER_FILE_OBJ_DEALIAS       = 9
 * SCAMPER_FILE_OBJ_NEIGHBOURDISC = 10             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_TBIT          = 11
 * SCAMPER_FILE_OBJ_STING         = 12
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_NEIGHBOURDISC, __pyx_mstate_global->__pyx_int_10) < 0) __PYX_ERR(0, 309, __pyx_L1_error)

  /* "scamper.pyx":310
 * SCAMPER_FILE_OBJ_DEALIAS       = 9
 * SCAMPER_FILE_OBJ_NEIGHBOURDISC = 10
 * SCAMPER_FILE_OBJ_TBIT          = 11             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_STING         = 12
 * SCAMPER_FILE_OBJ_SNIFF         = 13
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_TBIT, __pyx_mstate_global->__pyx_int_11) < 0) __PYX_ERR(0, 310, __pyx_L1_error)

  /* "scamper.pyx":311
 * SCAMPER_FILE_OBJ_NEIGHBOURDISC = 10
 * SCAMPER_FILE_OBJ_TBIT          = 11
 * SCAMPER_FILE_OBJ_STING         = 12             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_SNIFF         = 13
 * SCAMPER_FILE_OBJ_HOST          = 14
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_STING, __pyx_mstate_global->__pyx_int_12) < 0) __PYX_ERR(0, 311, __pyx_L1_error)

  /* "scamper.pyx":312
 * SCAMPER_FILE_OBJ_TBIT          = 11
 * SCAMPER_FILE_OBJ_STING         = 12
 * SCAMPER_FILE_OBJ_SNIFF         = 13             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_HOST          = 14
 * SCAMPER_FILE_OBJ_HTTP          = 15
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_SNIFF, __pyx_mstate_global->__pyx_int_13) < 0) __PYX_ERR(0, 312, __pyx_L1_error)

  /* "scamper.pyx":313
 * SCAMPER_FILE_OBJ_STING         = 12
 * SCAMPER_FILE_OBJ_SNIFF         = 13
 * SCAMPER_FILE_OBJ_HOST          = 14             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_HTTP          = 15
 * SCAMPER_FILE_OBJ_UDPPROBE      = 16
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_HOST, __pyx_mstate_global->__pyx_int_14) < 0) __PYX_ERR(0, 313, __pyx_L1_error)

  /* "scamper.pyx":314
 * SCAMPER_FILE_OBJ_SNIFF         = 13
 * SCAMPER_FILE_OBJ_HOST          = 14
 * SCAMPER_FILE_OBJ_HTTP          = 15             # <<<<<<<<<<<<<<
 * SCAMPER_FILE_OBJ_UDPPROBE      = 16
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_HTTP, __pyx_mstate_global->__pyx_int_15) < 0) __PYX_ERR(0, 314, __pyx_L1_error)

  /* "scamper.pyx":315
 * SCAMPER_FILE_OBJ_HOST          = 14
 * SCAMPER_FILE_OBJ_HTTP          = 15
 * SCAMPER_FILE_OBJ_UDPPROBE      = 16             # <<<<<<<<<<<<<<
 * 
 * # from libscamperctrl.h
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_FILE_OBJ_UDPPROBE, __pyx_mstate_global->__pyx_int_16) < 0) __PYX_ERR(0, 315, __pyx_L1_error)

  /* "scamper.pyx":318
 * 
 * # from libscamperctrl.h
 * SCAMPER_CTRL_TYPE_DATA  = 1             # <<<<<<<<<<<<<<
 * SCAMPER_CTRL_TYPE_MORE  = 2
 * SCAMPER_CTRL_TYPE_ERR   = 3
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_CTRL_TYPE_DATA, __pyx_mstate_global->__pyx_int_1) < 0) __PYX_ERR(0, 318, __pyx_L1_error)

  /* "scamper.pyx":319
 * # from libscamperctrl.h
 * SCAMPER_CTRL_TYPE_DATA  = 1
 * SCAMPER_CTRL_TYPE_MORE  = 2             # <<<<<<<<<<<<<<
 * SCAMPER_CTRL_TYPE_ERR   = 3
 * SCAMPER_CTRL_TYPE_EOF   = 4
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_CTRL_TYPE_MORE, __pyx_mstate_global->__pyx_int_2) < 0) __PYX_ERR(0, 319, __pyx_L1_error)

  /* "scamper.pyx":320
 * SCAMPER_CTRL_TYPE_DATA  = 1
 * SCAMPER_CTRL_TYPE_MORE  = 2
 * SCAMPER_CTRL_TYPE_ERR   = 3             # <<<<<<<<<<<<<<
 * SCAMPER_CTRL_TYPE_EOF   = 4
 * SCAMPER_CTRL_TYPE_FATAL = 5
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_CTRL_TYPE_ERR, __pyx_mstate_global->__pyx_int_3) < 0) __PYX_ERR(0, 320, __pyx_L1_error)

  /* "scamper.pyx":321
 * SCAMPER_CTRL_TYPE_MORE  = 2
 * SCAMPER_CTRL_TYPE_ERR   = 3
 * SCAMPER_CTRL_TYPE_EOF   = 4             # <<<<<<<<<<<<<<
 * SCAMPER_CTRL_TYPE_FATAL = 5
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_CTRL_TYPE_EOF, __pyx_mstate_global->__pyx_int_4) < 0) __PYX_ERR(0, 321, __pyx_L1_error)

  /* "scamper.pyx":322
 * SCAMPER_CTRL_TYPE_ERR   = 3
 * SCAMPER_CTRL_TYPE_EOF   = 4
 * SCAMPER_CTRL_TYPE_FATAL = 5             # <<<<<<<<<<<<<<
 * 
 * # from scamper_trace.h
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_CTRL_TYPE_FATAL, __pyx_mstate_global->__pyx_int_5) < 0) __PYX_ERR(0, 322, __pyx_L1_error)

  /* "scamper.pyx":325
 * 
 * # from scamper_trace.h
 * SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS = 4             # <<<<<<<<<<<<<<
 * SCAMPER_TRACE_FLAG_RXERR           = 0x80
 * SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL   = 0x10
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_TRACE_TYPE_ICMP_ECHO_PAR, __pyx_mstate_global->__pyx_int_4) < 0) __PYX_ERR(0, 325, __pyx_L1_error)

  /* "scamper.pyx":326
 * # from scamper_trace.h
 * SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS = 4
 * SCAMPER_TRACE_FLAG_RXERR           = 0x80             # <<<<<<<<<<<<<<
 * SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL   = 0x10
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_TRACE_FLAG_RXERR, __pyx_mstate_global->__pyx_int_128) < 0) __PYX_ERR(0, 326, __pyx_L1_error)

  /* "scamper.pyx":327
 * SCAMPER_TRACE_TYPE_ICMP_ECHO_PARIS = 4
 * SCAMPER_TRACE_FLAG_RXERR           = 0x80
 * SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL   = 0x10             # <<<<<<<<<<<<<<
 * 
 * class ScamperTraceStop(enum.IntEnum):
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_TRACE_REPLY_FLAG_REPLY_T, __pyx_mstate_global->__pyx_int_16) < 0) __PYX_ERR(0, 327, __pyx_L1_error)

  /* "scamper.pyx":329
 * SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL   = 0x10
 * 
 * class ScamperTraceStop(enum.IntEnum):             # <<<<<<<<<<<<<<
 *     NoReason = 0x00
 *     Completed = 0x01
*/
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_enum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_IntEnum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyTuple_Pack(1, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PEP560_update_bases(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_Py3MetaclassPrepare(__pyx_t_4, __pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__pyx_t_3 != __pyx_t_2) {
    if (unlikely((PyDict_SetItemString(__pyx_t_5, "__orig_bases__", __pyx_t_2) < 0))) __PYX_ERR(0, 329, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":330
 * 
 * class ScamperTraceStop(enum.IntEnum):
 *     NoReason = 0x00             # <<<<<<<<<<<<<<
 *     Completed = 0x01
 *     Unreach = 0x02
*/
  if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_NoReason, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 330, __pyx_L1_error)

  /* "scamper.pyx":331
 * class ScamperTraceStop(enum.IntEnum):
 *     NoReason = 0x00
 *     Completed = 0x01             # <<<<<<<<<<<<<<
 *     Unreach = 0x02
 *     Icmp = 0x03
*/
  if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Completed, __pyx_mstate_global->__pyx_int_1) < 0) __PYX_ERR(0, 331, __pyx_L1_error)

  /* "scamper.pyx":332
 *     NoReason = 0x00
 *     Completed = 0x01
 *     Unreach = 0x02             # <<<<<<<<<<<<<<
 *     Icmp = 0x03
 *     Loop = 0x04
*/
  if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Unreach, __pyx_mstate_global->__pyx_int_2) < 0) __PYX_ERR(0, 332, __pyx_L1_error)

  /* "scamper.pyx":333
 *     Completed = 0x01
 *     Unreach = 0x02
 *     Icmp = 0x03             # <<<<<<<<<<<<<<
 *     Loop = 0x04
 *     GapLimit = 0x05
*/
  if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Icmp, __pyx_mstate_global->__pyx_int_3) < 0) __PYX_ERR(0, 333, __pyx_L1_error)

  /* "scamper.pyx":334
 *     Unreach = 0x02
 *     Icmp = 0x03
 *     Loop = 0x04             # <<<<<<<<<<<<<<
 *     GapLimit = 0x05
 *     Error = 0x06
*/
  if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Loop, __pyx_mstate_global->__pyx_int_4) < 0) __PYX_ERR(0, 334, __pyx_L1_error)

  /* "scamper.pyx":335
 *     Icmp = 0x03
 *     Loop = 0x04
 *     GapLimit = 0x05             # <<<<<<<<<<<<<<
 *     Error = 0x06
 *     HopLimit = 0x07
*/
  if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_GapLimit, __pyx_mstate_global->__pyx_int_5) < 0) __PYX_ERR(0, 335, __pyx_L1_error)

  /* "scamper.pyx":336
 *     Loop = 0x04
 *     GapLimit = 0x05
 *     Error = 0x06             # <<<<<<<<<<<<<<
 *     HopLimit = 0x07
 *     GSS = 0x08
*/
  if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Error, __pyx_mstate_global->__pyx_int_6) < 0) __PYX_ERR(0, 336, __pyx_L1_error)

  /* "scamper.pyx":337
 *     GapLimit = 0x05
 *     Error = 0x06
 *     HopLimit = 0x07             # <<<<<<<<<<<<<<
 *     GSS = 0x08
 *     Halted = 0x09
*/
  if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_HopLimit, __pyx_mstate_global->__pyx_int_7) < 0) __PYX_ERR(0, 337, __pyx_L1_error)

  /* "scamper.pyx":338
 *     Error = 0x06
 *     HopLimit = 0x07
 *     GSS = 0x08             # <<<<<<<<<<<<<<
 *     Halted = 0x09
 * 
*/
  if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_GSS, __pyx_mstate_global->__pyx_int_8) < 0) __PYX_ERR(0, 338, __pyx_L1_error)

  /* "scamper.pyx":339
 *     HopLimit = 0x07
 *     GSS = 0x08
 *     Halted = 0x09             # <<<<<<<<<<<<<<
 * 
 * # from scamper_ping.h
*/
  if (__Pyx_SetNameInClass(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_Halted, __pyx_mstate_global->__pyx_int_9) < 0) __PYX_ERR(0, 339, __pyx_L1_error)

  /* "scamper.pyx":329
 * SCAMPER_TRACE_REPLY_FLAG_REPLY_TTL   = 0x10
 * 
 * class ScamperTraceStop(enum.IntEnum):             # <<<<<<<<<<<<<<
 *     NoReason = 0x00
 *     Completed = 0x01
*/
  __pyx_t_2 = __Pyx_Py3ClassCreate(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop, __pyx_t_3, __pyx_t_5, NULL, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperTraceStop, __pyx_t_2) < 0) __PYX_ERR(0, 329, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":342
 * 
 * # from scamper_ping.h
 * SCAMPER_PING_REPLY_FLAG_REPLY_TTL  = 0x01             # <<<<<<<<<<<<<<
 * SCAMPER_PING_REPLY_FLAG_REPLY_IPID = 0x02
 * SCAMPER_PING_REPLY_FLAG_PROBE_IPID = 0x04
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_PING_REPLY_FLAG_REPLY_TT, __pyx_mstate_global->__pyx_int_1) < 0) __PYX_ERR(0, 342, __pyx_L1_error)

  /* "scamper.pyx":343
 * # from scamper_ping.h
 * SCAMPER_PING_REPLY_FLAG_REPLY_TTL  = 0x01
 * SCAMPER_PING_REPLY_FLAG_REPLY_IPID = 0x02             # <<<<<<<<<<<<<<
 * SCAMPER_PING_REPLY_FLAG_PROBE_IPID = 0x04
 * 
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_PING_REPLY_FLAG_REPLY_IP, __pyx_mstate_global->__pyx_int_2) < 0) __PYX_ERR(0, 343, __pyx_L1_error)

  /* "scamper.pyx":344
 * SCAMPER_PING_REPLY_FLAG_REPLY_TTL  = 0x01
 * SCAMPER_PING_REPLY_FLAG_REPLY_IPID = 0x02
 * SCAMPER_PING_REPLY_FLAG_PROBE_IPID = 0x04             # <<<<<<<<<<<<<<
 * 
 * # from scamper_host.h
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_PING_REPLY_FLAG_PROBE_IP, __pyx_mstate_global->__pyx_int_4) < 0) __PYX_ERR(0, 344, __pyx_L1_error)

  /* "scamper.pyx":347
 * 
 * # from scamper_host.h
 * SCAMPER_HOST_CLASS_IN    = 1             # <<<<<<<<<<<<<<
 * 
 * class ScamperHostType(enum.IntEnum):
*/
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_SCAMPER_HOST_CLASS_IN, __pyx_mstate_global->__pyx_int_1) < 0) __PYX_ERR(0, 347, __pyx_L1_error)

  /* "scamper.pyx":349
 * SCAMPER_HOST_CLASS_IN    = 1
 * 
 * class ScamperHostType(enum.IntEnum):             # <<<<<<<<<<<<<<
 *     A = 1
 *     NS = 2
*/
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_enum); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_IntEnum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = PyTuple_Pack(1, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PEP560_update_bases(__pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_4, __pyx_mstate_global->__pyx_n_u_ScamperHostType, __pyx_mstate_global->__pyx_n_u_ScamperHostType, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__pyx_t_4 != __pyx_t_3) {
    if (unlikely((PyDict_SetItemString(__pyx_t_2, "__orig_bases__", __pyx_t_3) < 0))) __PYX_ERR(0, 349, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":350
 * 
 * class ScamperHostType(enum.IntEnum):
 *     A = 1             # <<<<<<<<<<<<<<
 *     NS = 2
 *     CNAME = 5
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_A_2, __pyx_mstate_global->__pyx_int_1) < 0) __PYX_ERR(0, 350, __pyx_L1_error)

  /* "scamper.pyx":351
 * class ScamperHostType(enum.IntEnum):
 *     A = 1
 *     NS = 2             # <<<<<<<<<<<<<<
 *     CNAME = 5
 *     SOA = 6
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NS, __pyx_mstate_global->__pyx_int_2) < 0) __PYX_ERR(0, 351, __pyx_L1_error)

  /* "scamper.pyx":352
 *     A = 1
 *     NS = 2
 *     CNAME = 5             # <<<<<<<<<<<<<<
 *     SOA = 6
 *     PTR = 12
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_CNAME, __pyx_mstate_global->__pyx_int_5) < 0) __PYX_ERR(0, 352, __pyx_L1_error)

  /* "scamper.pyx":353
 *     NS = 2
 *     CNAME = 5
 *     SOA = 6             # <<<<<<<<<<<<<<
 *     PTR = 12
 *     MX = 15
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SOA, __pyx_mstate_global->__pyx_int_6) < 0) __PYX_ERR(0, 353, __pyx_L1_error)

  /* "scamper.pyx":354
 *     CNAME = 5
 *     SOA = 6
 *     PTR = 12             # <<<<<<<<<<<<<<
 *     MX = 15
 *     TXT = 16
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_PTR, __pyx_mstate_global->__pyx_int_12) < 0) __PYX_ERR(0, 354, __pyx_L1_error)

  /* "scamper.pyx":355
 *     SOA = 6
 *     PTR = 12
 *     MX = 15             # <<<<<<<<<<<<<<
 *     TXT = 16
 *     AAAA = 28
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_MX, __pyx_mstate_global->__pyx_int_15) < 0) __PYX_ERR(0, 355, __pyx_L1_error)

  /* "scamper.pyx":356
 *     PTR = 12
 *     MX = 15
 *     TXT = 16             # <<<<<<<<<<<<<<
 *     AAAA = 28
 *     DS = 43
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_TXT, __pyx_mstate_global->__pyx_int_16) < 0) __PYX_ERR(0, 356, __pyx_L1_error)

  /* "scamper.pyx":357
 *     MX = 15
 *     TXT = 16
 *     AAAA = 28             # <<<<<<<<<<<<<<
 *     DS = 43
 *     SSHFP = 44
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_AAAA, __pyx_mstate_global->__pyx_int_28) < 0) __PYX_ERR(0, 357, __pyx_L1_error)

  /* "scamper.pyx":358
 *     TXT = 16
 *     AAAA = 28
 *     DS = 43             # <<<<<<<<<<<<<<
 *     SSHFP = 44
 *     RRSIG = 46
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_DS, __pyx_mstate_global->__pyx_int_43) < 0) __PYX_ERR(0, 358, __pyx_L1_error)

  /* "scamper.pyx":359
 *     AAAA = 28
 *     DS = 43
 *     SSHFP = 44             # <<<<<<<<<<<<<<
 *     RRSIG = 46
 *     NSEC = 47
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_SSHFP, __pyx_mstate_global->__pyx_int_44) < 0) __PYX_ERR(0, 359, __pyx_L1_error)

  /* "scamper.pyx":360
 *     DS = 43
 *     SSHFP = 44
 *     RRSIG = 46             # <<<<<<<<<<<<<<
 *     NSEC = 47
 *     DNSKEY = 48
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_RRSIG, __pyx_mstate_global->__pyx_int_46) < 0) __PYX_ERR(0, 360, __pyx_L1_error)

  /* "scamper.pyx":361
 *     SSHFP = 44
 *     RRSIG = 46
 *     NSEC = 47             # <<<<<<<<<<<<<<
 *     DNSKEY = 48
 * 
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_NSEC, __pyx_mstate_global->__pyx_int_47) < 0) __PYX_ERR(0, 361, __pyx_L1_error)

  /* "scamper.pyx":362
 *     RRSIG = 46
 *     NSEC = 47
 *     DNSKEY = 48             # <<<<<<<<<<<<<<
 * 
 * # from scamper_sniff.h
*/
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_DNSKEY, __pyx_mstate_global->__pyx_int_48) < 0) __PYX_ERR(0, 362, __pyx_L1_error)

  /* "scamper.pyx":349
 * SCAMPER_HOST_CLASS_IN    = 1
 * 
 * class ScamperHostType(enum.IntEnum):             # <<<<<<<<<<<<<<
 *     A = 1
 *     NS = 2
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ScamperHostType, __pyx_t_4, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperHostType, __pyx_t_3) < 0) __PYX_ERR(0, 349, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "scamper.pyx":365
 * 
 * # from scamper_sniff.h
 * class ScamperSniffStop(enum.IntEnum):             # <<<<<<<<<<<<<<
 *     NoReason = 0
 *     Error = 1
*/
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_enum); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_IntEnum); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyTuple_Pack(1, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = __Pyx_PEP560_update_bases(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_CalculateMetaclass(NULL, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare(__pyx_t_2, __pyx_t_5, __pyx_mstate_global->__pyx_n_u_ScamperSniffStop, __pyx_mstate_global->__pyx_n_u_ScamperSniffStop, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__pyx_t_5 != __pyx_t_4) {
    if (unlikely((PyDict_SetItemString(__pyx_t_3, "__orig_bases__", __pyx_t_4) < 0))) __PYX_ERR(0, 365, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "scamper.pyx":366
 * # from scamper_sniff.h
 * class ScamperSniffStop(enum.IntEnum):
 *     NoReason = 0             # <<<<<<<<<<<<<<
 *     Error = 1
 *     LimitTime = 2
*/
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_NoReason, __pyx_mstate_global->__pyx_int_0) < 0) __PYX_ERR(0, 366, __pyx_L1_error)

  /* "scamper.pyx":367
 * class ScamperSniffStop(enum.IntEnum):
 *     NoReason = 0
 *     Error = 1             # <<<<<<<<<<<<<<
 *     LimitTime = 2
 *     LimitPktC = 3
*/
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Error, __pyx_mstate_global->__pyx_int_1) < 0) __PYX_ERR(0, 367, __pyx_L1_error)

  /* "scamper.pyx":368
 *     NoReason = 0
 *     Error = 1
 *     LimitTime = 2             # <<<<<<<<<<<<<<
 *     LimitPktC = 3
 *     Halted = 4
*/
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_LimitTime, __pyx_mstate_global->__pyx_int_2) < 0) __PYX_ERR(0, 368, __pyx_L1_error)

  /* "scamper.pyx":369
 *     Error = 1
 *     LimitTime = 2
 *     LimitPktC = 3             # <<<<<<<<<<<<<<
 *     Halted = 4
 * 
*/
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_LimitPktC, __pyx_mstate_global->__pyx_int_3) < 0) __PYX_ERR(0, 369, __pyx_L1_error)

  /* "scamper.pyx":370
 *     LimitTime = 2
 *     LimitPktC = 3
 *     Halted = 4             # <<<<<<<<<<<<<<
 * 
 * # from scamper_tracelb.h
*/
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_Halted, __pyx_mstate_global->__pyx_int_4) < 0) __PYX_ERR(0, 370, __pyx_L1_error)

  /* "scamper.pyx":365
 * 
 * # from scamper_sniff.h
 * class ScamperSniffStop(enum.IntEnum):             # <<<<<<<<<<<<<<
 *     NoReason = 0
 *     Error = 1
*/
  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperSniffStop, __pyx_t_5, __pyx_t_3, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 365, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperSniffStop, __pyx_t_4) < 0) __PYX_ERR(0, 365, __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_5); __pyx_t_5 = 0;

  /* "scamper.pyx":373
 * 
 * # from scamper_tracelb.h
 * class ScamperTracelbMethod(enum.IntEnum):             # <<<<<<<<<<<<<<
 *     UdpDport = 1
 *     IcmpEcho = 2
*/
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_enum); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_IntEnum); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_5 = PyTuple_Pack(1, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PEP560_update_bases(__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_CalculateMetaclass(NULL, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_Py3MetaclassPrepare(__pyx_t_3, __pyx_t_2, __pyx_mstate_global->__pyx_n_u_ScamperTracelbMethod, __pyx_mstate_global->__pyx_n_u_ScamperTracelbMethod, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__pyx_t_2 != __pyx_t_5) {
    if (unlikely((PyDict_SetItemString(__pyx_t_4, "__orig_bases__", __pyx_t_5) < 0))) __PYX_ERR(0, 373, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "scamper.pyx":374
 * # from scamper_tracelb.h
 * class ScamperTracelbMethod(enum.IntEnum):
 *     UdpDport = 1             # <<<<<<<<<<<<<<
 *     IcmpEcho = 2
 *     UdpSport = 3
*/
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_UdpDport, __pyx_mstate_global->__pyx_int_1) < 0) __PYX_ERR(0, 374, __pyx_L1_error)

  /* "scamper.pyx":375
 * class ScamperTracelbMethod(enum.IntEnum):
 *     UdpDport = 1
 *     IcmpEcho = 2             # <<<<<<<<<<<<<<
 *     UdpSport = 3
 *     TcpSport = 4
*/
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_IcmpEcho, __pyx_mstate_global->__pyx_int_2) < 0) __PYX_ERR(0, 375, __pyx_L1_error)

  /* "scamper.pyx":376
 *     UdpDport = 1
 *     IcmpEcho = 2
 *     UdpSport = 3             # <<<<<<<<<<<<<<
 *     TcpSport = 4
 *     TcpAckSport = 5
*/
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_UdpSport, __pyx_mstate_global->__pyx_int_3) < 0) __PYX_ERR(0, 376, __pyx_L1_error)

  /* "scamper.pyx":377
 *     IcmpEcho = 2
 *     UdpSport = 3
 *     TcpSport = 4             # <<<<<<<<<<<<<<
 *     TcpAckSport = 5
 * 
*/
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_TcpSport, __pyx_mstate_global->__pyx_int_4) < 0) __PYX_ERR(0, 377, __pyx_L1_error)

  /* "scamper.pyx":378
 *     UdpSport = 3
 *     TcpSport = 4
 *     TcpAckSport = 5             # <<<<<<<<<<<<<<
 * 
 * ####
*/
  if (__Pyx_SetNameInClass(__pyx_t_4, __pyx_mstate_global->__pyx_n_u_TcpAckSport, __pyx_mstate_global->__pyx_int_5) < 0) __PYX_ERR(0, 378, __pyx_L1_error)

  /* "scamper.pyx":373
 * 
 * # from scamper_tracelb.h
 * class ScamperTracelbMethod(enum.IntEnum):             # <<<<<<<<<<<<<<
 *     UdpDport = 1
 *     IcmpEcho = 2
*/
  __pyx_t_5 = __Pyx_Py3ClassCreate(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperTracelbMethod, __pyx_t_2, __pyx_t_4, NULL, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperTracelbMethod, __pyx_t_5) < 0) __PYX_ERR(0, 373, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __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;

  /* "scamper.pyx":428
 *         return "ScamperAddr('" + buf.decode('UTF-8', 'strict') + "')"
 * 
 *     def __format__(self, format_spec):             # <<<<<<<<<<<<<<
 *         return format(str(self), format_spec)
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperAddr_7__format__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperAddr___format, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[9])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 428, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr, __pyx_mstate_global->__pyx_n_u_format_2, __pyx_t_2) < 0) __PYX_ERR(0, 428, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":497
 *         return p[:pl]
 * 
 *     def is_linklocal(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in link-local address prefix 169.254.0.0/16 or
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperAddr_15is_linklocal, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperAddr_is_linklocal, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[10])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr, __pyx_mstate_global->__pyx_n_u_is_linklocal, __pyx_t_2) < 0) __PYX_ERR(0, 497, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":507
 *         return cscamper_addr.scamper_addr_islinklocal(self._c)
 * 
 *     def is_rfc1918(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in a private address prefix 10.0.0.0/8,
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperAddr_17is_rfc1918, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperAddr_is_rfc1918, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[11])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 507, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr, __pyx_mstate_global->__pyx_n_u_is_rfc1918, __pyx_t_2) < 0) __PYX_ERR(0, 507, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":517
 *         return cscamper_addr.scamper_addr_isrfc1918(self._c)
 * 
 *     def is_unicast(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in the IPv6 unicast prefix 2000::/3?
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperAddr_19is_unicast, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperAddr_is_unicast, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[12])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr, __pyx_mstate_global->__pyx_n_u_is_unicast, __pyx_t_2) < 0) __PYX_ERR(0, 517, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":526
 *         return cscamper_addr.scamper_addr_isunicast(self._c)
 * 
 *     def is_6to4(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in the IPv6 6to4 prefix 2002::/16?
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperAddr_21is_6to4, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperAddr_is_6to4, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[13])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 526, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr, __pyx_mstate_global->__pyx_n_u_is_6to4, __pyx_t_2) < 0) __PYX_ERR(0, 526, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":535
 *         return cscamper_addr.scamper_addr_is6to4(self._c)
 * 
 *     def is_reserved(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address in one of the reserved prefixes 0.0.0.0/8,
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperAddr_23is_reserved, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperAddr_is_reserved, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[14])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 535, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr, __pyx_mstate_global->__pyx_n_u_is_reserved, __pyx_t_2) < 0) __PYX_ERR(0, 535, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":550
 *         return cscamper_addr.scamper_addr_isreserved(self._c)
 * 
 *     def is_ipv4(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address an IPv4 address?
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperAddr_25is_ipv4, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperAddr_is_ipv4, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[15])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 550, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr, __pyx_mstate_global->__pyx_n_u_is_ipv4, __pyx_t_2) < 0) __PYX_ERR(0, 550, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":559
 *         return cscamper_addr.scamper_addr_isipv4(self._c)
 * 
 *     def is_ipv6(self):             # <<<<<<<<<<<<<<
 *         """
 *         is the address an IPv6 address?
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperAddr_27is_ipv6, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperAddr_is_ipv6, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[16])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 559, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperAddr, __pyx_mstate_global->__pyx_n_u_is_ipv6, __pyx_t_2) < 0) __PYX_ERR(0, 559, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperAddr_29__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperAddr___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[17])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperAddr_31__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperAddr___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[18])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperList_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperList___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[19])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperList_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperList___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[20])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperCycle_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCycle___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[21])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperCycle_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCycle___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[22])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":785
 * ####
 * 
 * class ScamperIcmpMplsLabelStackEntry:             # <<<<<<<<<<<<<<
 *     """
 *     A :class:`ScamperIcmpMplsLabelStackEntry` object contains convenient
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_kp_u_A_class_ScamperIcmpMplsLabelSta); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":790
 *     accessor methods for an MPLS ICMP extension
 *     """
 *     def __init__(self, ext, i):             # <<<<<<<<<<<<<<
 *         """
 *         :param ScamperIcmpExt ext: the extension to wrap
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry_2, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[23])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 790, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":798
 *         self._i = i
 * 
 *     def __str__(self):             # <<<<<<<<<<<<<<
 *         label = self._ext.mpls_label(self._i)
 *         exp = self._ext.mpls_exp(self._i)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_3__str__, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry_3, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[24])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 798, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_str, __pyx_t_3) < 0) __PYX_ERR(0, 798, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":805
 *         return "MPLS Label=%d Exp=%d TTL=%d S=%d" % (label, exp, ttl, s)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def label(self):
 *         """
*/
  __pyx_t_4 = NULL;
  __Pyx_INCREF(__pyx_builtin_property);
  __pyx_t_5 = __pyx_builtin_property; 
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_5label, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry_l, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[25])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 805, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 805, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_label, __pyx_t_3) < 0) __PYX_ERR(0, 805, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":815
 *         return self._ext.mpls_label(self._i)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def exp(self):
 *         """
*/
  __pyx_t_5 = NULL;
  __Pyx_INCREF(__pyx_builtin_property);
  __pyx_t_6 = __pyx_builtin_property; 
  __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_7exp, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry_e, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[26])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 815, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_7 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_5, __pyx_t_4};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_6, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 815, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_exp, __pyx_t_3) < 0) __PYX_ERR(0, 815, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":825
 *         return self._ext.mpls_exp(self._i)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def s(self):
 *         """
*/
  __pyx_t_6 = NULL;
  __Pyx_INCREF(__pyx_builtin_property);
  __pyx_t_4 = __pyx_builtin_property; 
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_9s, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry_s, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[27])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 825, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_7 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_6, __pyx_t_5};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_4, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 825, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_s_2, __pyx_t_3) < 0) __PYX_ERR(0, 825, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":835
 *         return self._ext.mpls_s(self._i)
 * 
 *     @property             # <<<<<<<<<<<<<<
 *     def ttl(self):
 *         """
*/
  __pyx_t_4 = NULL;
  __Pyx_INCREF(__pyx_builtin_property);
  __pyx_t_5 = __pyx_builtin_property; 
  __pyx_t_6 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_30ScamperIcmpMplsLabelStackEntry_11ttl, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry_t, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[28])); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 835, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_7 = 1;
  {
    PyObject *__pyx_callargs[2] = {__pyx_t_4, __pyx_t_6};
    __pyx_t_3 = __Pyx_PyObject_FastCall(__pyx_t_5, __pyx_callargs+__pyx_t_7, (2-__pyx_t_7) | (__pyx_t_7*__Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET));
    __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 835, __pyx_L1_error)
    __Pyx_GOTREF(__pyx_t_3);
  }
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_ttl_3, __pyx_t_3) < 0) __PYX_ERR(0, 835, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":785
 * ####
 * 
 * class ScamperIcmpMplsLabelStackEntry:             # <<<<<<<<<<<<<<
 *     """
 *     A :class:`ScamperIcmpMplsLabelStackEntry` object contains convenient
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackEntry, __pyx_t_3) < 0) __PYX_ERR(0, 785, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":845
 *         return self._ext.mpls_ttl(self._i)
 * 
 * class _ScamperIcmpMplsLabelStackIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, ext):
 *         self._ext = ext
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackIterat, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackIterat, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":846
 * 
 * class _ScamperIcmpMplsLabelStackIterator:
 *     def __init__(self, ext):             # <<<<<<<<<<<<<<
 *         self._ext = ext
 *         self._i = 0
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_34_ScamperIcmpMplsLabelStackIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackIterat_2, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[29])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 846, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 846, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":851
 *         self._c = ext.mpls_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_34_ScamperIcmpMplsLabelStackIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackIterat_3, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[30])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 851, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 851, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":854
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             mpls = self._ext.mpls_lse(self._i)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_34_ScamperIcmpMplsLabelStackIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackIterat_4, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[31])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 854, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":845
 *         return self._ext.mpls_ttl(self._i)
 * 
 * class _ScamperIcmpMplsLabelStackIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, ext):
 *         self._ext = ext
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackIterat, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperIcmpMplsLabelStackIterat, __pyx_t_3) < 0) __PYX_ERR(0, 845, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":901
 *         return ext
 * 
 *     def is_mpls(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this ICMP extension is an MPLS
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperIcmpExt_7is_mpls, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExt_is_mpls, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[32])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 901, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExt, __pyx_mstate_global->__pyx_n_u_is_mpls, __pyx_t_2) < 0) __PYX_ERR(0, 901, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":923
 *         return cscamper_icmpext.scamper_icmpext_mpls_count_get(self._c)
 * 
 *     def mpls_lses(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for the MPLS label stack entries
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperIcmpExt_9mpls_lses, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExt_mpls_lses, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[33])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 923, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExt, __pyx_mstate_global->__pyx_n_u_mpls_lses, __pyx_t_2) < 0) __PYX_ERR(0, 923, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":935
 *         return _ScamperIcmpMplsLabelStackIterator(self)
 * 
 *     def mpls_lse(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_lse(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperIcmpExt_11mpls_lse, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExt_mpls_lse, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[34])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExt, __pyx_mstate_global->__pyx_n_u_mpls_lse, __pyx_t_2) < 0) __PYX_ERR(0, 935, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":951
 *         return ScamperIcmpMplsLabelStackEntry(self, i)
 * 
 *     def mpls_label(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_label(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperIcmpExt_13mpls_label, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExt_mpls_label, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[35])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExt, __pyx_mstate_global->__pyx_n_u_mpls_label, __pyx_t_2) < 0) __PYX_ERR(0, 951, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":966
 *         return cscamper_icmpext.scamper_icmpext_mpls_label_get(self._c, i)
 * 
 *     def mpls_ttl(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_ttl(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperIcmpExt_15mpls_ttl, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExt_mpls_ttl, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[36])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExt, __pyx_mstate_global->__pyx_n_u_mpls_ttl, __pyx_t_2) < 0) __PYX_ERR(0, 966, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":981
 *         return cscamper_icmpext.scamper_icmpext_mpls_ttl_get(self._c, i)
 * 
 *     def mpls_exp(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_exp(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperIcmpExt_17mpls_exp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExt_mpls_exp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[37])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 981, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExt, __pyx_mstate_global->__pyx_n_u_mpls_exp, __pyx_t_2) < 0) __PYX_ERR(0, 981, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":996
 *         return cscamper_icmpext.scamper_icmpext_mpls_exp_get(self._c, i)
 * 
 *     def mpls_s(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         mpls_s(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperIcmpExt_19mpls_s, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExt_mpls_s, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[38])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 996, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExt, __pyx_mstate_global->__pyx_n_u_mpls_s, __pyx_t_2) < 0) __PYX_ERR(0, 996, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperIcmpExt_21__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExt___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[39])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperIcmpExt_23__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExt___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[40])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1011
 *         return cscamper_icmpext.scamper_icmpext_mpls_s_get(self._c, i)
 * 
 * class _ScamperIcmpExtsIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, exts):
 *         self._exts = exts
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExtsIterator, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExtsIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":1012
 * 
 * class _ScamperIcmpExtsIterator:
 *     def __init__(self, exts):             # <<<<<<<<<<<<<<
 *         self._exts = exts
 *         self._i = 0
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_24_ScamperIcmpExtsIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExtsIterator___init, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[41])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1012, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 1012, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":1017
 *         self._c = exts.ext_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_24_ScamperIcmpExtsIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExtsIterator___iter, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[42])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1017, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 1017, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":1020
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             ext = self._exts.ext(self, self._i)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_24_ScamperIcmpExtsIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExtsIterator___next, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[43])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1020, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 1020, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":1011
 *         return cscamper_icmpext.scamper_icmpext_mpls_s_get(self._c, i)
 * 
 * class _ScamperIcmpExtsIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, exts):
 *         self._exts = exts
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperIcmpExtsIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1011, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExtsIterator, __pyx_t_3) < 0) __PYX_ERR(0, 1011, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1068
 *         return ext
 * 
 *     def ext_count(self):             # <<<<<<<<<<<<<<
 *         return cscamper_icmpext.scamper_icmpexts_count_get(self._c)
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperIcmpExts_7ext_count, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExts_ext_count, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[44])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1068, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExts, __pyx_mstate_global->__pyx_n_u_ext_count, __pyx_t_2) < 0) __PYX_ERR(0, 1068, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1071
 *         return cscamper_icmpext.scamper_icmpexts_count_get(self._c)
 * 
 *     def ext(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ext(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperIcmpExts_9ext, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExts_ext, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[45])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1071, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExts, __pyx_mstate_global->__pyx_n_u_ext, __pyx_t_2) < 0) __PYX_ERR(0, 1071, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1082
 *         return ScamperIcmpExt.from_ptr(c)
 * 
 *     def exts(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator over the ICMP extensions container.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperIcmpExts_11exts, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExts_exts, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[46])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1082, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperIcmpExts, __pyx_mstate_global->__pyx_n_u_exts, __pyx_t_2) < 0) __PYX_ERR(0, 1082, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperIcmpExts_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExts___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[47])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperIcmpExts_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperIcmpExts___setstate_cytho, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[48])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1339
 *         return cscamper_trace.scamper_trace_reply_ipid_get(self._r)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a TCP packet.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperTraceHop_7is_tcp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTraceHop_is_tcp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[49])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1339, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTraceHop, __pyx_mstate_global->__pyx_n_u_is_tcp, __pyx_t_2) < 0) __PYX_ERR(0, 1339, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1350
 *         return cscamper_trace.scamper_trace_reply_is_tcp(self._r)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a ICMP packet.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperTraceHop_9is_icmp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTraceHop_is_icmp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[50])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1350, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTraceHop, __pyx_mstate_global->__pyx_n_u_is_icmp, __pyx_t_2) < 0) __PYX_ERR(0, 1350, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1361
 *         return cscamper_trace.scamper_trace_reply_is_icmp(self._r)
 * 
 *     def is_icmp_q(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response had an ICMP quotation
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperTraceHop_11is_icmp_q, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTraceHop_is_icmp_q, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[51])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1361, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTraceHop, __pyx_mstate_global->__pyx_n_u_is_icmp_q, __pyx_t_2) < 0) __PYX_ERR(0, 1361, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1372
 *         return cscamper_trace.scamper_trace_reply_is_icmp_q(self._r)
 * 
 *     def is_icmp_unreach_port(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP port unreachable
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperTraceHop_13is_icmp_unreach_port, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTraceHop_is_icmp_unreach, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[52])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1372, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTraceHop, __pyx_mstate_global->__pyx_n_u_is_icmp_unreach_port, __pyx_t_2) < 0) __PYX_ERR(0, 1372, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1384
 *         return cscamper_trace.scamper_trace_reply_is_icmp_unreach_port(self._r)
 * 
 *     def is_icmp_echo_reply(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP echo reply
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperTraceHop_15is_icmp_echo_reply, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTraceHop_is_icmp_echo_rep, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[53])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1384, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTraceHop, __pyx_mstate_global->__pyx_n_u_is_icmp_echo_reply, __pyx_t_2) < 0) __PYX_ERR(0, 1384, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1395
 *         return cscamper_trace.scamper_trace_reply_is_icmp_echo_reply(self._r)
 * 
 *     def is_icmp_ttl_exp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP TTL expired
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperTraceHop_17is_icmp_ttl_exp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTraceHop_is_icmp_ttl_exp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[54])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTraceHop, __pyx_mstate_global->__pyx_n_u_is_icmp_ttl_exp, __pyx_t_2) < 0) __PYX_ERR(0, 1395, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1407
 *         return cscamper_trace.scamper_trace_reply_is_icmp_ttl_exp(self._r)
 * 
 *     def is_icmp_ptb(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP packet too
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperTraceHop_19is_icmp_ptb, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTraceHop_is_icmp_ptb, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[55])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1407, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTraceHop, __pyx_mstate_global->__pyx_n_u_is_icmp_ptb, __pyx_t_2) < 0) __PYX_ERR(0, 1407, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperTraceHop_21__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTraceHop___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[56])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperTraceHop_23__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTraceHop___setstate_cytho, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[57])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1509
 *         return ScamperIcmpExts.from_ptr(ext)
 * 
 * class _ScamperTraceHopIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, trace):
 *         self._trace = trace
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperTraceHopIterator, __pyx_mstate_global->__pyx_n_u_ScamperTraceHopIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":1510
 * 
 * class _ScamperTraceHopIterator:
 *     def __init__(self, trace):             # <<<<<<<<<<<<<<
 *         self._trace = trace
 *         self._index = 0
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_24_ScamperTraceHopIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperTraceHopIterator___init, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[58])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 1510, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":1515
 *         self._hopc = trace.stop_hop
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_24_ScamperTraceHopIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperTraceHopIterator___iter, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[59])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 1515, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":1518
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._index < self._hopc:
 *             hop = self._trace.hop(self._index)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_24_ScamperTraceHopIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperTraceHopIterator___next, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[60])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 1518, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":1509
 *         return ScamperIcmpExts.from_ptr(ext)
 * 
 * class _ScamperTraceHopIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, trace):
 *         self._trace = trace
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperTraceHopIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1509, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperTraceHopIterator, __pyx_t_3) < 0) __PYX_ERR(0, 1509, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1586
 *         return self._dist
 * 
 *     def hop(self):             # <<<<<<<<<<<<<<
 *         """
 *         method to obtain information about a PMTUD probe and response
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_21ScamperTracePmtudNote_5hop, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracePmtudNote_hop, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[61])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1586, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracePmtudNote, __pyx_mstate_global->__pyx_n_u_hop, __pyx_t_2) < 0) __PYX_ERR(0, 1586, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_21ScamperTracePmtudNote_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracePmtudNote___reduce_c, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[62])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_21ScamperTracePmtudNote_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracePmtudNote___setstate, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[63])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1659
 *         return cscamper_trace.scamper_trace_pmtud_ifmtu_get(self._c)
 * 
 *     def notes(self):             # <<<<<<<<<<<<<<
 *         """
 *         a generator that yields ScamperTracePmtudNote structures
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_17ScamperTracePmtud_5notes, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracePmtud_notes, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[0])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracePmtud, __pyx_mstate_global->__pyx_n_u_notes, __pyx_t_2) < 0) __PYX_ERR(0, 1659, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_17ScamperTracePmtud_8__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracePmtud___reduce_cytho, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[64])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_17ScamperTracePmtud_10__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracePmtud___setstate_cyt, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[65])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1768
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this traceroute measurement.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_7to_json, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_to_json, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[66])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1768, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_to_json, __pyx_t_2) < 0) __PYX_ERR(0, 1768, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1839
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     def hop(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         hop(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_9hop, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_hop, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[67])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1839, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_hop, __pyx_t_2) < 0) __PYX_ERR(0, 1839, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1888
 *         return stop_hop
 * 
 *     def hops(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for recorded hops.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_11hops, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_hops, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[68])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1888, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_hops, __pyx_t_2) < 0) __PYX_ERR(0, 1888, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":1897
 *         return _ScamperTraceHopIterator(self)
 * 
 *     def addrs(self, reserved=True):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain unique addresses in traceroute hops.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_13addrs, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_addrs, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[69])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[2]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_addrs, __pyx_t_2) < 0) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2120
 *         return ScamperTracePmtud.from_ptr(self)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute used UDP probes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_15is_udp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_udp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[70])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2120, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_udp, __pyx_t_2) < 0) __PYX_ERR(0, 2120, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2129
 *         return cscamper_trace.scamper_trace_type_is_udp(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute used TCP probes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_17is_tcp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_tcp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[71])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2129, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_tcp, __pyx_t_2) < 0) __PYX_ERR(0, 2129, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2138
 *         return cscamper_trace.scamper_trace_type_is_tcp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute used ICMP probes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_19is_icmp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_icmp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[72])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_icmp, __pyx_t_2) < 0) __PYX_ERR(0, 2138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2147
 *         return cscamper_trace.scamper_trace_type_is_icmp(self._c)
 * 
 *     def is_stop_noreason(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute has no stop reason.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_21is_stop_noreason, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_stop_noreason, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[73])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2147, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_stop_noreason, __pyx_t_2) < 0) __PYX_ERR(0, 2147, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2159
 *         return False
 * 
 *     def is_stop_completed(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_23is_stop_completed, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_stop_completed, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[74])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2159, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_stop_completed, __pyx_t_2) < 0) __PYX_ERR(0, 2159, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2172
 *         return False
 * 
 *     def is_stop_unreach(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_25is_stop_unreach, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_stop_unreach, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[75])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2172, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_stop_unreach, __pyx_t_2) < 0) __PYX_ERR(0, 2172, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2185
 *         return False
 * 
 *     def is_stop_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_27is_stop_icmp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_stop_icmp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[76])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2185, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_stop_icmp, __pyx_t_2) < 0) __PYX_ERR(0, 2185, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2199
 *         return False
 * 
 *     def is_stop_loop(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_29is_stop_loop, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_stop_loop, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[77])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_stop_loop, __pyx_t_2) < 0) __PYX_ERR(0, 2199, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2212
 *         return False
 * 
 *     def is_stop_gaplimit(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_31is_stop_gaplimit, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_stop_gaplimit, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[78])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2212, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_stop_gaplimit, __pyx_t_2) < 0) __PYX_ERR(0, 2212, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2225
 *         return False
 * 
 *     def is_stop_error(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_33is_stop_error, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_stop_error, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[79])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_stop_error, __pyx_t_2) < 0) __PYX_ERR(0, 2225, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2238
 *         return False
 * 
 *     def is_stop_hoplimit(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_35is_stop_hoplimit, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_stop_hoplimit, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[80])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2238, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_stop_hoplimit, __pyx_t_2) < 0) __PYX_ERR(0, 2238, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2251
 *         return False
 * 
 *     def is_stop_gss(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_37is_stop_gss, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_stop_gss, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[81])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2251, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_stop_gss, __pyx_t_2) < 0) __PYX_ERR(0, 2251, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2266
 *         return False
 * 
 *     def is_stop_halted(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this traceroute stopped because
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_39is_stop_halted, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace_is_stop_halted, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[82])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2266, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTrace, __pyx_mstate_global->__pyx_n_u_is_stop_halted, __pyx_t_2) < 0) __PYX_ERR(0, 2266, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_41__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[83])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperTrace_43__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTrace___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[84])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2329
 *         return reply
 * 
 *     def is_from_target(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply came from the target.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_7is_from_target, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply_is_from_target, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[85])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2329, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply, __pyx_mstate_global->__pyx_n_u_is_from_target, __pyx_t_2) < 0) __PYX_ERR(0, 2329, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2470
 *             return cscamper_ping.scamper_ping_reply_ipid32_get(self._r)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP response.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_9is_icmp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply_is_icmp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[86])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply, __pyx_mstate_global->__pyx_n_u_is_icmp, __pyx_t_2) < 0) __PYX_ERR(0, 2470, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2479
 *         return cscamper_ping.scamper_ping_reply_is_icmp(self._r)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an TCP response.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_11is_tcp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply_is_tcp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[87])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2479, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply, __pyx_mstate_global->__pyx_n_u_is_tcp, __pyx_t_2) < 0) __PYX_ERR(0, 2479, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2488
 *         return cscamper_ping.scamper_ping_reply_is_tcp(self._r)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an UDP response.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_13is_udp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply_is_udp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[88])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2488, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply, __pyx_mstate_global->__pyx_n_u_is_udp, __pyx_t_2) < 0) __PYX_ERR(0, 2488, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2497
 *         return cscamper_ping.scamper_ping_reply_is_udp(self._r)
 * 
 *     def is_icmp_echo_reply(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP echo reply.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_15is_icmp_echo_reply, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply_is_icmp_echo_re, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[89])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2497, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply, __pyx_mstate_global->__pyx_n_u_is_icmp_echo_reply, __pyx_t_2) < 0) __PYX_ERR(0, 2497, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2506
 *         return cscamper_ping.scamper_ping_reply_is_icmp_echo_reply(self._r)
 * 
 *     def is_icmp_unreach(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP destination unreachable
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_17is_icmp_unreach, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply_is_icmp_unreach, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[90])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2506, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply, __pyx_mstate_global->__pyx_n_u_is_icmp_unreach, __pyx_t_2) < 0) __PYX_ERR(0, 2506, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2515
 *         return cscamper_ping.scamper_ping_reply_is_icmp_unreach(self._r)
 * 
 *     def is_icmp_unreach_port(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP destination
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_19is_icmp_unreach_port, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply_is_icmp_unreach_2, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[91])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2515, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply, __pyx_mstate_global->__pyx_n_u_is_icmp_unreach_port, __pyx_t_2) < 0) __PYX_ERR(0, 2515, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2525
 *         return cscamper_ping.scamper_ping_reply_is_icmp_unreach_port(self._r)
 * 
 *     def is_icmp_ttl_exp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP TTL expired message
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_21is_icmp_ttl_exp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply_is_icmp_ttl_exp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[92])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply, __pyx_mstate_global->__pyx_n_u_is_icmp_ttl_exp, __pyx_t_2) < 0) __PYX_ERR(0, 2525, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2534
 *         return cscamper_ping.scamper_ping_reply_is_icmp_ttl_exp(self._r)
 * 
 *     def is_icmp_tsreply(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP timestamp reply.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_23is_icmp_tsreply, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply_is_icmp_tsreply, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[93])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2534, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply, __pyx_mstate_global->__pyx_n_u_is_icmp_tsreply, __pyx_t_2) < 0) __PYX_ERR(0, 2534, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2543
 *         return cscamper_ping.scamper_ping_reply_is_icmp_tsreply(self._r)
 * 
 *     def is_icmp_ptb(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP packet too big
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_25is_icmp_ptb, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply_is_icmp_ptb, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[94])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2543, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPingReply, __pyx_mstate_global->__pyx_n_u_is_icmp_ptb, __pyx_t_2) < 0) __PYX_ERR(0, 2543, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_27__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[95])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._p,self._r cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperPingReply_29__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPingReply___setstate_cyth, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[96])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2619
 *         return c.decode('UTF-8', 'strict')
 * 
 * class _ScamperPingIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, ping):
 *         self._ping = ping
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperPingIterator, __pyx_mstate_global->__pyx_n_u_ScamperPingIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":2620
 * 
 * class _ScamperPingIterator:
 *     def __init__(self, ping):             # <<<<<<<<<<<<<<
 *         self._ping = ping
 *         self._i = 0;
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20_ScamperPingIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperPingIterator___init, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[97])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2620, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 2620, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":2625
 *         self._c = ping.probe_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20_ScamperPingIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperPingIterator___iter, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[98])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2625, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 2625, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":2628
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._i < self._c:
 *             reply = self._ping.reply(self._i)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20_ScamperPingIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperPingIterator___next, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[99])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2628, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 2628, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":2619
 *         return c.decode('UTF-8', 'strict')
 * 
 * class _ScamperPingIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, ping):
 *         self._ping = ping
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperPingIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2619, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperPingIterator, __pyx_t_3) < 0) __PYX_ERR(0, 2619, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2786
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this ping measurement.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_9to_json, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing_to_json, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[100])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2786, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_to_json, __pyx_t_2) < 0) __PYX_ERR(0, 2786, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2836
 *         return data[:length]
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent ICMP packets.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_11is_icmp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing_is_icmp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[101])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2836, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_is_icmp, __pyx_t_2) < 0) __PYX_ERR(0, 2836, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2845
 *         return cscamper_ping.scamper_ping_method_is_icmp(self._c)
 * 
 *     def is_icmp_time(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent ICMP timestamp
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_13is_icmp_time, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing_is_icmp_time, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[102])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2845, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_is_icmp_time, __pyx_t_2) < 0) __PYX_ERR(0, 2845, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2855
 *         return cscamper_ping.scamper_ping_method_is_icmp_time(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP packets.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_15is_tcp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing_is_tcp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[103])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_is_tcp, __pyx_t_2) < 0) __PYX_ERR(0, 2855, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2864
 *         return cscamper_ping.scamper_ping_method_is_tcp(self._c)
 * 
 *     def is_tcp_ack_sport(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP ACK packets
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_17is_tcp_ack_sport, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing_is_tcp_ack_sport, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[104])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2864, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_is_tcp_ack_sport, __pyx_t_2) < 0) __PYX_ERR(0, 2864, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2874
 *         return cscamper_ping.scamper_ping_method_is_tcp_ack_sport(self._c)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent UDP packets.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_19is_udp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing_is_udp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[105])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_is_udp, __pyx_t_2) < 0) __PYX_ERR(0, 2874, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2883
 *         return cscamper_ping.scamper_ping_method_is_udp(self._c)
 * 
 *     def is_vary_sport(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP or UDP
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_21is_vary_sport, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing_is_vary_sport, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[106])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2883, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_is_vary_sport, __pyx_t_2) < 0) __PYX_ERR(0, 2883, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":2893
 *         return cscamper_ping.scamper_ping_method_is_vary_sport(self._c)
 * 
 *     def is_vary_dport(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the ping measurement sent TCP or UDP
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_23is_vary_dport, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing_is_vary_dport, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[107])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_is_vary_dport, __pyx_t_2) < 0) __PYX_ERR(0, 2893, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3046
 *         return cscamper_ping.scamper_ping_sent_get(self._c)
 * 
 *     def reply(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         reply(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_25reply, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing_reply, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[108])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3046, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_reply, __pyx_t_2) < 0) __PYX_ERR(0, 3046, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3060
 *         return ScamperPingReply.from_ptr(r, p, self._c)
 * 
 *     def replies(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator that returns the first reply for
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_27replies, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing_replies, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[109])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3060, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_replies, __pyx_t_2) < 0) __PYX_ERR(0, 3060, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3067
 *         return _ScamperPingIterator(self)
 * 
 *     def _stats(self):             # <<<<<<<<<<<<<<
 *         if self._c_s == NULL:
 *             self._c_s = cscamper_ping.scamper_ping_stats_alloc(self._c)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_29_stats, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing__stats, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[110])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3067, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperPing, __pyx_mstate_global->__pyx_n_u_stats, __pyx_t_2) < 0) __PYX_ERR(0, 3067, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_31__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[111])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_s cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperPing_33__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperPing___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[112])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3200
 * ####
 * 
 * class _ScamperTracelbNodeIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, trace):
 *         self._trace = trace
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNodeIterator, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNodeIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":3201
 * 
 * class _ScamperTracelbNodeIterator:
 *     def __init__(self, trace):             # <<<<<<<<<<<<<<
 *         self._trace = trace
 *         self._index = 0
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_27_ScamperTracelbNodeIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNodeIterator___in, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[113])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 3201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":3206
 *         self._nodec = trace.node_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_27_ScamperTracelbNodeIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNodeIterator___it, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[114])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3206, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 3206, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":3209
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._index < self._nodec:
 *             node = self._trace.node(self._index)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_27_ScamperTracelbNodeIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNodeIterator___ne, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[115])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3209, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 3209, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":3200
 * ####
 * 
 * class _ScamperTracelbNodeIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, trace):
 *         self._trace = trace
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperTracelbNodeIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNodeIterator, __pyx_t_3) < 0) __PYX_ERR(0, 3200, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3216
 *         raise StopIteration
 * 
 * class _ScamperTracelbLinkIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, x):
 *         self._x = x
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLinkIterator, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLinkIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":3217
 * 
 * class _ScamperTracelbLinkIterator:
 *     def __init__(self, x):             # <<<<<<<<<<<<<<
 *         self._x = x
 *         self._index = 0
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_27_ScamperTracelbLinkIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLinkIterator___in, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[116])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3217, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 3217, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":3222
 *         self._linkc = x.link_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_27_ScamperTracelbLinkIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLinkIterator___it, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[117])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3222, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 3222, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":3225
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._index < self._linkc:
 *             link = self._x.link(self._index)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_27_ScamperTracelbLinkIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLinkIterator___ne, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[118])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3225, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 3225, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":3216
 *         raise StopIteration
 * 
 * class _ScamperTracelbLinkIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, x):
 *         self._x = x
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperTracelbLinkIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3216, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLinkIterator, __pyx_t_3) < 0) __PYX_ERR(0, 3216, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperTracelbReply_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbReply___reduce_cyt, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[119])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperTracelbReply_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbReply___setstate_c, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[120])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3470
 *         return cscamper_tracelb.scamper_tracelb_probe_rxc_get(self._c)
 * 
 *     def reply(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a specific reply recorded for this probe
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperTracelbProbe_7reply, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbProbe_reply, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[121])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3470, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbProbe, __pyx_mstate_global->__pyx_n_u_reply, __pyx_t_2) < 0) __PYX_ERR(0, 3470, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperTracelbProbe_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbProbe___reduce_cyt, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[122])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperTracelbProbe_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbProbe___setstate_c, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[123])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3529
 *         return self._probec
 * 
 *     def probe(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a specific probe in this probeset
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22ScamperTracelbProbeset_11probe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbProbeset_probe, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[124])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3529, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbProbeset, __pyx_mstate_global->__pyx_n_u_probe, __pyx_t_2) < 0) __PYX_ERR(0, 3529, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22ScamperTracelbProbeset_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbProbeset___reduce, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[125])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22ScamperTracelbProbeset_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbProbeset___setstat, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[126])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3610
 *         return cscamper_tracelb.scamper_tracelb_node_linkc_get(self._c)
 * 
 *     def link(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         link(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperTracelbNode_5link, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNode_link, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[127])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3610, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbNode, __pyx_mstate_global->__pyx_n_u_link, __pyx_t_2) < 0) __PYX_ERR(0, 3610, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3621
 *         return ScamperTracelbLink.from_ptr(c)
 * 
 *     def links(self):             # <<<<<<<<<<<<<<
 *         return _ScamperTracelbLinkIterator(self)
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperTracelbNode_7links, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNode_links, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[128])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3621, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbNode, __pyx_mstate_global->__pyx_n_u_links, __pyx_t_2) < 0) __PYX_ERR(0, 3621, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperTracelbNode_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNode___reduce_cyth, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[129])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperTracelbNode_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbNode___setstate_cy, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[130])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3691
 *         return l
 * 
 *     def near(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the node at the near side of this link
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperTracelbLink_7near, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLink_near, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[131])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3691, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbLink, __pyx_mstate_global->__pyx_n_u_near, __pyx_t_2) < 0) __PYX_ERR(0, 3691, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3701
 *         return ScamperTracelbNode.from_ptr(c)
 * 
 *     def far(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the node at the far side of this link
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperTracelbLink_9far, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLink_far, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[132])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3701, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbLink, __pyx_mstate_global->__pyx_n_u_far, __pyx_t_2) < 0) __PYX_ERR(0, 3701, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3711
 *         return ScamperTracelbNode.from_ptr(c)
 * 
 *     def length(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the length of this link, in hops.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperTracelbLink_11length, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLink_length, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[133])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbLink, __pyx_mstate_global->__pyx_n_u_length, __pyx_t_2) < 0) __PYX_ERR(0, 3711, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3720
 *         return cscamper_tracelb.scamper_tracelb_link_hopc_get(self._c)
 * 
 *     def probeset(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a probeset for a part of a link.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperTracelbLink_13probeset, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLink_probeset, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[134])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelbLink, __pyx_mstate_global->__pyx_n_u_probeset, __pyx_t_2) < 0) __PYX_ERR(0, 3720, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperTracelbLink_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLink___reduce_cyth, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[135])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperTracelbLink_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelbLink___setstate_cy, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[136])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3828
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this MDA traceroute
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTracelb_7to_json, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelb_to_json, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[137])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3828, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb, __pyx_mstate_global->__pyx_n_u_to_json, __pyx_t_2) < 0) __PYX_ERR(0, 3828, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3877
 *         return ScamperAddr.from_ptr(c_a)
 * 
 *     def node(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         node(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTracelb_9node, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelb_node, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[138])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3877, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb, __pyx_mstate_global->__pyx_n_u_node, __pyx_t_2) < 0) __PYX_ERR(0, 3877, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3898
 *         return cscamper_tracelb.scamper_tracelb_nodec_get(self._c)
 * 
 *     def nodes(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for recorded nodes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTracelb_11nodes, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelb_nodes, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[139])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3898, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb, __pyx_mstate_global->__pyx_n_u_nodes, __pyx_t_2) < 0) __PYX_ERR(0, 3898, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3907
 *         return _ScamperTracelbNodeIterator(self)
 * 
 *     def link(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         link(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTracelb_13link, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelb_link, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[140])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3907, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb, __pyx_mstate_global->__pyx_n_u_link, __pyx_t_2) < 0) __PYX_ERR(0, 3907, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":3928
 *         return cscamper_tracelb.scamper_tracelb_linkc_get(self._c)
 * 
 *     def links(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator for recorded links.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTracelb_15links, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelb_links, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[141])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3928, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb, __pyx_mstate_global->__pyx_n_u_links, __pyx_t_2) < 0) __PYX_ERR(0, 3928, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4076
 *         return None
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this measurement used UDP probes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTracelb_17is_udp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelb_is_udp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[142])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4076, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb, __pyx_mstate_global->__pyx_n_u_is_udp, __pyx_t_2) < 0) __PYX_ERR(0, 4076, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4085
 *         return cscamper_tracelb.scamper_tracelb_type_is_udp(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this measurement used TCP probes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTracelb_19is_tcp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelb_is_tcp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[143])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4085, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb, __pyx_mstate_global->__pyx_n_u_is_tcp, __pyx_t_2) < 0) __PYX_ERR(0, 4085, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4094
 *         return cscamper_tracelb.scamper_tracelb_type_is_tcp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if this measurement used ICMP probes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTracelb_21is_icmp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelb_is_icmp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[144])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4094, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTracelb, __pyx_mstate_global->__pyx_n_u_is_icmp, __pyx_t_2) < 0) __PYX_ERR(0, 4094, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTracelb_23__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelb___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[145])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTracelb_25__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTracelb___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[146])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4133
 *         return r
 * 
 *     def is_from_target(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply came from the target.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasReply_5is_from_target, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReply_is_from_targ, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[147])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasReply, __pyx_mstate_global->__pyx_n_u_is_from_target, __pyx_t_2) < 0) __PYX_ERR(0, 4133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4258
 *         return None
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a TCP packet.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasReply_7is_tcp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReply_is_tcp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[148])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasReply, __pyx_mstate_global->__pyx_n_u_is_tcp, __pyx_t_2) < 0) __PYX_ERR(0, 4258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4267
 *         return cscamper_dealias.scamper_dealias_reply_is_tcp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was a ICMP packet.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasReply_9is_icmp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReply_is_icmp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[149])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4267, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasReply, __pyx_mstate_global->__pyx_n_u_is_icmp, __pyx_t_2) < 0) __PYX_ERR(0, 4267, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4276
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp(self._c)
 * 
 *     def is_icmp_ttl_exp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP TTL expired
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasReply_11is_icmp_ttl_exp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReply_is_icmp_ttl, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[150])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4276, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasReply, __pyx_mstate_global->__pyx_n_u_is_icmp_ttl_exp, __pyx_t_2) < 0) __PYX_ERR(0, 4276, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4286
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp_ttl_exp(self._c)
 * 
 *     def is_icmp_unreach(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the reply was an ICMP destination unreachable
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasReply_13is_icmp_unreach, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReply_is_icmp_unre, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[151])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4286, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasReply, __pyx_mstate_global->__pyx_n_u_is_icmp_unreach, __pyx_t_2) < 0) __PYX_ERR(0, 4286, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4295
 *         return cscamper_dealias.scamper_dealias_reply_is_icmp_unreach(self._c)
 * 
 *     def is_icmp_unreach_port(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the response was an ICMP port unreachable
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasReply_15is_icmp_unreach_port, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReply_is_icmp_unre_2, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[152])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4295, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasReply, __pyx_mstate_global->__pyx_n_u_is_icmp_unreach_port, __pyx_t_2) < 0) __PYX_ERR(0, 4295, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasReply_17__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReply___reduce_cyt, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[153])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasReply_19__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReply___setstate_c, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[154])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_28ScamperDealiasMidardiscRound_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasMidardiscRound___r, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[155])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_28ScamperDealiasMidardiscRound_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasMidardiscRound___s, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[156])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4716
 *         return cscamper_dealias.scamper_dealias_probedef_icmp_csum_get(icmp)
 * 
 *     def is_udp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that reports if probe used UDP probes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22ScamperDealiasProbedef_9is_udp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedef_is_udp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[157])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4716, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasProbedef, __pyx_mstate_global->__pyx_n_u_is_udp, __pyx_t_2) < 0) __PYX_ERR(0, 4716, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4725
 *         return cscamper_dealias.scamper_dealias_probedef_is_udp(self._c)
 * 
 *     def is_icmp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that reports if probe used ICMP probes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22ScamperDealiasProbedef_11is_icmp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedef_is_icmp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[158])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4725, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasProbedef, __pyx_mstate_global->__pyx_n_u_is_icmp, __pyx_t_2) < 0) __PYX_ERR(0, 4725, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4734
 *         return cscamper_dealias.scamper_dealias_probedef_is_icmp(self._c)
 * 
 *     def is_tcp(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that reports if probe used TCP probes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22ScamperDealiasProbedef_13is_tcp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedef_is_tcp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[159])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4734, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasProbedef, __pyx_mstate_global->__pyx_n_u_is_tcp, __pyx_t_2) < 0) __PYX_ERR(0, 4734, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22ScamperDealiasProbedef_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedef___reduce, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[160])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22ScamperDealiasProbedef_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedef___setstat, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[161])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4743
 *         return cscamper_dealias.scamper_dealias_probedef_is_tcp(self._c)
 * 
 * class _ScamperDealiasReplyIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, probe):
 *         self._probe = probe
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReplyIterator, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReplyIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":4744
 * 
 * class _ScamperDealiasReplyIterator:
 *     def __init__(self, probe):             # <<<<<<<<<<<<<<
 *         self._probe = probe
 *         self._i = 0
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_28_ScamperDealiasReplyIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReplyIterator___i, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[162])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4744, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 4744, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":4749
 *         self._c = probe.reply_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_28_ScamperDealiasReplyIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReplyIterator___i_2, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[163])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4749, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 4749, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":4752
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             reply = self._probe.reply(self._i)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_28_ScamperDealiasReplyIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReplyIterator___n, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[164])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4752, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 4752, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":4743
 *         return cscamper_dealias.scamper_dealias_probedef_is_tcp(self._c)
 * 
 * class _ScamperDealiasReplyIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, probe):
 *         self._probe = probe
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperDealiasReplyIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4743, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperDealiasReplyIterator, __pyx_t_3) < 0) __PYX_ERR(0, 4743, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4819
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def reply(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         reply(i=0)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasProbe_5reply, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbe_reply, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[165])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[3]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasProbe, __pyx_mstate_global->__pyx_n_u_reply, __pyx_t_2) < 0) __PYX_ERR(0, 4819, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4841
 *         return cscamper_dealias.scamper_dealias_probe_replyc_get(self._c)
 * 
 *     def replies(self):             # <<<<<<<<<<<<<<
 *         return _ScamperDealiasReplyIterator(self)
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasProbe_7replies, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbe_replies, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[166])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4841, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealiasProbe, __pyx_mstate_global->__pyx_n_u_replies, __pyx_t_2) < 0) __PYX_ERR(0, 4841, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasProbe_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbe___reduce_cyt, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[167])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_19ScamperDealiasProbe_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbe___setstate_c, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[168])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4854
 *         return cscamper_dealias.scamper_dealias_probe_ipid_get(self._c)
 * 
 * class _ScamperDealiasProbeIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, dealias):
 *         self._dealias = dealias
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbeIterator, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbeIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":4855
 * 
 * class _ScamperDealiasProbeIterator:
 *     def __init__(self, dealias):             # <<<<<<<<<<<<<<
 *         self._dealias = dealias
 *         self._i = 0
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_28_ScamperDealiasProbeIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbeIterator___i, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[169])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4855, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 4855, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":4860
 *         self._c = dealias.probe_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_28_ScamperDealiasProbeIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbeIterator___i_2, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[170])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4860, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 4860, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":4863
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             probe = self._dealias.probe(self._i)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_28_ScamperDealiasProbeIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbeIterator___n, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[171])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4863, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 4863, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":4854
 *         return cscamper_dealias.scamper_dealias_probe_ipid_get(self._c)
 * 
 * class _ScamperDealiasProbeIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, dealias):
 *         self._dealias = dealias
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbeIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbeIterator, __pyx_t_3) < 0) __PYX_ERR(0, 4854, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4870
 *         raise StopIteration
 * 
 * class _ScamperDealiasProbedefIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, dealias):
 *         self._dealias = dealias
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedefIterator, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedefIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":4871
 * 
 * class _ScamperDealiasProbedefIterator:
 *     def __init__(self, dealias):             # <<<<<<<<<<<<<<
 *         self._dealias = dealias
 *         self._i = 0
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_31_ScamperDealiasProbedefIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedefIterator_2, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[172])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4871, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 4871, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":4876
 *         self._c = dealias.probedef_count
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_31_ScamperDealiasProbedefIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedefIterator_3, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[173])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4876, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 4876, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":4879
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         if self._i < self._c:
 *             pd = self._dealias.probedef(self._i)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_31_ScamperDealiasProbedefIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedefIterator_4, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[174])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4879, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 4879, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":4870
 *         raise StopIteration
 * 
 * class _ScamperDealiasProbedefIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, dealias):
 *         self._dealias = dealias
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedefIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 4870, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperDealiasProbedefIterator, __pyx_t_3) < 0) __PYX_ERR(0, 4870, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4965
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this alias resolution
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_5to_json, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_to_json, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[175])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4965, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_to_json, __pyx_t_2) < 0) __PYX_ERR(0, 4965, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4980
 *         return out
 * 
 *     def is_ally(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was ally
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_7is_ally, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_is_ally, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[176])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4980, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_is_ally, __pyx_t_2) < 0) __PYX_ERR(0, 4980, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4989
 *         return cscamper_dealias.scamper_dealias_method_is_ally(self._c)
 * 
 *     def is_mercator(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was mercator
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_9is_mercator, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_is_mercator, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[177])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4989, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_is_mercator, __pyx_t_2) < 0) __PYX_ERR(0, 4989, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":4998
 *         return cscamper_dealias.scamper_dealias_method_is_mercator(self._c)
 * 
 *     def is_prefixscan(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was prefixscan
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_11is_prefixscan, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_is_prefixscan, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[178])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 4998, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_is_prefixscan, __pyx_t_2) < 0) __PYX_ERR(0, 4998, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5007
 *         return cscamper_dealias.scamper_dealias_method_is_prefixscan(self._c)
 * 
 *     def is_radargun(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was radargun
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_13is_radargun, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_is_radargun, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[179])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_is_radargun, __pyx_t_2) < 0) __PYX_ERR(0, 5007, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5016
 *         return cscamper_dealias.scamper_dealias_method_is_radargun(self._c)
 * 
 *     def is_bump(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was bump
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_15is_bump, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_is_bump, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[180])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5016, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_is_bump, __pyx_t_2) < 0) __PYX_ERR(0, 5016, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5025
 *         return cscamper_dealias.scamper_dealias_method_is_bump(self._c)
 * 
 *     def is_midarest(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was midarest
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_17is_midarest, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_is_midarest, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[181])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_is_midarest, __pyx_t_2) < 0) __PYX_ERR(0, 5025, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5034
 *         return cscamper_dealias.scamper_dealias_method_is_midarest(self._c)
 * 
 *     def is_midardisc(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the alias resolution method was midardisc
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_19is_midardisc, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_is_midardisc, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[182])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5034, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_is_midardisc, __pyx_t_2) < 0) __PYX_ERR(0, 5034, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5043
 *         return cscamper_dealias.scamper_dealias_method_is_midardisc(self._c)
 * 
 *     def has_aliases(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if the method has aliases to return.  this
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_21has_aliases, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_has_aliases, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[183])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5043, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_has_aliases, __pyx_t_2) < 0) __PYX_ERR(0, 5043, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5053
 *         return cscamper_dealias.scamper_dealias_result_is_aliases(self._c)
 * 
 *     def aliases(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to return pairs of aliases inferred, if any.  this method
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_23aliases, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_aliases, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[184])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5053, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_aliases, __pyx_t_2) < 0) __PYX_ERR(0, 5053, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5098
 *         return None
 * 
 *     def probedef(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         probedef(i=0)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_25probedef, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_probedef, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[185])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5098, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[3]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_probedef, __pyx_t_2) < 0) __PYX_ERR(0, 5098, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5174
 *         return None
 * 
 *     def probedefs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator to process available probedefs.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_27probedefs, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_probedefs, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[186])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5174, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_probedefs, __pyx_t_2) < 0) __PYX_ERR(0, 5174, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5183
 *         return _ScamperDealiasProbedefIterator(self)
 * 
 *     def probe(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         probe(i=0)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_29probe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_probe, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[187])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5183, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[3]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_probe, __pyx_t_2) < 0) __PYX_ERR(0, 5183, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5207
 *         return cscamper_dealias.scamper_dealias_probec_get(self._c)
 * 
 *     def probes(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator to process available probes.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_31probes, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias_probes, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[188])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5207, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperDealias, __pyx_mstate_global->__pyx_n_u_probes, __pyx_t_2) < 0) __PYX_ERR(0, 5207, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_33__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[189])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperDealias_35__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperDealias___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[190])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5377
 *         return self._inst
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this neighbourdisc
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20ScamperNeighbourdisc_5to_json, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperNeighbourdisc_to_json, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[191])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5377, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperNeighbourdisc, __pyx_mstate_global->__pyx_n_u_to_json, __pyx_t_2) < 0) __PYX_ERR(0, 5377, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20ScamperNeighbourdisc_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperNeighbourdisc___reduce_cy, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[192])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20ScamperNeighbourdisc_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperNeighbourdisc___setstate, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[193])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5432
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def is_tx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the packet was transmitted by the
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTbitPkt_5is_tx, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTbitPkt_is_tx, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[194])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5432, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTbitPkt, __pyx_mstate_global->__pyx_n_u_is_tx, __pyx_t_2) < 0) __PYX_ERR(0, 5432, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5443
 *         return d == 1
 * 
 *     def is_rx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the packet was received by the
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTbitPkt_7is_rx, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTbitPkt_is_rx, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[195])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5443, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTbitPkt, __pyx_mstate_global->__pyx_n_u_is_rx, __pyx_t_2) < 0) __PYX_ERR(0, 5443, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTbitPkt_9__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTbitPkt___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[196])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperTbitPkt_11__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTbitPkt___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[197])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5583
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this TBIT measurement.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperTbit_11to_json, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTbit_to_json, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[198])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5583, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTbit, __pyx_mstate_global->__pyx_n_u_to_json, __pyx_t_2) < 0) __PYX_ERR(0, 5583, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperTbit_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTbit___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[199])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperTbit_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTbit___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[200])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperSting_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperSting___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[201])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperSting_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperSting___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[202])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperSniffPkt_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperSniffPkt___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[203])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperSniffPkt_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperSniffPkt___setstate_cytho, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[204])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":5913
 *         return cscamper_sniff.scamper_sniff_pktc_get(self._c)
 * 
 *     def pkt(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         pkt(i=0)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperSniff_11pkt, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperSniff_pkt, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[205])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 5913, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[3]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperSniff, __pyx_mstate_global->__pyx_n_u_pkt, __pyx_t_2) < 0) __PYX_ERR(0, 5913, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperSniff_13__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperSniff___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[206])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_12ScamperSniff_15__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperSniff___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[207])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_13ScamperHostMX_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostMX___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[208])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_13ScamperHostMX_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostMX___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[209])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHostSOA_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostSOA___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[210])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHostSOA_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostSOA___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[211])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":6133
 *         return cscamper_host.scamper_host_rr_txt_strc_get(self._c)
 * 
 *     def str(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a string from this TXT record.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHostTXT_9str, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostTXT_str, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[212])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6133, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostTXT, __pyx_mstate_global->__pyx_n_u_str_2, __pyx_t_2) < 0) __PYX_ERR(0, 6133, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHostTXT_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostTXT___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[213])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHostTXT_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostTXT___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[214])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperHostOPTElem_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostOPTElem___reduce_cyth, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[215])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_18ScamperHostOPTElem_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostOPTElem___setstate_cy, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[216])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":6258
 *         return cscamper_host.scamper_host_rr_opt_elemc_get(self._c)
 * 
 *     def elem(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a specific element from this OPT record.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHostOPT_9elem, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostOPT_elem, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[217])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6258, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostOPT, __pyx_mstate_global->__pyx_n_u_elem, __pyx_t_2) < 0) __PYX_ERR(0, 6258, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHostOPT_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostOPT___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[218])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHostOPT_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostOPT___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[219])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20ScamperHostSVCBParam_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostSVCBParam___reduce_cy, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[220])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20ScamperHostSVCBParam_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostSVCBParam___setstate, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[221])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":6408
 *         return cscamper_host.scamper_host_rr_svcb_paramc_get(self._c)
 * 
 *     def param(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a specific parameter from this SVCB record.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperHostSVCB_9param, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostSVCB_param, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[222])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6408, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostSVCB, __pyx_mstate_global->__pyx_n_u_param, __pyx_t_2) < 0) __PYX_ERR(0, 6408, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperHostSVCB_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostSVCB___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[223])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperHostSVCB_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostSVCB___setstate_cytho, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[224])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_13ScamperHostRR_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostRR___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[225])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_13ScamperHostRR_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostRR___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[226])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":6703
 *         return False
 * 
 * class _ScamperHostRRIterator:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`_ScamperHostRRIterator` class provides a convenient
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperHostRRIterator, __pyx_mstate_global->__pyx_n_u_ScamperHostRRIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_kp_u_The_class__ScamperHostRRIterato); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":6708
 *     interface to iterate over a given section in a DNS response.
 *     """
 *     def __init__(self, query, section, rrtypes):             # <<<<<<<<<<<<<<
 *         """
 *         Construct a _ScamperHostRRIterator object.
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22_ScamperHostRRIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperHostRRIterator___init, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[227])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6708, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 6708, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":6756
 *                     raise ValueError(f"cannot filter {rrtype}")
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22_ScamperHostRRIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperHostRRIterator___iter, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[228])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 6756, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":6759
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._index < self._count:
 *             if self._section == 0:
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_22_ScamperHostRRIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperHostRRIterator___next, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[229])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6759, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 6759, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":6703
 *         return False
 * 
 * class _ScamperHostRRIterator:             # <<<<<<<<<<<<<<
 *     """
 *     The :class:`_ScamperHostRRIterator` class provides a convenient
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperHostRRIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 6703, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperHostRRIterator, __pyx_t_3) < 0) __PYX_ERR(0, 6703, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":6930
 *         return cscamper_host.scamper_host_query_ancount_get(self._c)
 * 
 *     def an(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         an(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperHostQuery_5an, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostQuery_an, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[230])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6930, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostQuery, __pyx_mstate_global->__pyx_n_u_an, __pyx_t_2) < 0) __PYX_ERR(0, 6930, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":6951
 *         return cscamper_host.scamper_host_query_nscount_get(self._c)
 * 
 *     def ns(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ns(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperHostQuery_7ns, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostQuery_ns, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[231])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostQuery, __pyx_mstate_global->__pyx_n_u_ns, __pyx_t_2) < 0) __PYX_ERR(0, 6951, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":6972
 *         return cscamper_host.scamper_host_query_arcount_get(self._c)
 * 
 *     def ar(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ar(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperHostQuery_9ar, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostQuery_ar, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[232])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 6972, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHostQuery, __pyx_mstate_global->__pyx_n_u_ar, __pyx_t_2) < 0) __PYX_ERR(0, 6972, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperHostQuery_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostQuery___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[233])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperHostQuery_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHostQuery___setstate_cyth, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[234])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7138
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this DNS measurement.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_5to_json, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_to_json, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[235])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7138, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_to_json, __pyx_t_2) < 0) __PYX_ERR(0, 7138, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7318
 *         return self._q.ancount
 * 
 *     def an(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         an(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_7an, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_an, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[236])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_an, __pyx_t_2) < 0) __PYX_ERR(0, 7318, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7331
 *         return self._q.an(i)
 * 
 *     def ans(self, rrtypes=None):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a RR Iterator over the AN section of the first
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_9ans, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_ans, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[237])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[4]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_ans, __pyx_t_2) < 0) __PYX_ERR(0, 7331, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7354
 *         return self._q.nscount
 * 
 *     def ns(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ns(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_11ns, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_ns, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[238])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7354, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_ns, __pyx_t_2) < 0) __PYX_ERR(0, 7354, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7367
 *         return self._q.ns(i)
 * 
 *     def nss(self, rrtypes=None):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a RR Iterator over the NS section of the first
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_13nss, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_nss, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[239])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7367, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[4]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_nss, __pyx_t_2) < 0) __PYX_ERR(0, 7367, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7390
 *         return self._q.arcount
 * 
 *     def ar(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         ar(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_15ar, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_ar, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[240])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7390, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_ar, __pyx_t_2) < 0) __PYX_ERR(0, 7390, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7403
 *         return self._q.ar(i)
 * 
 *     def ars(self, rrtypes=None):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a RR Iterator over the AR section of the first
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_17ars, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_ars, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[241])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7403, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_mstate_global->__pyx_tuple[4]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_ars, __pyx_t_2) < 0) __PYX_ERR(0, 7403, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7413
 *         return _ScamperHostRRIterator(self._q, 2, rrtypes=None)
 * 
 *     def ans_addrs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all unique addresses returned
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_19ans_addrs, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_ans_addrs, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[242])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_ans_addrs, __pyx_t_2) < 0) __PYX_ERR(0, 7413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7426
 *         return list(addrs.keys())
 * 
 *     def ans_nses(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all unique nameservers returned
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_21ans_nses, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_ans_nses, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[243])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7426, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_ans_nses, __pyx_t_2) < 0) __PYX_ERR(0, 7426, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7439
 *         return list(nses.keys())
 * 
 *     def ans_ptrs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all unique PTR records returned
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_23ans_ptrs, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_ans_ptrs, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[244])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7439, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_ans_ptrs, __pyx_t_2) < 0) __PYX_ERR(0, 7439, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7452
 *         return list(ptrs.keys())
 * 
 *     def ans_txts(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all txt records returned
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_25ans_txts, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_ans_txts, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[245])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7452, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_ans_txts, __pyx_t_2) < 0) __PYX_ERR(0, 7452, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7465
 *         return txts
 * 
 *     def ans_mxes(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain all mx records returned
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_27ans_mxes, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost_ans_mxes, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[246])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7465, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHost, __pyx_mstate_global->__pyx_n_u_ans_mxes, __pyx_t_2) < 0) __PYX_ERR(0, 7465, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_29__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[247])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHost_31__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHost___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[248])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7587
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     def is_tx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk was transmitted.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHttpBuf_5is_tx, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttpBuf_is_tx, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[249])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7587, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttpBuf, __pyx_mstate_global->__pyx_n_u_is_tx, __pyx_t_2) < 0) __PYX_ERR(0, 7587, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7596
 *         return cscamper_http.scamper_http_buf_is_tx(self._c)
 * 
 *     def is_rx(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk was received.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHttpBuf_7is_rx, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttpBuf_is_rx, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[250])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7596, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttpBuf, __pyx_mstate_global->__pyx_n_u_is_rx, __pyx_t_2) < 0) __PYX_ERR(0, 7596, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7605
 *         return cscamper_http.scamper_http_buf_is_rx(self._c)
 * 
 *     def is_tls(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk is a TLS chunk.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHttpBuf_9is_tls, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttpBuf_is_tls, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[251])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7605, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttpBuf, __pyx_mstate_global->__pyx_n_u_is_tls, __pyx_t_2) < 0) __PYX_ERR(0, 7605, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7614
 *         return cscamper_http.scamper_http_buf_is_tls(self._c)
 * 
 *     def is_hdr(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk is an HTTP header chunk.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHttpBuf_11is_hdr, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttpBuf_is_hdr, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[252])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7614, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttpBuf, __pyx_mstate_global->__pyx_n_u_is_hdr, __pyx_t_2) < 0) __PYX_ERR(0, 7614, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7623
 *         return cscamper_http.scamper_http_buf_is_hdr(self._c)
 * 
 *     def is_data(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns True if the chunk is a data chunk.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHttpBuf_13is_data, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttpBuf_is_data, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[253])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7623, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttpBuf, __pyx_mstate_global->__pyx_n_u_is_data, __pyx_t_2) < 0) __PYX_ERR(0, 7623, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHttpBuf_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttpBuf___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[254])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_14ScamperHttpBuf_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttpBuf___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[255])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7648
 *         return ptr[:s]
 * 
 * class _ScamperHttpIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, http):
 *         self._http = http
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperHttpIterator, __pyx_mstate_global->__pyx_n_u_ScamperHttpIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":7649
 * 
 * class _ScamperHttpIterator:
 *     def __init__(self, http):             # <<<<<<<<<<<<<<
 *         self._http = http
 *         self._i = 0
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20_ScamperHttpIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperHttpIterator___init, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[256])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7649, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 7649, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":7653
 *         self._i = 0
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20_ScamperHttpIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperHttpIterator___iter, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[257])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7653, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 7653, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":7656
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         htb = self._http.buf(self._i)
 *         self._i += 1
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20_ScamperHttpIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperHttpIterator___next, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[258])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7656, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 7656, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":7648
 *         return ptr[:s]
 * 
 * class _ScamperHttpIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, http):
 *         self._http = http
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperHttpIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 7648, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperHttpIterator, __pyx_t_3) < 0) __PYX_ERR(0, 7648, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7951
 *         return out
 * 
 *     def response_hdr_byname(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the value of a response header, if present
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHttp_7response_hdr_byname, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttp_response_hdr_byname, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[259])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7951, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttp, __pyx_mstate_global->__pyx_n_u_response_hdr_byname, __pyx_t_2) < 0) __PYX_ERR(0, 7951, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":7977
 *         return out
 * 
 *     def transmit_hdr_byname(self, name):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain the value of a transmit header entry, if present
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHttp_9transmit_hdr_byname, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttp_transmit_hdr_byname, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[260])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 7977, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttp, __pyx_mstate_global->__pyx_n_u_transmit_hdr_byname, __pyx_t_2) < 0) __PYX_ERR(0, 7977, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8013
 *         return cscamper_http.scamper_http_bufc_get(self._c)
 * 
 *     def buf(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         buf(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHttp_11buf, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttp_buf, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[261])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8013, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttp, __pyx_mstate_global->__pyx_n_u_buf, __pyx_t_2) < 0) __PYX_ERR(0, 8013, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8025
 *         return ScamperHttpBuf.from_ptr(c)
 * 
 *     def bufs(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain an iterator that returns each buffer in
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHttp_13bufs, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttp_bufs, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[262])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8025, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperHttp, __pyx_mstate_global->__pyx_n_u_bufs, __pyx_t_2) < 0) __PYX_ERR(0, 8025, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHttp_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttp___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[263])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperHttp_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperHttp___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[264])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8035
 * #### Scamper Udpprobe Object
 * ####
 * class _ScamperUdpprobeReplyIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, up):
 *         self._up = up
*/
  __pyx_t_2 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReplyIterator, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReplyIterator, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":8036
 * ####
 * class _ScamperUdpprobeReplyIterator:
 *     def __init__(self, up):             # <<<<<<<<<<<<<<
 *         self._up = up
 *         self._pi = 0
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_29_ScamperUdpprobeReplyIterator_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReplyIterator_2, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[265])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8036, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_3) < 0) __PYX_ERR(0, 8036, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":8042
 *         self._ri = 0
 * 
 *     def __iter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_29_ScamperUdpprobeReplyIterator_3__iter__, 0, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReplyIterator_3, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[266])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_iter, __pyx_t_3) < 0) __PYX_ERR(0, 8042, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":8045
 *         return self
 * 
 *     def __next__(self):             # <<<<<<<<<<<<<<
 *         while self._pi < self._pc:
 *             probe = self._up.probe(self._pi)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_29_ScamperUdpprobeReplyIterator_5__next__, 0, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReplyIterator_4, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[267])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8045, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetNameInClass(__pyx_t_2, __pyx_mstate_global->__pyx_n_u_next, __pyx_t_3) < 0) __PYX_ERR(0, 8045, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":8035
 * #### Scamper Udpprobe Object
 * ####
 * class _ScamperUdpprobeReplyIterator:             # <<<<<<<<<<<<<<
 *     def __init__(self, up):
 *         self._up = up
*/
  __pyx_t_3 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReplyIterator, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_2, NULL, 0, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8035, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReplyIterator, __pyx_t_3) < 0) __PYX_ERR(0, 8035, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20ScamperUdpprobeReply_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReply___reduce_cy, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[268])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20ScamperUdpprobeReply_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeReply___setstate, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[269])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8190
 *         return cscamper_udpprobe.scamper_udpprobe_probe_replyc_get(self._c)
 * 
 *     def reply(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         reply(i)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20ScamperUdpprobeProbe_9reply, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeProbe_reply, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[270])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8190, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperUdpprobeProbe, __pyx_mstate_global->__pyx_n_u_reply, __pyx_t_2) < 0) __PYX_ERR(0, 8190, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20ScamperUdpprobeProbe_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeProbe___reduce_cy, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[271])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_20ScamperUdpprobeProbe_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobeProbe___setstate, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[272])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8294
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def to_json(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a JSON rendering of this UDP probe measurement.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperUdpprobe_9to_json, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobe_to_json, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[273])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8294, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperUdpprobe, __pyx_mstate_global->__pyx_n_u_to_json, __pyx_t_2) < 0) __PYX_ERR(0, 8294, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8385
 *         return cscamper_udpprobe.scamper_udpprobe_probe_sent_get(self._c)
 * 
 *     def probe(self, i):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a specific probe
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperUdpprobe_11probe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobe_probe, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[274])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8385, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperUdpprobe, __pyx_mstate_global->__pyx_n_u_probe, __pyx_t_2) < 0) __PYX_ERR(0, 8385, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8395
 *         return ScamperUdpprobeProbe.from_ptr(c)
 * 
 *     def replies(self):             # <<<<<<<<<<<<<<
 *         """
 *         get an Iterator that contains the replies obtained during the
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperUdpprobe_13replies, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobe_replies, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[275])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8395, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperUdpprobe, __pyx_mstate_global->__pyx_n_u_replies, __pyx_t_2) < 0) __PYX_ERR(0, 8395, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperUdpprobe_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobe___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[276])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_15ScamperUdpprobe_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperUdpprobe___setstate_cytho, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[277])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8478
 *         return o
 * 
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperFile_9__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperFile___enter, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[278])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8478, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperFile, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_2) < 0) __PYX_ERR(0, 8478, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8481
 *         return self
 * 
 *     def __exit__(self, exc_type, exc_val, exc_tb):             # <<<<<<<<<<<<<<
 *         pass
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperFile_11__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperFile___exit, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[279])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8481, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperFile, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_2) < 0) __PYX_ERR(0, 8481, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8496
 *         return buf.decode('UTF-8', 'strict')
 * 
 *     def close(self):             # <<<<<<<<<<<<<<
 *         """
 *         close the file
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperFile_13close, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperFile_close, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[280])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8496, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperFile, __pyx_mstate_global->__pyx_n_u_close, __pyx_t_2) < 0) __PYX_ERR(0, 8496, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8516
 *         return c.decode('UTF-8', 'strict')
 * 
 *     def filter_types(self, *types):             # <<<<<<<<<<<<<<
 *         """
 *         filter_types(*types)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperFile_15filter_types, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperFile_filter_types, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[281])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8516, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperFile, __pyx_mstate_global->__pyx_n_u_filter_types, __pyx_t_2) < 0) __PYX_ERR(0, 8516, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8579
 *         self._c_sff = c_sff
 * 
 *     def read(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to read the next object from the :class:`ScamperFile`.
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperFile_17read, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperFile_read, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[282])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8579, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperFile, __pyx_mstate_global->__pyx_n_u_read, __pyx_t_2) < 0) __PYX_ERR(0, 8579, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8643
 *         raise RuntimeError("unexpected object type " + o_type)
 * 
 *     def write(self, obj):             # <<<<<<<<<<<<<<
 *         """
 *         write(obj)
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperFile_19write, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperFile_write, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[283])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperFile, __pyx_mstate_global->__pyx_n_u_write, __pyx_t_2) < 0) __PYX_ERR(0, 8643, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8715
 *         return
 * 
 *     def is_write(self):             # <<<<<<<<<<<<<<
 *         return self._mode == ord('w')
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperFile_21is_write, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperFile_is_write, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[284])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8715, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperFile, __pyx_mstate_global->__pyx_n_u_is_write, __pyx_t_2) < 0) __PYX_ERR(0, 8715, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8718
 *         return self._mode == ord('w')
 * 
 *     def is_read(self):             # <<<<<<<<<<<<<<
 *         return self._mode == ord('r')
 * 
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperFile_23is_read, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperFile_is_read, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[285])); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8718, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperFile, __pyx_mstate_global->__pyx_n_u_is_read, __pyx_t_2) < 0) __PYX_ERR(0, 8718, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperFile_25__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperFile___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[286])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_2) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c_sf,self._c_sff cannot be converted to a Python object for pickling"
*/
  __pyx_t_2 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperFile_27__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperFile___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[287])); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_2) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "scamper.pyx":8721
 *         return self._mode == ord('r')
 * 
 * class ScamperInstError(Exception):             # <<<<<<<<<<<<<<
 *     def __init__(self, message, inst):
 *         super().__init__(message)
*/
  __pyx_t_2 = PyTuple_Pack(1, ((PyObject *)(((PyTypeObject*)PyExc_Exception)))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PEP560_update_bases(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_CalculateMetaclass(NULL, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_6 = __Pyx_Py3MetaclassPrepare(__pyx_t_5, __pyx_t_3, __pyx_mstate_global->__pyx_n_u_ScamperInstError, __pyx_mstate_global->__pyx_n_u_ScamperInstError, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 8721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_6);
  if (__pyx_t_3 != __pyx_t_2) {
    if (unlikely((PyDict_SetItemString(__pyx_t_6, "__orig_bases__", __pyx_t_2) < 0))) __PYX_ERR(0, 8721, __pyx_L1_error)
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 8721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_2);

  /* "scamper.pyx":8722
 * 
 * class ScamperInstError(Exception):
 *     def __init__(self, message, inst):             # <<<<<<<<<<<<<<
 *         super().__init__(message)
 *         self.inst = inst
*/
  __pyx_t_4 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16ScamperInstError_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperInstError___init, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[288])); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8722, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  PyList_Append(__pyx_t_2, __pyx_t_4);
  if (__Pyx_SetNameInClass(__pyx_t_6, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_4) < 0) __PYX_ERR(0, 8722, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

  /* "scamper.pyx":8721
 *         return self._mode == ord('r')
 * 
 * class ScamperInstError(Exception):             # <<<<<<<<<<<<<<
 *     def __init__(self, message, inst):
 *         super().__init__(message)
*/
  __pyx_t_4 = __Pyx_Py3ClassCreate(__pyx_t_5, __pyx_mstate_global->__pyx_n_u_ScamperInstError, __pyx_t_3, __pyx_t_6, NULL, 0, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 8721, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_4);
  if (__Pyx_CyFunction_InitClassCell(__pyx_t_2, __pyx_t_4) < 0) __PYX_ERR(0, 8721, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperInstError, __pyx_t_4) < 0) __PYX_ERR(0, 8721, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":8726
 *         self.inst = inst
 * 
 * class _ScamperInstData:             # <<<<<<<<<<<<<<
 *     def __init__(self, inst, data):
 *         self._inst = inst
*/
  __pyx_t_3 = __Pyx_Py3MetaclassPrepare((PyObject *) NULL, __pyx_mstate_global->__pyx_empty_tuple, __pyx_mstate_global->__pyx_n_u_ScamperInstData, __pyx_mstate_global->__pyx_n_u_ScamperInstData, (PyObject *) NULL, __pyx_mstate_global->__pyx_n_u_scamper, (PyObject *) NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);

  /* "scamper.pyx":8727
 * 
 * class _ScamperInstData:
 *     def __init__(self, inst, data):             # <<<<<<<<<<<<<<
 *         self._inst = inst
 *         self._data = data
*/
  __pyx_t_5 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_16_ScamperInstData_1__init__, 0, __pyx_mstate_global->__pyx_n_u_ScamperInstData___init, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[289])); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8727, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (__Pyx_SetNameInClass(__pyx_t_3, __pyx_mstate_global->__pyx_n_u_init, __pyx_t_5) < 0) __PYX_ERR(0, 8727, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "scamper.pyx":8726
 *         self.inst = inst
 * 
 * class _ScamperInstData:             # <<<<<<<<<<<<<<
 *     def __init__(self, inst, data):
 *         self._inst = inst
*/
  __pyx_t_5 = __Pyx_Py3ClassCreate(((PyObject*)&PyType_Type), __pyx_mstate_global->__pyx_n_u_ScamperInstData, __pyx_mstate_global->__pyx_empty_tuple, __pyx_t_3, NULL, 0, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 8726, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_5);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_ScamperInstData, __pyx_t_5) < 0) __PYX_ERR(0, 8726, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":8960
 *             clibscamperctrl.scamper_ctrl_free(self._c)
 * 
 *     def __enter__(self):             # <<<<<<<<<<<<<<
 *         return self
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_5__enter__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl___enter, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[290])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8960, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_enter, __pyx_t_3) < 0) __PYX_ERR(0, 8960, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":8963
 *         return self
 * 
 *     def __exit__(self, exc_type, exc_val, exc_tb):             # <<<<<<<<<<<<<<
 *         pass
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_7__exit__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl___exit, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[291])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8963, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_exit, __pyx_t_3) < 0) __PYX_ERR(0, 8963, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":8966
 *         pass
 * 
 *     def add_unix(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_unix(path)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_9add_unix, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_add_unix, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[292])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8966, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_add_unix, __pyx_t_3) < 0) __PYX_ERR(0, 8966, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":8990
 *         return inst
 * 
 *     def add_inet(self, port, addr=None):             # <<<<<<<<<<<<<<
 *         """
 *         add_inet(port, addr=None)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_11add_inet, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_add_inet, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[293])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 8990, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[4]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_add_inet, __pyx_t_3) < 0) __PYX_ERR(0, 8990, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9019
 *         return inst
 * 
 *     def add_remote(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_remote(path)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_13add_remote, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_add_remote, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[294])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9019, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_add_remote, __pyx_t_3) < 0) __PYX_ERR(0, 9019, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9042
 *         return inst
 * 
 *     def add_remote_dir(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_remote_dir(path)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_15add_remote_dir, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_add_remote_dir, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[295])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9042, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_add_remote_dir, __pyx_t_3) < 0) __PYX_ERR(0, 9042, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9059
 *             self._insts.append(inst)
 * 
 *     def add_mux(self, path):             # <<<<<<<<<<<<<<
 *         """
 *         add_mux(path)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_17add_mux, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_add_mux, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[296])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9059, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_add_mux, __pyx_t_3) < 0) __PYX_ERR(0, 9059, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9075
 *         self._muxs.append(mux)
 * 
 *     def _add_vp(self, vp):             # <<<<<<<<<<<<<<
 *         c = clibscamperctrl.scamper_inst_vp(self._c, (<ScamperVp>vp)._c)
 *         if c == NULL:
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_19_add_vp, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl__add_vp, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[297])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9075, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_add_vp, __pyx_t_3) < 0) __PYX_ERR(0, 9075, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9083
 *         return inst
 * 
 *     def add_vps(self, vps):             # <<<<<<<<<<<<<<
 *         insts = []
 *         if isinstance(vps, list):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_21add_vps, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_add_vps, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[298])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9083, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_add_vps, __pyx_t_3) < 0) __PYX_ERR(0, 9083, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9101
 *         return insts
 * 
 *     def exceptions(self):             # <<<<<<<<<<<<<<
 *         """
 *         exceptions()
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_23exceptions, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_exceptions, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[1])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9101, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_exceptions, __pyx_t_3) < 0) __PYX_ERR(0, 9101, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9110
 *             yield self._exceptions.pop(0)
 * 
 *     def responses(self, timeout=None, until=None):             # <<<<<<<<<<<<<<
 *         """
 *         responses(timeout=None, until=None)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_26responses, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_responses, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[2])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[5]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_responses, __pyx_t_3) < 0) __PYX_ERR(0, 9110, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9180
 *             clibscamperctrl.scamper_ctrl_wait(self._c, tv_ptr)
 * 
 *     def poll(self, timeout=None, until=None):             # <<<<<<<<<<<<<<
 *         """
 *         poll(timeout=None, until=None)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_29poll, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_poll, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[299])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9180, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[5]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_poll, __pyx_t_3) < 0) __PYX_ERR(0, 9180, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9263
 *         return None
 * 
 *     def done(self):             # <<<<<<<<<<<<<<
 *         """
 *         signal done on all instances.
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_31done, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_done, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[300])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9263, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_done, __pyx_t_3) < 0) __PYX_ERR(0, 9263, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9270
 *             i.done()
 * 
 *     def vps(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a list of vantage points available to this
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_33vps, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_vps, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[301])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9270, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_vps, __pyx_t_3) < 0) __PYX_ERR(0, 9270, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9280
 *         return vps
 * 
 *     def instances(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method that returns a list of :class:`ScamperInst` managed by
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_35instances, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_instances, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[302])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9280, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_instances, __pyx_t_3) < 0) __PYX_ERR(0, 9280, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9335
 *         return len(self._insts)
 * 
 *     def _getinst(self, inst, primitive, sync, listallowed=True):             # <<<<<<<<<<<<<<
 *         if inst is not None:
 *             if isinstance(inst, list):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_37_getinst, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl__getinst, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[303])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9335, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[2]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_getinst, __pyx_t_3) < 0) __PYX_ERR(0, 9335, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9391
 *             return t
 * 
 *     def _dotasks(self, cmd, inst, sync):             # <<<<<<<<<<<<<<
 *         cstr = cmd.encode('UTF-8')
 * 
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_39_dotasks, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl__dotasks, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[304])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9391, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_dotasks, __pyx_t_3) < 0) __PYX_ERR(0, 9391, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9413
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying trace command
 *     def do_trace(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_41do_trace, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_trace, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[305])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[6]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_trace, __pyx_t_3) < 0) __PYX_ERR(0, 9413, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9541
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_43do_tracelb, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_tracelb, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[306])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[7]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_tracelb, __pyx_t_3) < 0) __PYX_ERR(0, 9541, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9636
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying ping command
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,             # <<<<<<<<<<<<<<
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_45do_ping, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_ping, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[307])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[8]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_ping, __pyx_t_3) < 0) __PYX_ERR(0, 9636, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9788
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,             # <<<<<<<<<<<<<<
 *                attempts=None, rd=None, wait_timeout=None, tcp=None,
 *                nsid=None, ecs=None, userid=None, inst=None, sync=False):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_47do_dns, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_dns, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[308])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[9]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_dns, __pyx_t_3) < 0) __PYX_ERR(0, 9788, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9854
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,             # <<<<<<<<<<<<<<
 *                 sport=None, method=None, attempts=None, wait_probe=None,
 *                 wait_timeout=None, userid=None, inst=None, sync=False):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_49do_ally, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_ally, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[309])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[10]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_ally, __pyx_t_3) < 0) __PYX_ERR(0, 9854, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9953
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_mercator(self, dst, userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_mercator(dst, userid=None, inst=None, sync=False)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_51do_mercator, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_mercator, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[310])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[11]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_mercator, __pyx_t_3) < 0) __PYX_ERR(0, 9953, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":9978
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,             # <<<<<<<<<<<<<<
 *                     wait_timeout=None, probedefs=None, addrs=None,
 *                     userid=None, inst=None, sync=False):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_53do_midarest, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_midarest, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[311])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 9978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[12]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_midarest, __pyx_t_3) < 0) __PYX_ERR(0, 9978, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10054
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midardisc(self, probedefs=None, schedule=None,             # <<<<<<<<<<<<<<
 *                      startat=None, wait_timeout=None,
 *                      userid=None, inst=None, sync=False):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_55do_midardisc, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_midardisc, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[312])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[13]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_midardisc, __pyx_t_3) < 0) __PYX_ERR(0, 10054, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10116
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_radargun(self, addrs=None, rounds=None, probedefs=None,             # <<<<<<<<<<<<<<
 *                     wait_probe=None, wait_round=None, wait_timeout=None,
 *                     userid=None, inst=None, sync=False):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_57do_radargun, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_radargun, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[313])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10116, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[12]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_radargun, __pyx_t_3) < 0) __PYX_ERR(0, 10116, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10201
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_prefixscan(self, near, far, prefixlen, fudge=None,             # <<<<<<<<<<<<<<
 *                       icmp_sum=None, dport=None, sport=None, method=None,
 *                       attempts=None, wait_probe=None, wait_timeout=None,
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_59do_prefixscan, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_prefixscan, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[314])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10201, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[10]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_prefixscan, __pyx_t_3) < 0) __PYX_ERR(0, 10201, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10311
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_sniff(self, src, icmp_id, limit_pkt_count=None, limit_time=None,             # <<<<<<<<<<<<<<
 *                  userid=None, inst=None, sync=False):
 *         """
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_61do_sniff, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_sniff, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[315])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[14]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_sniff, __pyx_t_3) < 0) __PYX_ERR(0, 10311, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10355
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_http(self, dst, url, headers=None, insecure=False, limit_time=None,             # <<<<<<<<<<<<<<
 *                 userid=None, inst=None, sync=False):
 *         """
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_63do_http, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_http, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[316])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[15]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_http, __pyx_t_3) < 0) __PYX_ERR(0, 10355, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10410
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_udpprobe(self, dst, dport, payload, attempts=None, src=None,             # <<<<<<<<<<<<<<
 *                     stop_count=None, inst=None, userid=None, sync=False):
 *         """
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_65do_udpprobe, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_udpprobe, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[317])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[16]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_udpprobe, __pyx_t_3) < 0) __PYX_ERR(0, 10410, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10456
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tbit(self, dst, method=None, url=None,             # <<<<<<<<<<<<<<
 *                 inst=None, userid=None, sync=False):
 *         """
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_67do_tbit, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_do_tbit, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[318])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10456, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_3, __pyx_mstate_global->__pyx_tuple[14]);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_do_tbit, __pyx_t_3) < 0) __PYX_ERR(0, 10456, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10491
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def is_done(self):             # <<<<<<<<<<<<<<
 *         """
 *         get method to determine if all of the :class:`ScamperInst` have
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_69is_done, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl_is_done, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[319])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10491, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperCtrl, __pyx_mstate_global->__pyx_n_u_is_done, __pyx_t_3) < 0) __PYX_ERR(0, 10491, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_71__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[320])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_synctask cannot be converted to a Python object for pickling"
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperCtrl_73__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperCtrl___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[321])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10517
 *         return mux
 * 
 *     def vps(self):             # <<<<<<<<<<<<<<
 *         vps = []
 *         vpset = clibscamperctrl.scamper_vpset_get(self._c)
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_10ScamperMux_3vps, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperMux_vps, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[322])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10517, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperMux, __pyx_mstate_global->__pyx_n_u_vps, __pyx_t_3) < 0) __PYX_ERR(0, 10517, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_10ScamperMux_5__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperMux___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[323])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_10ScamperMux_7__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperMux___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[324])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_9ScamperVp_7__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperVp___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[325])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c cannot be converted to a Python object for pickling"
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_9ScamperVp_9__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperVp___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[326])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10874
 *         return self._queued
 * 
 *     def done(self):             # <<<<<<<<<<<<<<
 *         """
 *         signal that there are no further measurements to come on this
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperInst_11done, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperInst_done, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[327])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10874, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst, __pyx_mstate_global->__pyx_n_u_done, __pyx_t_3) < 0) __PYX_ERR(0, 10874, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10881
 *         clibscamperctrl.scamper_inst_done(self._c)
 * 
 *     def is_eof(self):             # <<<<<<<<<<<<<<
 *         """
 *         check if the instance has signalled eof.
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperInst_13is_eof, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperInst_is_eof, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[328])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10881, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperInst, __pyx_mstate_global->__pyx_n_u_is_eof, __pyx_t_3) < 0) __PYX_ERR(0, 10881, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperInst_15__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperInst___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[329])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_f,self._c_rb cannot be converted to a Python object for pickling"
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperInst_17__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperInst___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[330])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":10931
 *         return task
 * 
 *     def halt(self):             # <<<<<<<<<<<<<<
 *         """
 *         halt a measurement underway
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperTask_9halt, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTask_halt, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[331])); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 10931, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (__Pyx_SetItemOnTypeDict(__pyx_mstate_global->__pyx_ptype_7scamper_ScamperTask, __pyx_mstate_global->__pyx_n_u_halt, __pyx_t_3) < 0) __PYX_ERR(0, 10931, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":1
 * def __reduce_cython__(self):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperTask_11__reduce_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTask___reduce_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[332])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_reduce_cython, __pyx_t_3) < 0) __PYX_ERR(1, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "(tree fragment)":3
 * def __reduce_cython__(self):
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
 * def __setstate_cython__(self, __pyx_state):             # <<<<<<<<<<<<<<
 *     raise TypeError, "self._c,self._c_i cannot be converted to a Python object for pickling"
*/
  __pyx_t_3 = __Pyx_CyFunction_New(&__pyx_mdef_7scamper_11ScamperTask_13__setstate_cython__, __Pyx_CYFUNCTION_CCLASS, __pyx_mstate_global->__pyx_n_u_ScamperTask___setstate_cython, NULL, __pyx_mstate_global->__pyx_n_u_scamper, __pyx_mstate_global->__pyx_d, ((PyObject *)__pyx_mstate_global->__pyx_codeobj_tab[333])); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_setstate_cython, __pyx_t_3) < 0) __PYX_ERR(1, 3, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "scamper.pyx":1
 * # scamper python interface             # <<<<<<<<<<<<<<
 * #
 * # Author: Matthew Luckie
*/
  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_mstate_global->__pyx_d, __pyx_mstate_global->__pyx_n_u_test, __pyx_t_3) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /*--- Wrapped vars code ---*/

  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  if (__pyx_m) {
    if (__pyx_mstate->__pyx_d && stringtab_initialized) {
      __Pyx_AddTraceback("init scamper", __pyx_clineno, __pyx_lineno, __pyx_filename);
    }
    #if !CYTHON_USE_MODULE_STATE
    Py_CLEAR(__pyx_m);
    #else
    Py_DECREF(__pyx_m);
    if (pystate_addmodule_run) {
      PyObject *tp, *value, *tb;
      PyErr_Fetch(&tp, &value, &tb);
      PyState_RemoveModule(&__pyx_moduledef);
      PyErr_Restore(tp, value, tb);
    }
    #endif
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init scamper");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if CYTHON_PEP489_MULTI_PHASE_INIT
  return (__pyx_m != NULL) ? 0 : -1;
  #else
  return __pyx_m;
  #endif
}
/* #### Code section: pystring_table ### */

typedef struct {
    const char *s;
#if 141 <= 65535
    const unsigned short n;
#elif 141 / 2 < INT_MAX
    const unsigned int n;
#elif 141 / 2 < LONG_MAX
    const unsigned long n;
#else
    const Py_ssize_t n;
#endif
#if 1 <= 31
    const unsigned int encoding : 5;
#elif 1 <= 255
    const unsigned char encoding;
#elif 1 <= 65535
    const unsigned short encoding;
#else
    const Py_ssize_t encoding;
#endif
    const unsigned int is_unicode : 1;
    const unsigned int intern : 1;
} __Pyx_StringTabEntry;
static const char * const __pyx_string_tab_encodings[] = { 0 };
static const __Pyx_StringTabEntry __pyx_string_tab[] = {
  {__pyx_k_, sizeof(__pyx_k_), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ */
  {__pyx_k_03d, sizeof(__pyx_k_03d), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_03d */
  {__pyx_k_06, sizeof(__pyx_k_06), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_06 */
  {__pyx_k_06d, sizeof(__pyx_k_06d), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_06d */
  {__pyx_k_A, sizeof(__pyx_k_A), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_A */
  {__pyx_k_AAAA, sizeof(__pyx_k_AAAA), 0, 1, 1}, /* PyObject cname: __pyx_n_u_AAAA */
  {__pyx_k_A_2, sizeof(__pyx_k_A_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_A_2 */
  {__pyx_k_A_class_ScamperIcmpMplsLabelSta, sizeof(__pyx_k_A_class_ScamperIcmpMplsLabelSta), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_A_class_ScamperIcmpMplsLabelSta */
  {__pyx_k_B, sizeof(__pyx_k_B), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_B */
  {__pyx_k_C, sizeof(__pyx_k_C), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_C */
  {__pyx_k_CNAME, sizeof(__pyx_k_CNAME), 0, 1, 1}, /* PyObject cname: __pyx_n_u_CNAME */
  {__pyx_k_Completed, sizeof(__pyx_k_Completed), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Completed */
  {__pyx_k_DNSKEY, sizeof(__pyx_k_DNSKEY), 0, 1, 1}, /* PyObject cname: __pyx_n_u_DNSKEY */
  {__pyx_k_DS, sizeof(__pyx_k_DS), 0, 1, 1}, /* PyObject cname: __pyx_n_u_DS */
  {__pyx_k_Error, sizeof(__pyx_k_Error), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Error */
  {__pyx_k_Exp, sizeof(__pyx_k_Exp), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Exp */
  {__pyx_k_F, sizeof(__pyx_k_F), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_F */
  {__pyx_k_F_2, sizeof(__pyx_k_F_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_F_2 */
  {__pyx_k_G, sizeof(__pyx_k_G), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_G */
  {__pyx_k_GSS, sizeof(__pyx_k_GSS), 0, 1, 1}, /* PyObject cname: __pyx_n_u_GSS */
  {__pyx_k_GapLimit, sizeof(__pyx_k_GapLimit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_GapLimit */
  {__pyx_k_Gaplimit, sizeof(__pyx_k_Gaplimit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Gaplimit */
  {__pyx_k_H, sizeof(__pyx_k_H), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_H */
  {__pyx_k_Halted, sizeof(__pyx_k_Halted), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Halted */
  {__pyx_k_HopLimit, sizeof(__pyx_k_HopLimit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_HopLimit */
  {__pyx_k_ICMP, sizeof(__pyx_k_ICMP), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ICMP */
  {__pyx_k_Icmp, sizeof(__pyx_k_Icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Icmp */
  {__pyx_k_IcmpEcho, sizeof(__pyx_k_IcmpEcho), 0, 1, 1}, /* PyObject cname: __pyx_n_u_IcmpEcho */
  {__pyx_k_IntEnum, sizeof(__pyx_k_IntEnum), 0, 1, 1}, /* PyObject cname: __pyx_n_u_IntEnum */
  {__pyx_k_LimitPktC, sizeof(__pyx_k_LimitPktC), 0, 1, 1}, /* PyObject cname: __pyx_n_u_LimitPktC */
  {__pyx_k_LimitTime, sizeof(__pyx_k_LimitTime), 0, 1, 1}, /* PyObject cname: __pyx_n_u_LimitTime */
  {__pyx_k_Loop, sizeof(__pyx_k_Loop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Loop */
  {__pyx_k_M, sizeof(__pyx_k_M), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_M */
  {__pyx_k_MPLS_Label, sizeof(__pyx_k_MPLS_Label), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_MPLS_Label */
  {__pyx_k_MX, sizeof(__pyx_k_MX), 0, 1, 1}, /* PyObject cname: __pyx_n_u_MX */
  {__pyx_k_M_2, sizeof(__pyx_k_M_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_M_2 */
  {__pyx_k_MemoryError, sizeof(__pyx_k_MemoryError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_MemoryError */
  {__pyx_k_N, sizeof(__pyx_k_N), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_N */
  {__pyx_k_NS, sizeof(__pyx_k_NS), 0, 1, 1}, /* PyObject cname: __pyx_n_u_NS */
  {__pyx_k_NSEC, sizeof(__pyx_k_NSEC), 0, 1, 1}, /* PyObject cname: __pyx_n_u_NSEC */
  {__pyx_k_NoReason, sizeof(__pyx_k_NoReason), 0, 1, 1}, /* PyObject cname: __pyx_n_u_NoReason */
  {__pyx_k_None, sizeof(__pyx_k_None), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_None */
  {__pyx_k_NotImplemented, sizeof(__pyx_k_NotImplemented), 0, 1, 1}, /* PyObject cname: __pyx_n_u_NotImplemented */
  {__pyx_k_O_dltx, sizeof(__pyx_k_O_dltx), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_O_dltx */
  {__pyx_k_O_insecure, sizeof(__pyx_k_O_insecure), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_O_insecure */
  {__pyx_k_O_inseq, sizeof(__pyx_k_O_inseq), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_O_inseq */
  {__pyx_k_O_nsid, sizeof(__pyx_k_O_nsid), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_O_nsid */
  {__pyx_k_O_ptr, sizeof(__pyx_k_O_ptr), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_O_ptr */
  {__pyx_k_O_subnet, sizeof(__pyx_k_O_subnet), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_O_subnet */
  {__pyx_k_P, sizeof(__pyx_k_P), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_P */
  {__pyx_k_PTR, sizeof(__pyx_k_PTR), 0, 1, 1}, /* PyObject cname: __pyx_n_u_PTR */
  {__pyx_k_Q, sizeof(__pyx_k_Q), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_Q */
  {__pyx_k_R, sizeof(__pyx_k_R), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_R */
  {__pyx_k_RRSIG, sizeof(__pyx_k_RRSIG), 0, 1, 1}, /* PyObject cname: __pyx_n_u_RRSIG */
  {__pyx_k_R_2, sizeof(__pyx_k_R_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_R_2 */
  {__pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_RuntimeError */
  {__pyx_k_S, sizeof(__pyx_k_S), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_S */
  {__pyx_k_SCAMPER_CTRL_TYPE_DATA, sizeof(__pyx_k_SCAMPER_CTRL_TYPE_DATA), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_CTRL_TYPE_DATA */
  {__pyx_k_SCAMPER_CTRL_TYPE_EOF, sizeof(__pyx_k_SCAMPER_CTRL_TYPE_EOF), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_CTRL_TYPE_EOF */
  {__pyx_k_SCAMPER_CTRL_TYPE_ERR, sizeof(__pyx_k_SCAMPER_CTRL_TYPE_ERR), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_CTRL_TYPE_ERR */
  {__pyx_k_SCAMPER_CTRL_TYPE_FATAL, sizeof(__pyx_k_SCAMPER_CTRL_TYPE_FATAL), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_CTRL_TYPE_FATAL */
  {__pyx_k_SCAMPER_CTRL_TYPE_MORE, sizeof(__pyx_k_SCAMPER_CTRL_TYPE_MORE), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_CTRL_TYPE_MORE */
  {__pyx_k_SCAMPER_FILE_OBJ_ADDR, sizeof(__pyx_k_SCAMPER_FILE_OBJ_ADDR), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_ADDR */
  {__pyx_k_SCAMPER_FILE_OBJ_CYCLE_DEF, sizeof(__pyx_k_SCAMPER_FILE_OBJ_CYCLE_DEF), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_DEF */
  {__pyx_k_SCAMPER_FILE_OBJ_CYCLE_START, sizeof(__pyx_k_SCAMPER_FILE_OBJ_CYCLE_START), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_START */
  {__pyx_k_SCAMPER_FILE_OBJ_CYCLE_STOP, sizeof(__pyx_k_SCAMPER_FILE_OBJ_CYCLE_STOP), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_CYCLE_STOP */
  {__pyx_k_SCAMPER_FILE_OBJ_DEALIAS, sizeof(__pyx_k_SCAMPER_FILE_OBJ_DEALIAS), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_DEALIAS */
  {__pyx_k_SCAMPER_FILE_OBJ_HOST, sizeof(__pyx_k_SCAMPER_FILE_OBJ_HOST), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_HOST */
  {__pyx_k_SCAMPER_FILE_OBJ_HTTP, sizeof(__pyx_k_SCAMPER_FILE_OBJ_HTTP), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_HTTP */
  {__pyx_k_SCAMPER_FILE_OBJ_LIST, sizeof(__pyx_k_SCAMPER_FILE_OBJ_LIST), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_LIST */
  {__pyx_k_SCAMPER_FILE_OBJ_NEIGHBOURDISC, sizeof(__pyx_k_SCAMPER_FILE_OBJ_NEIGHBOURDISC), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_NEIGHBOURDISC */
  {__pyx_k_SCAMPER_FILE_OBJ_PING, sizeof(__pyx_k_SCAMPER_FILE_OBJ_PING), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_PING */
  {__pyx_k_SCAMPER_FILE_OBJ_SNIFF, sizeof(__pyx_k_SCAMPER_FILE_OBJ_SNIFF), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_SNIFF */
  {__pyx_k_SCAMPER_FILE_OBJ_STING, sizeof(__pyx_k_SCAMPER_FILE_OBJ_STING), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_STING */
  {__pyx_k_SCAMPER_FILE_OBJ_TBIT, sizeof(__pyx_k_SCAMPER_FILE_OBJ_TBIT), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_TBIT */
  {__pyx_k_SCAMPER_FILE_OBJ_TRACE, sizeof(__pyx_k_SCAMPER_FILE_OBJ_TRACE), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_TRACE */
  {__pyx_k_SCAMPER_FILE_OBJ_TRACELB, sizeof(__pyx_k_SCAMPER_FILE_OBJ_TRACELB), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_TRACELB */
  {__pyx_k_SCAMPER_FILE_OBJ_UDPPROBE, sizeof(__pyx_k_SCAMPER_FILE_OBJ_UDPPROBE), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_FILE_OBJ_UDPPROBE */
  {__pyx_k_SCAMPER_HOST_CLASS_IN, sizeof(__pyx_k_SCAMPER_HOST_CLASS_IN), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_HOST_CLASS_IN */
  {__pyx_k_SCAMPER_PING_REPLY_FLAG_PROBE_IP, sizeof(__pyx_k_SCAMPER_PING_REPLY_FLAG_PROBE_IP), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_PING_REPLY_FLAG_PROBE_IP */
  {__pyx_k_SCAMPER_PING_REPLY_FLAG_REPLY_IP, sizeof(__pyx_k_SCAMPER_PING_REPLY_FLAG_REPLY_IP), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_PING_REPLY_FLAG_REPLY_IP */
  {__pyx_k_SCAMPER_PING_REPLY_FLAG_REPLY_TT, sizeof(__pyx_k_SCAMPER_PING_REPLY_FLAG_REPLY_TT), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_PING_REPLY_FLAG_REPLY_TT */
  {__pyx_k_SCAMPER_TRACE_FLAG_RXERR, sizeof(__pyx_k_SCAMPER_TRACE_FLAG_RXERR), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_TRACE_FLAG_RXERR */
  {__pyx_k_SCAMPER_TRACE_REPLY_FLAG_REPLY_T, sizeof(__pyx_k_SCAMPER_TRACE_REPLY_FLAG_REPLY_T), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_TRACE_REPLY_FLAG_REPLY_T */
  {__pyx_k_SCAMPER_TRACE_TYPE_ICMP_ECHO_PAR, sizeof(__pyx_k_SCAMPER_TRACE_TYPE_ICMP_ECHO_PAR), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SCAMPER_TRACE_TYPE_ICMP_ECHO_PAR */
  {__pyx_k_SOA, sizeof(__pyx_k_SOA), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SOA */
  {__pyx_k_SSHFP, sizeof(__pyx_k_SSHFP), 0, 1, 1}, /* PyObject cname: __pyx_n_u_SSHFP */
  {__pyx_k_S_2, sizeof(__pyx_k_S_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_S_2 */
  {__pyx_k_S_ISSOCK, sizeof(__pyx_k_S_ISSOCK), 0, 1, 1}, /* PyObject cname: __pyx_n_u_S_ISSOCK */
  {__pyx_k_ScamperAddr, sizeof(__pyx_k_ScamperAddr), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ScamperAddr */
  {__pyx_k_ScamperAddr_2, sizeof(__pyx_k_ScamperAddr_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr_2 */
  {__pyx_k_ScamperAddr___format, sizeof(__pyx_k_ScamperAddr___format), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr___format */
  {__pyx_k_ScamperAddr___reduce_cython, sizeof(__pyx_k_ScamperAddr___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr___reduce_cython */
  {__pyx_k_ScamperAddr___setstate_cython, sizeof(__pyx_k_ScamperAddr___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr___setstate_cython */
  {__pyx_k_ScamperAddr_is_6to4, sizeof(__pyx_k_ScamperAddr_is_6to4), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr_is_6to4 */
  {__pyx_k_ScamperAddr_is_ipv4, sizeof(__pyx_k_ScamperAddr_is_ipv4), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr_is_ipv4 */
  {__pyx_k_ScamperAddr_is_ipv6, sizeof(__pyx_k_ScamperAddr_is_ipv6), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr_is_ipv6 */
  {__pyx_k_ScamperAddr_is_linklocal, sizeof(__pyx_k_ScamperAddr_is_linklocal), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr_is_linklocal */
  {__pyx_k_ScamperAddr_is_reserved, sizeof(__pyx_k_ScamperAddr_is_reserved), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr_is_reserved */
  {__pyx_k_ScamperAddr_is_rfc1918, sizeof(__pyx_k_ScamperAddr_is_rfc1918), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr_is_rfc1918 */
  {__pyx_k_ScamperAddr_is_unicast, sizeof(__pyx_k_ScamperAddr_is_unicast), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperAddr_is_unicast */
  {__pyx_k_ScamperCtrl, sizeof(__pyx_k_ScamperCtrl), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl */
  {__pyx_k_ScamperCtrl___enter, sizeof(__pyx_k_ScamperCtrl___enter), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl___enter */
  {__pyx_k_ScamperCtrl___exit, sizeof(__pyx_k_ScamperCtrl___exit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl___exit */
  {__pyx_k_ScamperCtrl___reduce_cython, sizeof(__pyx_k_ScamperCtrl___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl___reduce_cython */
  {__pyx_k_ScamperCtrl___setstate_cython, sizeof(__pyx_k_ScamperCtrl___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl___setstate_cython */
  {__pyx_k_ScamperCtrl__add_vp, sizeof(__pyx_k_ScamperCtrl__add_vp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl__add_vp */
  {__pyx_k_ScamperCtrl__dotasks, sizeof(__pyx_k_ScamperCtrl__dotasks), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl__dotasks */
  {__pyx_k_ScamperCtrl__getinst, sizeof(__pyx_k_ScamperCtrl__getinst), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl__getinst */
  {__pyx_k_ScamperCtrl_add_inet, sizeof(__pyx_k_ScamperCtrl_add_inet), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_add_inet */
  {__pyx_k_ScamperCtrl_add_mux, sizeof(__pyx_k_ScamperCtrl_add_mux), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_add_mux */
  {__pyx_k_ScamperCtrl_add_remote, sizeof(__pyx_k_ScamperCtrl_add_remote), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_add_remote */
  {__pyx_k_ScamperCtrl_add_remote_dir, sizeof(__pyx_k_ScamperCtrl_add_remote_dir), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_add_remote_dir */
  {__pyx_k_ScamperCtrl_add_unix, sizeof(__pyx_k_ScamperCtrl_add_unix), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_add_unix */
  {__pyx_k_ScamperCtrl_add_vps, sizeof(__pyx_k_ScamperCtrl_add_vps), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_add_vps */
  {__pyx_k_ScamperCtrl_do_ally, sizeof(__pyx_k_ScamperCtrl_do_ally), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_ally */
  {__pyx_k_ScamperCtrl_do_dns, sizeof(__pyx_k_ScamperCtrl_do_dns), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_dns */
  {__pyx_k_ScamperCtrl_do_http, sizeof(__pyx_k_ScamperCtrl_do_http), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_http */
  {__pyx_k_ScamperCtrl_do_mercator, sizeof(__pyx_k_ScamperCtrl_do_mercator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_mercator */
  {__pyx_k_ScamperCtrl_do_midardisc, sizeof(__pyx_k_ScamperCtrl_do_midardisc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_midardisc */
  {__pyx_k_ScamperCtrl_do_midarest, sizeof(__pyx_k_ScamperCtrl_do_midarest), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_midarest */
  {__pyx_k_ScamperCtrl_do_ping, sizeof(__pyx_k_ScamperCtrl_do_ping), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_ping */
  {__pyx_k_ScamperCtrl_do_prefixscan, sizeof(__pyx_k_ScamperCtrl_do_prefixscan), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_prefixscan */
  {__pyx_k_ScamperCtrl_do_radargun, sizeof(__pyx_k_ScamperCtrl_do_radargun), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_radargun */
  {__pyx_k_ScamperCtrl_do_sniff, sizeof(__pyx_k_ScamperCtrl_do_sniff), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_sniff */
  {__pyx_k_ScamperCtrl_do_tbit, sizeof(__pyx_k_ScamperCtrl_do_tbit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_tbit */
  {__pyx_k_ScamperCtrl_do_trace, sizeof(__pyx_k_ScamperCtrl_do_trace), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_trace */
  {__pyx_k_ScamperCtrl_do_tracelb, sizeof(__pyx_k_ScamperCtrl_do_tracelb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_tracelb */
  {__pyx_k_ScamperCtrl_do_udpprobe, sizeof(__pyx_k_ScamperCtrl_do_udpprobe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_do_udpprobe */
  {__pyx_k_ScamperCtrl_done, sizeof(__pyx_k_ScamperCtrl_done), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_done */
  {__pyx_k_ScamperCtrl_exceptions, sizeof(__pyx_k_ScamperCtrl_exceptions), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_exceptions */
  {__pyx_k_ScamperCtrl_instances, sizeof(__pyx_k_ScamperCtrl_instances), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_instances */
  {__pyx_k_ScamperCtrl_is_done, sizeof(__pyx_k_ScamperCtrl_is_done), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_is_done */
  {__pyx_k_ScamperCtrl_poll, sizeof(__pyx_k_ScamperCtrl_poll), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_poll */
  {__pyx_k_ScamperCtrl_responses, sizeof(__pyx_k_ScamperCtrl_responses), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_responses */
  {__pyx_k_ScamperCtrl_vps, sizeof(__pyx_k_ScamperCtrl_vps), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCtrl_vps */
  {__pyx_k_ScamperCycle, sizeof(__pyx_k_ScamperCycle), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCycle */
  {__pyx_k_ScamperCycle___reduce_cython, sizeof(__pyx_k_ScamperCycle___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCycle___reduce_cython */
  {__pyx_k_ScamperCycle___setstate_cython, sizeof(__pyx_k_ScamperCycle___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperCycle___setstate_cython */
  {__pyx_k_ScamperDealias, sizeof(__pyx_k_ScamperDealias), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias */
  {__pyx_k_ScamperDealiasMidardiscRound, sizeof(__pyx_k_ScamperDealiasMidardiscRound), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasMidardiscRound */
  {__pyx_k_ScamperDealiasMidardiscRound___r, sizeof(__pyx_k_ScamperDealiasMidardiscRound___r), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasMidardiscRound___r */
  {__pyx_k_ScamperDealiasMidardiscRound___s, sizeof(__pyx_k_ScamperDealiasMidardiscRound___s), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasMidardiscRound___s */
  {__pyx_k_ScamperDealiasProbe, sizeof(__pyx_k_ScamperDealiasProbe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbe */
  {__pyx_k_ScamperDealiasProbeIterator, sizeof(__pyx_k_ScamperDealiasProbeIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbeIterator */
  {__pyx_k_ScamperDealiasProbeIterator___i, sizeof(__pyx_k_ScamperDealiasProbeIterator___i), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbeIterator___i */
  {__pyx_k_ScamperDealiasProbeIterator___i_2, sizeof(__pyx_k_ScamperDealiasProbeIterator___i_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbeIterator___i_2 */
  {__pyx_k_ScamperDealiasProbeIterator___n, sizeof(__pyx_k_ScamperDealiasProbeIterator___n), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbeIterator___n */
  {__pyx_k_ScamperDealiasProbe___reduce_cyt, sizeof(__pyx_k_ScamperDealiasProbe___reduce_cyt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbe___reduce_cyt */
  {__pyx_k_ScamperDealiasProbe___setstate_c, sizeof(__pyx_k_ScamperDealiasProbe___setstate_c), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbe___setstate_c */
  {__pyx_k_ScamperDealiasProbe_replies, sizeof(__pyx_k_ScamperDealiasProbe_replies), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbe_replies */
  {__pyx_k_ScamperDealiasProbe_reply, sizeof(__pyx_k_ScamperDealiasProbe_reply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbe_reply */
  {__pyx_k_ScamperDealiasProbedef, sizeof(__pyx_k_ScamperDealiasProbedef), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ScamperDealiasProbedef */
  {__pyx_k_ScamperDealiasProbedefIterator, sizeof(__pyx_k_ScamperDealiasProbedefIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbedefIterator */
  {__pyx_k_ScamperDealiasProbedefIterator_2, sizeof(__pyx_k_ScamperDealiasProbedefIterator_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbedefIterator_2 */
  {__pyx_k_ScamperDealiasProbedefIterator_3, sizeof(__pyx_k_ScamperDealiasProbedefIterator_3), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbedefIterator_3 */
  {__pyx_k_ScamperDealiasProbedefIterator_4, sizeof(__pyx_k_ScamperDealiasProbedefIterator_4), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbedefIterator_4 */
  {__pyx_k_ScamperDealiasProbedef_2, sizeof(__pyx_k_ScamperDealiasProbedef_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbedef_2 */
  {__pyx_k_ScamperDealiasProbedef___reduce, sizeof(__pyx_k_ScamperDealiasProbedef___reduce), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbedef___reduce */
  {__pyx_k_ScamperDealiasProbedef___setstat, sizeof(__pyx_k_ScamperDealiasProbedef___setstat), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbedef___setstat */
  {__pyx_k_ScamperDealiasProbedef_is_icmp, sizeof(__pyx_k_ScamperDealiasProbedef_is_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbedef_is_icmp */
  {__pyx_k_ScamperDealiasProbedef_is_tcp, sizeof(__pyx_k_ScamperDealiasProbedef_is_tcp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbedef_is_tcp */
  {__pyx_k_ScamperDealiasProbedef_is_udp, sizeof(__pyx_k_ScamperDealiasProbedef_is_udp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasProbedef_is_udp */
  {__pyx_k_ScamperDealiasReply, sizeof(__pyx_k_ScamperDealiasReply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReply */
  {__pyx_k_ScamperDealiasReplyIterator, sizeof(__pyx_k_ScamperDealiasReplyIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReplyIterator */
  {__pyx_k_ScamperDealiasReplyIterator___i, sizeof(__pyx_k_ScamperDealiasReplyIterator___i), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReplyIterator___i */
  {__pyx_k_ScamperDealiasReplyIterator___i_2, sizeof(__pyx_k_ScamperDealiasReplyIterator___i_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReplyIterator___i_2 */
  {__pyx_k_ScamperDealiasReplyIterator___n, sizeof(__pyx_k_ScamperDealiasReplyIterator___n), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReplyIterator___n */
  {__pyx_k_ScamperDealiasReply___reduce_cyt, sizeof(__pyx_k_ScamperDealiasReply___reduce_cyt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReply___reduce_cyt */
  {__pyx_k_ScamperDealiasReply___setstate_c, sizeof(__pyx_k_ScamperDealiasReply___setstate_c), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReply___setstate_c */
  {__pyx_k_ScamperDealiasReply_is_from_targ, sizeof(__pyx_k_ScamperDealiasReply_is_from_targ), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReply_is_from_targ */
  {__pyx_k_ScamperDealiasReply_is_icmp, sizeof(__pyx_k_ScamperDealiasReply_is_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReply_is_icmp */
  {__pyx_k_ScamperDealiasReply_is_icmp_ttl, sizeof(__pyx_k_ScamperDealiasReply_is_icmp_ttl), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReply_is_icmp_ttl */
  {__pyx_k_ScamperDealiasReply_is_icmp_unre, sizeof(__pyx_k_ScamperDealiasReply_is_icmp_unre), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReply_is_icmp_unre */
  {__pyx_k_ScamperDealiasReply_is_icmp_unre_2, sizeof(__pyx_k_ScamperDealiasReply_is_icmp_unre_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReply_is_icmp_unre_2 */
  {__pyx_k_ScamperDealiasReply_is_tcp, sizeof(__pyx_k_ScamperDealiasReply_is_tcp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealiasReply_is_tcp */
  {__pyx_k_ScamperDealias___reduce_cython, sizeof(__pyx_k_ScamperDealias___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias___reduce_cython */
  {__pyx_k_ScamperDealias___setstate_cython, sizeof(__pyx_k_ScamperDealias___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias___setstate_cython */
  {__pyx_k_ScamperDealias_aliases, sizeof(__pyx_k_ScamperDealias_aliases), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_aliases */
  {__pyx_k_ScamperDealias_has_aliases, sizeof(__pyx_k_ScamperDealias_has_aliases), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_has_aliases */
  {__pyx_k_ScamperDealias_is_ally, sizeof(__pyx_k_ScamperDealias_is_ally), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_is_ally */
  {__pyx_k_ScamperDealias_is_bump, sizeof(__pyx_k_ScamperDealias_is_bump), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_is_bump */
  {__pyx_k_ScamperDealias_is_mercator, sizeof(__pyx_k_ScamperDealias_is_mercator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_is_mercator */
  {__pyx_k_ScamperDealias_is_midardisc, sizeof(__pyx_k_ScamperDealias_is_midardisc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_is_midardisc */
  {__pyx_k_ScamperDealias_is_midarest, sizeof(__pyx_k_ScamperDealias_is_midarest), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_is_midarest */
  {__pyx_k_ScamperDealias_is_prefixscan, sizeof(__pyx_k_ScamperDealias_is_prefixscan), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_is_prefixscan */
  {__pyx_k_ScamperDealias_is_radargun, sizeof(__pyx_k_ScamperDealias_is_radargun), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_is_radargun */
  {__pyx_k_ScamperDealias_probe, sizeof(__pyx_k_ScamperDealias_probe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_probe */
  {__pyx_k_ScamperDealias_probedef, sizeof(__pyx_k_ScamperDealias_probedef), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_probedef */
  {__pyx_k_ScamperDealias_probedefs, sizeof(__pyx_k_ScamperDealias_probedefs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_probedefs */
  {__pyx_k_ScamperDealias_probes, sizeof(__pyx_k_ScamperDealias_probes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_probes */
  {__pyx_k_ScamperDealias_to_json, sizeof(__pyx_k_ScamperDealias_to_json), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperDealias_to_json */
  {__pyx_k_ScamperFile, sizeof(__pyx_k_ScamperFile), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile */
  {__pyx_k_ScamperFile___enter, sizeof(__pyx_k_ScamperFile___enter), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile___enter */
  {__pyx_k_ScamperFile___exit, sizeof(__pyx_k_ScamperFile___exit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile___exit */
  {__pyx_k_ScamperFile___reduce_cython, sizeof(__pyx_k_ScamperFile___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile___reduce_cython */
  {__pyx_k_ScamperFile___setstate_cython, sizeof(__pyx_k_ScamperFile___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile___setstate_cython */
  {__pyx_k_ScamperFile_close, sizeof(__pyx_k_ScamperFile_close), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile_close */
  {__pyx_k_ScamperFile_filter_types, sizeof(__pyx_k_ScamperFile_filter_types), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile_filter_types */
  {__pyx_k_ScamperFile_is_read, sizeof(__pyx_k_ScamperFile_is_read), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile_is_read */
  {__pyx_k_ScamperFile_is_write, sizeof(__pyx_k_ScamperFile_is_write), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile_is_write */
  {__pyx_k_ScamperFile_read, sizeof(__pyx_k_ScamperFile_read), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile_read */
  {__pyx_k_ScamperFile_write, sizeof(__pyx_k_ScamperFile_write), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperFile_write */
  {__pyx_k_ScamperHost, sizeof(__pyx_k_ScamperHost), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost */
  {__pyx_k_ScamperHostMX, sizeof(__pyx_k_ScamperHostMX), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostMX */
  {__pyx_k_ScamperHostMX___reduce_cython, sizeof(__pyx_k_ScamperHostMX___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostMX___reduce_cython */
  {__pyx_k_ScamperHostMX___setstate_cython, sizeof(__pyx_k_ScamperHostMX___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostMX___setstate_cython */
  {__pyx_k_ScamperHostOPT, sizeof(__pyx_k_ScamperHostOPT), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostOPT */
  {__pyx_k_ScamperHostOPTElem, sizeof(__pyx_k_ScamperHostOPTElem), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostOPTElem */
  {__pyx_k_ScamperHostOPTElem___reduce_cyth, sizeof(__pyx_k_ScamperHostOPTElem___reduce_cyth), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostOPTElem___reduce_cyth */
  {__pyx_k_ScamperHostOPTElem___setstate_cy, sizeof(__pyx_k_ScamperHostOPTElem___setstate_cy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostOPTElem___setstate_cy */
  {__pyx_k_ScamperHostOPT___reduce_cython, sizeof(__pyx_k_ScamperHostOPT___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostOPT___reduce_cython */
  {__pyx_k_ScamperHostOPT___setstate_cython, sizeof(__pyx_k_ScamperHostOPT___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostOPT___setstate_cython */
  {__pyx_k_ScamperHostOPT_elem, sizeof(__pyx_k_ScamperHostOPT_elem), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostOPT_elem */
  {__pyx_k_ScamperHostQuery, sizeof(__pyx_k_ScamperHostQuery), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostQuery */
  {__pyx_k_ScamperHostQuery___reduce_cython, sizeof(__pyx_k_ScamperHostQuery___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostQuery___reduce_cython */
  {__pyx_k_ScamperHostQuery___setstate_cyth, sizeof(__pyx_k_ScamperHostQuery___setstate_cyth), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostQuery___setstate_cyth */
  {__pyx_k_ScamperHostQuery_an, sizeof(__pyx_k_ScamperHostQuery_an), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostQuery_an */
  {__pyx_k_ScamperHostQuery_ar, sizeof(__pyx_k_ScamperHostQuery_ar), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostQuery_ar */
  {__pyx_k_ScamperHostQuery_ns, sizeof(__pyx_k_ScamperHostQuery_ns), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostQuery_ns */
  {__pyx_k_ScamperHostRR, sizeof(__pyx_k_ScamperHostRR), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostRR */
  {__pyx_k_ScamperHostRRIterator, sizeof(__pyx_k_ScamperHostRRIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostRRIterator */
  {__pyx_k_ScamperHostRRIterator___init, sizeof(__pyx_k_ScamperHostRRIterator___init), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostRRIterator___init */
  {__pyx_k_ScamperHostRRIterator___iter, sizeof(__pyx_k_ScamperHostRRIterator___iter), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostRRIterator___iter */
  {__pyx_k_ScamperHostRRIterator___next, sizeof(__pyx_k_ScamperHostRRIterator___next), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostRRIterator___next */
  {__pyx_k_ScamperHostRR___reduce_cython, sizeof(__pyx_k_ScamperHostRR___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostRR___reduce_cython */
  {__pyx_k_ScamperHostRR___setstate_cython, sizeof(__pyx_k_ScamperHostRR___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostRR___setstate_cython */
  {__pyx_k_ScamperHostSOA, sizeof(__pyx_k_ScamperHostSOA), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostSOA */
  {__pyx_k_ScamperHostSOA___reduce_cython, sizeof(__pyx_k_ScamperHostSOA___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostSOA___reduce_cython */
  {__pyx_k_ScamperHostSOA___setstate_cython, sizeof(__pyx_k_ScamperHostSOA___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostSOA___setstate_cython */
  {__pyx_k_ScamperHostSVCB, sizeof(__pyx_k_ScamperHostSVCB), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostSVCB */
  {__pyx_k_ScamperHostSVCBParam, sizeof(__pyx_k_ScamperHostSVCBParam), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostSVCBParam */
  {__pyx_k_ScamperHostSVCBParam___reduce_cy, sizeof(__pyx_k_ScamperHostSVCBParam___reduce_cy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostSVCBParam___reduce_cy */
  {__pyx_k_ScamperHostSVCBParam___setstate, sizeof(__pyx_k_ScamperHostSVCBParam___setstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostSVCBParam___setstate */
  {__pyx_k_ScamperHostSVCB___reduce_cython, sizeof(__pyx_k_ScamperHostSVCB___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostSVCB___reduce_cython */
  {__pyx_k_ScamperHostSVCB___setstate_cytho, sizeof(__pyx_k_ScamperHostSVCB___setstate_cytho), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostSVCB___setstate_cytho */
  {__pyx_k_ScamperHostSVCB_param, sizeof(__pyx_k_ScamperHostSVCB_param), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostSVCB_param */
  {__pyx_k_ScamperHostTXT, sizeof(__pyx_k_ScamperHostTXT), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostTXT */
  {__pyx_k_ScamperHostTXT___reduce_cython, sizeof(__pyx_k_ScamperHostTXT___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostTXT___reduce_cython */
  {__pyx_k_ScamperHostTXT___setstate_cython, sizeof(__pyx_k_ScamperHostTXT___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostTXT___setstate_cython */
  {__pyx_k_ScamperHostTXT_str, sizeof(__pyx_k_ScamperHostTXT_str), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostTXT_str */
  {__pyx_k_ScamperHostType, sizeof(__pyx_k_ScamperHostType), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHostType */
  {__pyx_k_ScamperHost___reduce_cython, sizeof(__pyx_k_ScamperHost___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost___reduce_cython */
  {__pyx_k_ScamperHost___setstate_cython, sizeof(__pyx_k_ScamperHost___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost___setstate_cython */
  {__pyx_k_ScamperHost_an, sizeof(__pyx_k_ScamperHost_an), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_an */
  {__pyx_k_ScamperHost_ans, sizeof(__pyx_k_ScamperHost_ans), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_ans */
  {__pyx_k_ScamperHost_ans_addrs, sizeof(__pyx_k_ScamperHost_ans_addrs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_ans_addrs */
  {__pyx_k_ScamperHost_ans_mxes, sizeof(__pyx_k_ScamperHost_ans_mxes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_ans_mxes */
  {__pyx_k_ScamperHost_ans_nses, sizeof(__pyx_k_ScamperHost_ans_nses), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_ans_nses */
  {__pyx_k_ScamperHost_ans_ptrs, sizeof(__pyx_k_ScamperHost_ans_ptrs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_ans_ptrs */
  {__pyx_k_ScamperHost_ans_txts, sizeof(__pyx_k_ScamperHost_ans_txts), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_ans_txts */
  {__pyx_k_ScamperHost_ar, sizeof(__pyx_k_ScamperHost_ar), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_ar */
  {__pyx_k_ScamperHost_ars, sizeof(__pyx_k_ScamperHost_ars), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_ars */
  {__pyx_k_ScamperHost_ns, sizeof(__pyx_k_ScamperHost_ns), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_ns */
  {__pyx_k_ScamperHost_nss, sizeof(__pyx_k_ScamperHost_nss), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_nss */
  {__pyx_k_ScamperHost_to_json, sizeof(__pyx_k_ScamperHost_to_json), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHost_to_json */
  {__pyx_k_ScamperHttp, sizeof(__pyx_k_ScamperHttp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttp */
  {__pyx_k_ScamperHttpBuf, sizeof(__pyx_k_ScamperHttpBuf), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpBuf */
  {__pyx_k_ScamperHttpBuf___reduce_cython, sizeof(__pyx_k_ScamperHttpBuf___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpBuf___reduce_cython */
  {__pyx_k_ScamperHttpBuf___setstate_cython, sizeof(__pyx_k_ScamperHttpBuf___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpBuf___setstate_cython */
  {__pyx_k_ScamperHttpBuf_is_data, sizeof(__pyx_k_ScamperHttpBuf_is_data), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpBuf_is_data */
  {__pyx_k_ScamperHttpBuf_is_hdr, sizeof(__pyx_k_ScamperHttpBuf_is_hdr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpBuf_is_hdr */
  {__pyx_k_ScamperHttpBuf_is_rx, sizeof(__pyx_k_ScamperHttpBuf_is_rx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpBuf_is_rx */
  {__pyx_k_ScamperHttpBuf_is_tls, sizeof(__pyx_k_ScamperHttpBuf_is_tls), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpBuf_is_tls */
  {__pyx_k_ScamperHttpBuf_is_tx, sizeof(__pyx_k_ScamperHttpBuf_is_tx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpBuf_is_tx */
  {__pyx_k_ScamperHttpIterator, sizeof(__pyx_k_ScamperHttpIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpIterator */
  {__pyx_k_ScamperHttpIterator___init, sizeof(__pyx_k_ScamperHttpIterator___init), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpIterator___init */
  {__pyx_k_ScamperHttpIterator___iter, sizeof(__pyx_k_ScamperHttpIterator___iter), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpIterator___iter */
  {__pyx_k_ScamperHttpIterator___next, sizeof(__pyx_k_ScamperHttpIterator___next), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttpIterator___next */
  {__pyx_k_ScamperHttp___reduce_cython, sizeof(__pyx_k_ScamperHttp___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttp___reduce_cython */
  {__pyx_k_ScamperHttp___setstate_cython, sizeof(__pyx_k_ScamperHttp___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttp___setstate_cython */
  {__pyx_k_ScamperHttp_buf, sizeof(__pyx_k_ScamperHttp_buf), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttp_buf */
  {__pyx_k_ScamperHttp_bufs, sizeof(__pyx_k_ScamperHttp_bufs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttp_bufs */
  {__pyx_k_ScamperHttp_response_hdr_byname, sizeof(__pyx_k_ScamperHttp_response_hdr_byname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttp_response_hdr_byname */
  {__pyx_k_ScamperHttp_transmit_hdr_byname, sizeof(__pyx_k_ScamperHttp_transmit_hdr_byname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperHttp_transmit_hdr_byname */
  {__pyx_k_ScamperIcmpExt, sizeof(__pyx_k_ScamperIcmpExt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExt */
  {__pyx_k_ScamperIcmpExt___reduce_cython, sizeof(__pyx_k_ScamperIcmpExt___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExt___reduce_cython */
  {__pyx_k_ScamperIcmpExt___setstate_cython, sizeof(__pyx_k_ScamperIcmpExt___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExt___setstate_cython */
  {__pyx_k_ScamperIcmpExt_is_mpls, sizeof(__pyx_k_ScamperIcmpExt_is_mpls), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExt_is_mpls */
  {__pyx_k_ScamperIcmpExt_mpls_exp, sizeof(__pyx_k_ScamperIcmpExt_mpls_exp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExt_mpls_exp */
  {__pyx_k_ScamperIcmpExt_mpls_label, sizeof(__pyx_k_ScamperIcmpExt_mpls_label), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExt_mpls_label */
  {__pyx_k_ScamperIcmpExt_mpls_lse, sizeof(__pyx_k_ScamperIcmpExt_mpls_lse), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExt_mpls_lse */
  {__pyx_k_ScamperIcmpExt_mpls_lses, sizeof(__pyx_k_ScamperIcmpExt_mpls_lses), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExt_mpls_lses */
  {__pyx_k_ScamperIcmpExt_mpls_s, sizeof(__pyx_k_ScamperIcmpExt_mpls_s), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExt_mpls_s */
  {__pyx_k_ScamperIcmpExt_mpls_ttl, sizeof(__pyx_k_ScamperIcmpExt_mpls_ttl), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExt_mpls_ttl */
  {__pyx_k_ScamperIcmpExts, sizeof(__pyx_k_ScamperIcmpExts), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExts */
  {__pyx_k_ScamperIcmpExtsIterator, sizeof(__pyx_k_ScamperIcmpExtsIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExtsIterator */
  {__pyx_k_ScamperIcmpExtsIterator___init, sizeof(__pyx_k_ScamperIcmpExtsIterator___init), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExtsIterator___init */
  {__pyx_k_ScamperIcmpExtsIterator___iter, sizeof(__pyx_k_ScamperIcmpExtsIterator___iter), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExtsIterator___iter */
  {__pyx_k_ScamperIcmpExtsIterator___next, sizeof(__pyx_k_ScamperIcmpExtsIterator___next), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExtsIterator___next */
  {__pyx_k_ScamperIcmpExts___reduce_cython, sizeof(__pyx_k_ScamperIcmpExts___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExts___reduce_cython */
  {__pyx_k_ScamperIcmpExts___setstate_cytho, sizeof(__pyx_k_ScamperIcmpExts___setstate_cytho), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExts___setstate_cytho */
  {__pyx_k_ScamperIcmpExts_ext, sizeof(__pyx_k_ScamperIcmpExts_ext), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExts_ext */
  {__pyx_k_ScamperIcmpExts_ext_count, sizeof(__pyx_k_ScamperIcmpExts_ext_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExts_ext_count */
  {__pyx_k_ScamperIcmpExts_exts, sizeof(__pyx_k_ScamperIcmpExts_exts), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpExts_exts */
  {__pyx_k_ScamperIcmpMplsLabelStackEntry, sizeof(__pyx_k_ScamperIcmpMplsLabelStackEntry), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackEntry */
  {__pyx_k_ScamperIcmpMplsLabelStackEntry_2, sizeof(__pyx_k_ScamperIcmpMplsLabelStackEntry_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackEntry_2 */
  {__pyx_k_ScamperIcmpMplsLabelStackEntry_3, sizeof(__pyx_k_ScamperIcmpMplsLabelStackEntry_3), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackEntry_3 */
  {__pyx_k_ScamperIcmpMplsLabelStackEntry_e, sizeof(__pyx_k_ScamperIcmpMplsLabelStackEntry_e), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackEntry_e */
  {__pyx_k_ScamperIcmpMplsLabelStackEntry_l, sizeof(__pyx_k_ScamperIcmpMplsLabelStackEntry_l), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackEntry_l */
  {__pyx_k_ScamperIcmpMplsLabelStackEntry_s, sizeof(__pyx_k_ScamperIcmpMplsLabelStackEntry_s), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackEntry_s */
  {__pyx_k_ScamperIcmpMplsLabelStackEntry_t, sizeof(__pyx_k_ScamperIcmpMplsLabelStackEntry_t), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackEntry_t */
  {__pyx_k_ScamperIcmpMplsLabelStackIterat, sizeof(__pyx_k_ScamperIcmpMplsLabelStackIterat), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackIterat */
  {__pyx_k_ScamperIcmpMplsLabelStackIterat_2, sizeof(__pyx_k_ScamperIcmpMplsLabelStackIterat_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackIterat_2 */
  {__pyx_k_ScamperIcmpMplsLabelStackIterat_3, sizeof(__pyx_k_ScamperIcmpMplsLabelStackIterat_3), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackIterat_3 */
  {__pyx_k_ScamperIcmpMplsLabelStackIterat_4, sizeof(__pyx_k_ScamperIcmpMplsLabelStackIterat_4), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperIcmpMplsLabelStackIterat_4 */
  {__pyx_k_ScamperInst, sizeof(__pyx_k_ScamperInst), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ScamperInst */
  {__pyx_k_ScamperInstData, sizeof(__pyx_k_ScamperInstData), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperInstData */
  {__pyx_k_ScamperInstData___init, sizeof(__pyx_k_ScamperInstData___init), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperInstData___init */
  {__pyx_k_ScamperInstError, sizeof(__pyx_k_ScamperInstError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperInstError */
  {__pyx_k_ScamperInstError___init, sizeof(__pyx_k_ScamperInstError___init), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperInstError___init */
  {__pyx_k_ScamperInst_2, sizeof(__pyx_k_ScamperInst_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperInst_2 */
  {__pyx_k_ScamperInst___reduce_cython, sizeof(__pyx_k_ScamperInst___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperInst___reduce_cython */
  {__pyx_k_ScamperInst___setstate_cython, sizeof(__pyx_k_ScamperInst___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperInst___setstate_cython */
  {__pyx_k_ScamperInst_done, sizeof(__pyx_k_ScamperInst_done), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperInst_done */
  {__pyx_k_ScamperInst_has_signalled_EOF, sizeof(__pyx_k_ScamperInst_has_signalled_EOF), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ScamperInst_has_signalled_EOF */
  {__pyx_k_ScamperInst_is_eof, sizeof(__pyx_k_ScamperInst_is_eof), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperInst_is_eof */
  {__pyx_k_ScamperList, sizeof(__pyx_k_ScamperList), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperList */
  {__pyx_k_ScamperList___reduce_cython, sizeof(__pyx_k_ScamperList___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperList___reduce_cython */
  {__pyx_k_ScamperList___setstate_cython, sizeof(__pyx_k_ScamperList___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperList___setstate_cython */
  {__pyx_k_ScamperMux, sizeof(__pyx_k_ScamperMux), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperMux */
  {__pyx_k_ScamperMux___reduce_cython, sizeof(__pyx_k_ScamperMux___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperMux___reduce_cython */
  {__pyx_k_ScamperMux___setstate_cython, sizeof(__pyx_k_ScamperMux___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperMux___setstate_cython */
  {__pyx_k_ScamperMux_vps, sizeof(__pyx_k_ScamperMux_vps), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperMux_vps */
  {__pyx_k_ScamperNeighbourdisc, sizeof(__pyx_k_ScamperNeighbourdisc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperNeighbourdisc */
  {__pyx_k_ScamperNeighbourdisc___reduce_cy, sizeof(__pyx_k_ScamperNeighbourdisc___reduce_cy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperNeighbourdisc___reduce_cy */
  {__pyx_k_ScamperNeighbourdisc___setstate, sizeof(__pyx_k_ScamperNeighbourdisc___setstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperNeighbourdisc___setstate */
  {__pyx_k_ScamperNeighbourdisc_to_json, sizeof(__pyx_k_ScamperNeighbourdisc_to_json), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperNeighbourdisc_to_json */
  {__pyx_k_ScamperPing, sizeof(__pyx_k_ScamperPing), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing */
  {__pyx_k_ScamperPingIterator, sizeof(__pyx_k_ScamperPingIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingIterator */
  {__pyx_k_ScamperPingIterator___init, sizeof(__pyx_k_ScamperPingIterator___init), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingIterator___init */
  {__pyx_k_ScamperPingIterator___iter, sizeof(__pyx_k_ScamperPingIterator___iter), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingIterator___iter */
  {__pyx_k_ScamperPingIterator___next, sizeof(__pyx_k_ScamperPingIterator___next), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingIterator___next */
  {__pyx_k_ScamperPingReply, sizeof(__pyx_k_ScamperPingReply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply */
  {__pyx_k_ScamperPingReply___reduce_cython, sizeof(__pyx_k_ScamperPingReply___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply___reduce_cython */
  {__pyx_k_ScamperPingReply___setstate_cyth, sizeof(__pyx_k_ScamperPingReply___setstate_cyth), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply___setstate_cyth */
  {__pyx_k_ScamperPingReply_is_from_target, sizeof(__pyx_k_ScamperPingReply_is_from_target), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply_is_from_target */
  {__pyx_k_ScamperPingReply_is_icmp, sizeof(__pyx_k_ScamperPingReply_is_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply_is_icmp */
  {__pyx_k_ScamperPingReply_is_icmp_echo_re, sizeof(__pyx_k_ScamperPingReply_is_icmp_echo_re), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply_is_icmp_echo_re */
  {__pyx_k_ScamperPingReply_is_icmp_ptb, sizeof(__pyx_k_ScamperPingReply_is_icmp_ptb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply_is_icmp_ptb */
  {__pyx_k_ScamperPingReply_is_icmp_tsreply, sizeof(__pyx_k_ScamperPingReply_is_icmp_tsreply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply_is_icmp_tsreply */
  {__pyx_k_ScamperPingReply_is_icmp_ttl_exp, sizeof(__pyx_k_ScamperPingReply_is_icmp_ttl_exp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply_is_icmp_ttl_exp */
  {__pyx_k_ScamperPingReply_is_icmp_unreach, sizeof(__pyx_k_ScamperPingReply_is_icmp_unreach), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply_is_icmp_unreach */
  {__pyx_k_ScamperPingReply_is_icmp_unreach_2, sizeof(__pyx_k_ScamperPingReply_is_icmp_unreach_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply_is_icmp_unreach_2 */
  {__pyx_k_ScamperPingReply_is_tcp, sizeof(__pyx_k_ScamperPingReply_is_tcp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply_is_tcp */
  {__pyx_k_ScamperPingReply_is_udp, sizeof(__pyx_k_ScamperPingReply_is_udp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPingReply_is_udp */
  {__pyx_k_ScamperPing___reduce_cython, sizeof(__pyx_k_ScamperPing___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing___reduce_cython */
  {__pyx_k_ScamperPing___setstate_cython, sizeof(__pyx_k_ScamperPing___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing___setstate_cython */
  {__pyx_k_ScamperPing__stats, sizeof(__pyx_k_ScamperPing__stats), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing__stats */
  {__pyx_k_ScamperPing_is_icmp, sizeof(__pyx_k_ScamperPing_is_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing_is_icmp */
  {__pyx_k_ScamperPing_is_icmp_time, sizeof(__pyx_k_ScamperPing_is_icmp_time), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing_is_icmp_time */
  {__pyx_k_ScamperPing_is_tcp, sizeof(__pyx_k_ScamperPing_is_tcp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing_is_tcp */
  {__pyx_k_ScamperPing_is_tcp_ack_sport, sizeof(__pyx_k_ScamperPing_is_tcp_ack_sport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing_is_tcp_ack_sport */
  {__pyx_k_ScamperPing_is_udp, sizeof(__pyx_k_ScamperPing_is_udp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing_is_udp */
  {__pyx_k_ScamperPing_is_vary_dport, sizeof(__pyx_k_ScamperPing_is_vary_dport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing_is_vary_dport */
  {__pyx_k_ScamperPing_is_vary_sport, sizeof(__pyx_k_ScamperPing_is_vary_sport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing_is_vary_sport */
  {__pyx_k_ScamperPing_replies, sizeof(__pyx_k_ScamperPing_replies), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing_replies */
  {__pyx_k_ScamperPing_reply, sizeof(__pyx_k_ScamperPing_reply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing_reply */
  {__pyx_k_ScamperPing_to_json, sizeof(__pyx_k_ScamperPing_to_json), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperPing_to_json */
  {__pyx_k_ScamperSniff, sizeof(__pyx_k_ScamperSniff), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSniff */
  {__pyx_k_ScamperSniffPkt, sizeof(__pyx_k_ScamperSniffPkt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSniffPkt */
  {__pyx_k_ScamperSniffPkt___reduce_cython, sizeof(__pyx_k_ScamperSniffPkt___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSniffPkt___reduce_cython */
  {__pyx_k_ScamperSniffPkt___setstate_cytho, sizeof(__pyx_k_ScamperSniffPkt___setstate_cytho), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSniffPkt___setstate_cytho */
  {__pyx_k_ScamperSniffStop, sizeof(__pyx_k_ScamperSniffStop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSniffStop */
  {__pyx_k_ScamperSniff___reduce_cython, sizeof(__pyx_k_ScamperSniff___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSniff___reduce_cython */
  {__pyx_k_ScamperSniff___setstate_cython, sizeof(__pyx_k_ScamperSniff___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSniff___setstate_cython */
  {__pyx_k_ScamperSniff_pkt, sizeof(__pyx_k_ScamperSniff_pkt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSniff_pkt */
  {__pyx_k_ScamperSting, sizeof(__pyx_k_ScamperSting), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSting */
  {__pyx_k_ScamperSting___reduce_cython, sizeof(__pyx_k_ScamperSting___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSting___reduce_cython */
  {__pyx_k_ScamperSting___setstate_cython, sizeof(__pyx_k_ScamperSting___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperSting___setstate_cython */
  {__pyx_k_ScamperTask, sizeof(__pyx_k_ScamperTask), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTask */
  {__pyx_k_ScamperTask___reduce_cython, sizeof(__pyx_k_ScamperTask___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTask___reduce_cython */
  {__pyx_k_ScamperTask___setstate_cython, sizeof(__pyx_k_ScamperTask___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTask___setstate_cython */
  {__pyx_k_ScamperTask_halt, sizeof(__pyx_k_ScamperTask_halt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTask_halt */
  {__pyx_k_ScamperTbit, sizeof(__pyx_k_ScamperTbit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTbit */
  {__pyx_k_ScamperTbitPkt, sizeof(__pyx_k_ScamperTbitPkt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTbitPkt */
  {__pyx_k_ScamperTbitPkt___reduce_cython, sizeof(__pyx_k_ScamperTbitPkt___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTbitPkt___reduce_cython */
  {__pyx_k_ScamperTbitPkt___setstate_cython, sizeof(__pyx_k_ScamperTbitPkt___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTbitPkt___setstate_cython */
  {__pyx_k_ScamperTbitPkt_is_rx, sizeof(__pyx_k_ScamperTbitPkt_is_rx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTbitPkt_is_rx */
  {__pyx_k_ScamperTbitPkt_is_tx, sizeof(__pyx_k_ScamperTbitPkt_is_tx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTbitPkt_is_tx */
  {__pyx_k_ScamperTbit___reduce_cython, sizeof(__pyx_k_ScamperTbit___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTbit___reduce_cython */
  {__pyx_k_ScamperTbit___setstate_cython, sizeof(__pyx_k_ScamperTbit___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTbit___setstate_cython */
  {__pyx_k_ScamperTbit_to_json, sizeof(__pyx_k_ScamperTbit_to_json), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTbit_to_json */
  {__pyx_k_ScamperTrace, sizeof(__pyx_k_ScamperTrace), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace */
  {__pyx_k_ScamperTraceHop, sizeof(__pyx_k_ScamperTraceHop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHop */
  {__pyx_k_ScamperTraceHopIterator, sizeof(__pyx_k_ScamperTraceHopIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHopIterator */
  {__pyx_k_ScamperTraceHopIterator___init, sizeof(__pyx_k_ScamperTraceHopIterator___init), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHopIterator___init */
  {__pyx_k_ScamperTraceHopIterator___iter, sizeof(__pyx_k_ScamperTraceHopIterator___iter), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHopIterator___iter */
  {__pyx_k_ScamperTraceHopIterator___next, sizeof(__pyx_k_ScamperTraceHopIterator___next), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHopIterator___next */
  {__pyx_k_ScamperTraceHop___reduce_cython, sizeof(__pyx_k_ScamperTraceHop___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHop___reduce_cython */
  {__pyx_k_ScamperTraceHop___setstate_cytho, sizeof(__pyx_k_ScamperTraceHop___setstate_cytho), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHop___setstate_cytho */
  {__pyx_k_ScamperTraceHop_is_icmp, sizeof(__pyx_k_ScamperTraceHop_is_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHop_is_icmp */
  {__pyx_k_ScamperTraceHop_is_icmp_echo_rep, sizeof(__pyx_k_ScamperTraceHop_is_icmp_echo_rep), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHop_is_icmp_echo_rep */
  {__pyx_k_ScamperTraceHop_is_icmp_ptb, sizeof(__pyx_k_ScamperTraceHop_is_icmp_ptb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHop_is_icmp_ptb */
  {__pyx_k_ScamperTraceHop_is_icmp_q, sizeof(__pyx_k_ScamperTraceHop_is_icmp_q), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHop_is_icmp_q */
  {__pyx_k_ScamperTraceHop_is_icmp_ttl_exp, sizeof(__pyx_k_ScamperTraceHop_is_icmp_ttl_exp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHop_is_icmp_ttl_exp */
  {__pyx_k_ScamperTraceHop_is_icmp_unreach, sizeof(__pyx_k_ScamperTraceHop_is_icmp_unreach), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHop_is_icmp_unreach */
  {__pyx_k_ScamperTraceHop_is_tcp, sizeof(__pyx_k_ScamperTraceHop_is_tcp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceHop_is_tcp */
  {__pyx_k_ScamperTracePmtud, sizeof(__pyx_k_ScamperTracePmtud), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracePmtud */
  {__pyx_k_ScamperTracePmtudNote, sizeof(__pyx_k_ScamperTracePmtudNote), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracePmtudNote */
  {__pyx_k_ScamperTracePmtudNote___reduce_c, sizeof(__pyx_k_ScamperTracePmtudNote___reduce_c), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracePmtudNote___reduce_c */
  {__pyx_k_ScamperTracePmtudNote___setstate, sizeof(__pyx_k_ScamperTracePmtudNote___setstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracePmtudNote___setstate */
  {__pyx_k_ScamperTracePmtudNote_hop, sizeof(__pyx_k_ScamperTracePmtudNote_hop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracePmtudNote_hop */
  {__pyx_k_ScamperTracePmtud___reduce_cytho, sizeof(__pyx_k_ScamperTracePmtud___reduce_cytho), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracePmtud___reduce_cytho */
  {__pyx_k_ScamperTracePmtud___setstate_cyt, sizeof(__pyx_k_ScamperTracePmtud___setstate_cyt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracePmtud___setstate_cyt */
  {__pyx_k_ScamperTracePmtud_notes, sizeof(__pyx_k_ScamperTracePmtud_notes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracePmtud_notes */
  {__pyx_k_ScamperTraceStop, sizeof(__pyx_k_ScamperTraceStop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTraceStop */
  {__pyx_k_ScamperTrace___reduce_cython, sizeof(__pyx_k_ScamperTrace___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace___reduce_cython */
  {__pyx_k_ScamperTrace___setstate_cython, sizeof(__pyx_k_ScamperTrace___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace___setstate_cython */
  {__pyx_k_ScamperTrace_addrs, sizeof(__pyx_k_ScamperTrace_addrs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_addrs */
  {__pyx_k_ScamperTrace_hop, sizeof(__pyx_k_ScamperTrace_hop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_hop */
  {__pyx_k_ScamperTrace_hops, sizeof(__pyx_k_ScamperTrace_hops), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_hops */
  {__pyx_k_ScamperTrace_is_icmp, sizeof(__pyx_k_ScamperTrace_is_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_icmp */
  {__pyx_k_ScamperTrace_is_stop_completed, sizeof(__pyx_k_ScamperTrace_is_stop_completed), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_stop_completed */
  {__pyx_k_ScamperTrace_is_stop_error, sizeof(__pyx_k_ScamperTrace_is_stop_error), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_stop_error */
  {__pyx_k_ScamperTrace_is_stop_gaplimit, sizeof(__pyx_k_ScamperTrace_is_stop_gaplimit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_stop_gaplimit */
  {__pyx_k_ScamperTrace_is_stop_gss, sizeof(__pyx_k_ScamperTrace_is_stop_gss), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_stop_gss */
  {__pyx_k_ScamperTrace_is_stop_halted, sizeof(__pyx_k_ScamperTrace_is_stop_halted), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_stop_halted */
  {__pyx_k_ScamperTrace_is_stop_hoplimit, sizeof(__pyx_k_ScamperTrace_is_stop_hoplimit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_stop_hoplimit */
  {__pyx_k_ScamperTrace_is_stop_icmp, sizeof(__pyx_k_ScamperTrace_is_stop_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_stop_icmp */
  {__pyx_k_ScamperTrace_is_stop_loop, sizeof(__pyx_k_ScamperTrace_is_stop_loop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_stop_loop */
  {__pyx_k_ScamperTrace_is_stop_noreason, sizeof(__pyx_k_ScamperTrace_is_stop_noreason), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_stop_noreason */
  {__pyx_k_ScamperTrace_is_stop_unreach, sizeof(__pyx_k_ScamperTrace_is_stop_unreach), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_stop_unreach */
  {__pyx_k_ScamperTrace_is_tcp, sizeof(__pyx_k_ScamperTrace_is_tcp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_tcp */
  {__pyx_k_ScamperTrace_is_udp, sizeof(__pyx_k_ScamperTrace_is_udp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_is_udp */
  {__pyx_k_ScamperTrace_to_json, sizeof(__pyx_k_ScamperTrace_to_json), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTrace_to_json */
  {__pyx_k_ScamperTracelb, sizeof(__pyx_k_ScamperTracelb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb */
  {__pyx_k_ScamperTracelbLink, sizeof(__pyx_k_ScamperTracelbLink), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLink */
  {__pyx_k_ScamperTracelbLinkIterator, sizeof(__pyx_k_ScamperTracelbLinkIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLinkIterator */
  {__pyx_k_ScamperTracelbLinkIterator___in, sizeof(__pyx_k_ScamperTracelbLinkIterator___in), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLinkIterator___in */
  {__pyx_k_ScamperTracelbLinkIterator___it, sizeof(__pyx_k_ScamperTracelbLinkIterator___it), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLinkIterator___it */
  {__pyx_k_ScamperTracelbLinkIterator___ne, sizeof(__pyx_k_ScamperTracelbLinkIterator___ne), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLinkIterator___ne */
  {__pyx_k_ScamperTracelbLink___reduce_cyth, sizeof(__pyx_k_ScamperTracelbLink___reduce_cyth), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLink___reduce_cyth */
  {__pyx_k_ScamperTracelbLink___setstate_cy, sizeof(__pyx_k_ScamperTracelbLink___setstate_cy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLink___setstate_cy */
  {__pyx_k_ScamperTracelbLink_far, sizeof(__pyx_k_ScamperTracelbLink_far), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLink_far */
  {__pyx_k_ScamperTracelbLink_length, sizeof(__pyx_k_ScamperTracelbLink_length), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLink_length */
  {__pyx_k_ScamperTracelbLink_near, sizeof(__pyx_k_ScamperTracelbLink_near), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLink_near */
  {__pyx_k_ScamperTracelbLink_probeset, sizeof(__pyx_k_ScamperTracelbLink_probeset), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbLink_probeset */
  {__pyx_k_ScamperTracelbMethod, sizeof(__pyx_k_ScamperTracelbMethod), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbMethod */
  {__pyx_k_ScamperTracelbNode, sizeof(__pyx_k_ScamperTracelbNode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbNode */
  {__pyx_k_ScamperTracelbNodeIterator, sizeof(__pyx_k_ScamperTracelbNodeIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbNodeIterator */
  {__pyx_k_ScamperTracelbNodeIterator___in, sizeof(__pyx_k_ScamperTracelbNodeIterator___in), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbNodeIterator___in */
  {__pyx_k_ScamperTracelbNodeIterator___it, sizeof(__pyx_k_ScamperTracelbNodeIterator___it), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbNodeIterator___it */
  {__pyx_k_ScamperTracelbNodeIterator___ne, sizeof(__pyx_k_ScamperTracelbNodeIterator___ne), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbNodeIterator___ne */
  {__pyx_k_ScamperTracelbNode___reduce_cyth, sizeof(__pyx_k_ScamperTracelbNode___reduce_cyth), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbNode___reduce_cyth */
  {__pyx_k_ScamperTracelbNode___setstate_cy, sizeof(__pyx_k_ScamperTracelbNode___setstate_cy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbNode___setstate_cy */
  {__pyx_k_ScamperTracelbNode_link, sizeof(__pyx_k_ScamperTracelbNode_link), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbNode_link */
  {__pyx_k_ScamperTracelbNode_links, sizeof(__pyx_k_ScamperTracelbNode_links), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbNode_links */
  {__pyx_k_ScamperTracelbProbe, sizeof(__pyx_k_ScamperTracelbProbe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbProbe */
  {__pyx_k_ScamperTracelbProbe___reduce_cyt, sizeof(__pyx_k_ScamperTracelbProbe___reduce_cyt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbProbe___reduce_cyt */
  {__pyx_k_ScamperTracelbProbe___setstate_c, sizeof(__pyx_k_ScamperTracelbProbe___setstate_c), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbProbe___setstate_c */
  {__pyx_k_ScamperTracelbProbe_reply, sizeof(__pyx_k_ScamperTracelbProbe_reply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbProbe_reply */
  {__pyx_k_ScamperTracelbProbeset, sizeof(__pyx_k_ScamperTracelbProbeset), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbProbeset */
  {__pyx_k_ScamperTracelbProbeset___reduce, sizeof(__pyx_k_ScamperTracelbProbeset___reduce), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbProbeset___reduce */
  {__pyx_k_ScamperTracelbProbeset___setstat, sizeof(__pyx_k_ScamperTracelbProbeset___setstat), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbProbeset___setstat */
  {__pyx_k_ScamperTracelbProbeset_probe, sizeof(__pyx_k_ScamperTracelbProbeset_probe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbProbeset_probe */
  {__pyx_k_ScamperTracelbReply, sizeof(__pyx_k_ScamperTracelbReply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbReply */
  {__pyx_k_ScamperTracelbReply___reduce_cyt, sizeof(__pyx_k_ScamperTracelbReply___reduce_cyt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbReply___reduce_cyt */
  {__pyx_k_ScamperTracelbReply___setstate_c, sizeof(__pyx_k_ScamperTracelbReply___setstate_c), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelbReply___setstate_c */
  {__pyx_k_ScamperTracelb___reduce_cython, sizeof(__pyx_k_ScamperTracelb___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb___reduce_cython */
  {__pyx_k_ScamperTracelb___setstate_cython, sizeof(__pyx_k_ScamperTracelb___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb___setstate_cython */
  {__pyx_k_ScamperTracelb_is_icmp, sizeof(__pyx_k_ScamperTracelb_is_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb_is_icmp */
  {__pyx_k_ScamperTracelb_is_tcp, sizeof(__pyx_k_ScamperTracelb_is_tcp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb_is_tcp */
  {__pyx_k_ScamperTracelb_is_udp, sizeof(__pyx_k_ScamperTracelb_is_udp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb_is_udp */
  {__pyx_k_ScamperTracelb_link, sizeof(__pyx_k_ScamperTracelb_link), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb_link */
  {__pyx_k_ScamperTracelb_links, sizeof(__pyx_k_ScamperTracelb_links), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb_links */
  {__pyx_k_ScamperTracelb_node, sizeof(__pyx_k_ScamperTracelb_node), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb_node */
  {__pyx_k_ScamperTracelb_nodes, sizeof(__pyx_k_ScamperTracelb_nodes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb_nodes */
  {__pyx_k_ScamperTracelb_to_json, sizeof(__pyx_k_ScamperTracelb_to_json), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperTracelb_to_json */
  {__pyx_k_ScamperUdpprobe, sizeof(__pyx_k_ScamperUdpprobe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobe */
  {__pyx_k_ScamperUdpprobeProbe, sizeof(__pyx_k_ScamperUdpprobeProbe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeProbe */
  {__pyx_k_ScamperUdpprobeProbe___reduce_cy, sizeof(__pyx_k_ScamperUdpprobeProbe___reduce_cy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeProbe___reduce_cy */
  {__pyx_k_ScamperUdpprobeProbe___setstate, sizeof(__pyx_k_ScamperUdpprobeProbe___setstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeProbe___setstate */
  {__pyx_k_ScamperUdpprobeProbe_reply, sizeof(__pyx_k_ScamperUdpprobeProbe_reply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeProbe_reply */
  {__pyx_k_ScamperUdpprobeReply, sizeof(__pyx_k_ScamperUdpprobeReply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeReply */
  {__pyx_k_ScamperUdpprobeReplyIterator, sizeof(__pyx_k_ScamperUdpprobeReplyIterator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeReplyIterator */
  {__pyx_k_ScamperUdpprobeReplyIterator_2, sizeof(__pyx_k_ScamperUdpprobeReplyIterator_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeReplyIterator_2 */
  {__pyx_k_ScamperUdpprobeReplyIterator_3, sizeof(__pyx_k_ScamperUdpprobeReplyIterator_3), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeReplyIterator_3 */
  {__pyx_k_ScamperUdpprobeReplyIterator_4, sizeof(__pyx_k_ScamperUdpprobeReplyIterator_4), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeReplyIterator_4 */
  {__pyx_k_ScamperUdpprobeReply___reduce_cy, sizeof(__pyx_k_ScamperUdpprobeReply___reduce_cy), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeReply___reduce_cy */
  {__pyx_k_ScamperUdpprobeReply___setstate, sizeof(__pyx_k_ScamperUdpprobeReply___setstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobeReply___setstate */
  {__pyx_k_ScamperUdpprobe___reduce_cython, sizeof(__pyx_k_ScamperUdpprobe___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobe___reduce_cython */
  {__pyx_k_ScamperUdpprobe___setstate_cytho, sizeof(__pyx_k_ScamperUdpprobe___setstate_cytho), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobe___setstate_cytho */
  {__pyx_k_ScamperUdpprobe_probe, sizeof(__pyx_k_ScamperUdpprobe_probe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobe_probe */
  {__pyx_k_ScamperUdpprobe_replies, sizeof(__pyx_k_ScamperUdpprobe_replies), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobe_replies */
  {__pyx_k_ScamperUdpprobe_to_json, sizeof(__pyx_k_ScamperUdpprobe_to_json), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperUdpprobe_to_json */
  {__pyx_k_ScamperVp, sizeof(__pyx_k_ScamperVp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperVp */
  {__pyx_k_ScamperVp___reduce_cython, sizeof(__pyx_k_ScamperVp___reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperVp___reduce_cython */
  {__pyx_k_ScamperVp___setstate_cython, sizeof(__pyx_k_ScamperVp___setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ScamperVp___setstate_cython */
  {__pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 0, 1, 1}, /* PyObject cname: __pyx_n_u_StopIteration */
  {__pyx_k_T, sizeof(__pyx_k_T), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_T */
  {__pyx_k_TTL, sizeof(__pyx_k_TTL), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_TTL */
  {__pyx_k_TXT, sizeof(__pyx_k_TXT), 0, 1, 1}, /* PyObject cname: __pyx_n_u_TXT */
  {__pyx_k_TcpAckSport, sizeof(__pyx_k_TcpAckSport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_TcpAckSport */
  {__pyx_k_TcpSport, sizeof(__pyx_k_TcpSport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_TcpSport */
  {__pyx_k_The_class__ScamperHostRRIterato, sizeof(__pyx_k_The_class__ScamperHostRRIterato), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_The_class__ScamperHostRRIterato */
  {__pyx_k_This_class_cannot_be_insantiated, sizeof(__pyx_k_This_class_cannot_be_insantiated), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_This_class_cannot_be_insantiated */
  {__pyx_k_This_class_cannot_be_instantiate, sizeof(__pyx_k_This_class_cannot_be_instantiate), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_This_class_cannot_be_instantiate */
  {__pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_TypeError */
  {__pyx_k_U, sizeof(__pyx_k_U), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_U */
  {__pyx_k_UTF_8, sizeof(__pyx_k_UTF_8), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_UTF_8 */
  {__pyx_k_UdpDport, sizeof(__pyx_k_UdpDport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_UdpDport */
  {__pyx_k_UdpSport, sizeof(__pyx_k_UdpSport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_UdpSport */
  {__pyx_k_Unreach, sizeof(__pyx_k_Unreach), 0, 1, 1}, /* PyObject cname: __pyx_n_u_Unreach */
  {__pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ValueError */
  {__pyx_k_W, sizeof(__pyx_k_W), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_W */
  {__pyx_k__10, sizeof(__pyx_k__10), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__10 */
  {__pyx_k__11, sizeof(__pyx_k__11), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__11 */
  {__pyx_k__12, sizeof(__pyx_k__12), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__12 */
  {__pyx_k__13, sizeof(__pyx_k__13), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__13 */
  {__pyx_k__14, sizeof(__pyx_k__14), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__14 */
  {__pyx_k__15, sizeof(__pyx_k__15), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__15 */
  {__pyx_k__16, sizeof(__pyx_k__16), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__16 */
  {__pyx_k__17, sizeof(__pyx_k__17), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__17 */
  {__pyx_k__18, sizeof(__pyx_k__18), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__18 */
  {__pyx_k__19, sizeof(__pyx_k__19), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__19 */
  {__pyx_k__2, sizeof(__pyx_k__2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__2 */
  {__pyx_k__20, sizeof(__pyx_k__20), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__20 */
  {__pyx_k__21, sizeof(__pyx_k__21), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__21 */
  {__pyx_k__22, sizeof(__pyx_k__22), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__22 */
  {__pyx_k__23, sizeof(__pyx_k__23), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__23 */
  {__pyx_k__24, sizeof(__pyx_k__24), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__24 */
  {__pyx_k__25, sizeof(__pyx_k__25), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__25 */
  {__pyx_k__3, sizeof(__pyx_k__3), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__3 */
  {__pyx_k__4, sizeof(__pyx_k__4), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__4 */
  {__pyx_k__5, sizeof(__pyx_k__5), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__5 */
  {__pyx_k__6, sizeof(__pyx_k__6), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__6 */
  {__pyx_k__7, sizeof(__pyx_k__7), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__7 */
  {__pyx_k__8, sizeof(__pyx_k__8), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__8 */
  {__pyx_k__9, sizeof(__pyx_k__9), 0, 1, 0}, /* PyObject cname: __pyx_kp_u__9 */
  {__pyx_k_a, sizeof(__pyx_k_a), 0, 1, 1}, /* PyObject cname: __pyx_n_u_a */
  {__pyx_k_aaaa, sizeof(__pyx_k_aaaa), 0, 1, 1}, /* PyObject cname: __pyx_n_u_aaaa */
  {__pyx_k_add_inet, sizeof(__pyx_k_add_inet), 0, 1, 1}, /* PyObject cname: __pyx_n_u_add_inet */
  {__pyx_k_add_mux, sizeof(__pyx_k_add_mux), 0, 1, 1}, /* PyObject cname: __pyx_n_u_add_mux */
  {__pyx_k_add_remote, sizeof(__pyx_k_add_remote), 0, 1, 1}, /* PyObject cname: __pyx_n_u_add_remote */
  {__pyx_k_add_remote_dir, sizeof(__pyx_k_add_remote_dir), 0, 1, 1}, /* PyObject cname: __pyx_n_u_add_remote_dir */
  {__pyx_k_add_unix, sizeof(__pyx_k_add_unix), 0, 1, 1}, /* PyObject cname: __pyx_n_u_add_unix */
  {__pyx_k_add_vp, sizeof(__pyx_k_add_vp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_add_vp */
  {__pyx_k_add_vps, sizeof(__pyx_k_add_vps), 0, 1, 1}, /* PyObject cname: __pyx_n_u_add_vps */
  {__pyx_k_addr, sizeof(__pyx_k_addr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_addr */
  {__pyx_k_addrs, sizeof(__pyx_k_addrs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_addrs */
  {__pyx_k_aliases, sizeof(__pyx_k_aliases), 0, 1, 1}, /* PyObject cname: __pyx_n_u_aliases */
  {__pyx_k_all_attempts, sizeof(__pyx_k_all_attempts), 0, 1, 1}, /* PyObject cname: __pyx_n_u_all_attempts */
  {__pyx_k_ally, sizeof(__pyx_k_ally), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ally */
  {__pyx_k_an, sizeof(__pyx_k_an), 0, 1, 1}, /* PyObject cname: __pyx_n_u_an */
  {__pyx_k_ancount, sizeof(__pyx_k_ancount), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ancount */
  {__pyx_k_ans, sizeof(__pyx_k_ans), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ans */
  {__pyx_k_ans_addrs, sizeof(__pyx_k_ans_addrs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ans_addrs */
  {__pyx_k_ans_mxes, sizeof(__pyx_k_ans_mxes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ans_mxes */
  {__pyx_k_ans_nses, sizeof(__pyx_k_ans_nses), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ans_nses */
  {__pyx_k_ans_ptrs, sizeof(__pyx_k_ans_ptrs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ans_ptrs */
  {__pyx_k_ans_txts, sizeof(__pyx_k_ans_txts), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ans_txts */
  {__pyx_k_append, sizeof(__pyx_k_append), 0, 1, 1}, /* PyObject cname: __pyx_n_u_append */
  {__pyx_k_ar, sizeof(__pyx_k_ar), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ar */
  {__pyx_k_arcount, sizeof(__pyx_k_arcount), 0, 1, 1}, /* PyObject cname: __pyx_n_u_arcount */
  {__pyx_k_args, sizeof(__pyx_k_args), 0, 1, 1}, /* PyObject cname: __pyx_n_u_args */
  {__pyx_k_ars, sizeof(__pyx_k_ars), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ars */
  {__pyx_k_ascii, sizeof(__pyx_k_ascii), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ascii */
  {__pyx_k_asn4, sizeof(__pyx_k_asn4), 0, 1, 1}, /* PyObject cname: __pyx_n_u_asn4 */
  {__pyx_k_asyncio_coroutines, sizeof(__pyx_k_asyncio_coroutines), 0, 1, 1}, /* PyObject cname: __pyx_n_u_asyncio_coroutines */
  {__pyx_k_attempt, sizeof(__pyx_k_attempt), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_attempt */
  {__pyx_k_attempts, sizeof(__pyx_k_attempts), 0, 1, 1}, /* PyObject cname: __pyx_n_u_attempts */
  {__pyx_k_attempts_1, sizeof(__pyx_k_attempts_1), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_attempts_1 */
  {__pyx_k_b, sizeof(__pyx_k_b), 0, 1, 1}, /* PyObject cname: __pyx_n_u_b */
  {__pyx_k_base, sizeof(__pyx_k_base), 0, 1, 1}, /* PyObject cname: __pyx_n_u_base */
  {__pyx_k_begin, sizeof(__pyx_k_begin), 0, 1, 1}, /* PyObject cname: __pyx_n_u_begin */
  {__pyx_k_binascii, sizeof(__pyx_k_binascii), 0, 1, 1}, /* PyObject cname: __pyx_n_u_binascii */
  {__pyx_k_buf, sizeof(__pyx_k_buf), 0, 1, 1}, /* PyObject cname: __pyx_n_u_buf */
  {__pyx_k_bufs, sizeof(__pyx_k_bufs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_bufs */
  {__pyx_k_bytes_from, sizeof(__pyx_k_bytes_from), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_bytes_from */
  {__pyx_k_bz2, sizeof(__pyx_k_bz2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_bz2 */
  {__pyx_k_c, sizeof(__pyx_k_c), 0, 1, 1}, /* PyObject cname: __pyx_n_u_c */
  {__pyx_k_c_2, sizeof(__pyx_k_c_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_c_2 */
  {__pyx_k_c_3, sizeof(__pyx_k_c_3), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_c_3 */
  {__pyx_k_c_4, sizeof(__pyx_k_c_4), 0, 1, 1}, /* PyObject cname: __pyx_n_u_c_4 */
  {__pyx_k_c_cycle, sizeof(__pyx_k_c_cycle), 0, 1, 1}, /* PyObject cname: __pyx_n_u_c_cycle */
  {__pyx_k_c_list, sizeof(__pyx_k_c_list), 0, 1, 1}, /* PyObject cname: __pyx_n_u_c_list */
  {__pyx_k_c_sff, sizeof(__pyx_k_c_sff), 0, 1, 1}, /* PyObject cname: __pyx_n_u_c_sff */
  {__pyx_k_can_only_specify_either_TCP_sequ, sizeof(__pyx_k_can_only_specify_either_TCP_sequ), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_can_only_specify_either_TCP_sequ */
  {__pyx_k_cannot_add_filter_to_non_readabl, sizeof(__pyx_k_cannot_add_filter_to_non_readabl), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_add_filter_to_non_readabl */
  {__pyx_k_cannot_filter, sizeof(__pyx_k_cannot_filter), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_filter */
  {__pyx_k_cannot_provide_both_timeout_and, sizeof(__pyx_k_cannot_provide_both_timeout_and), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_provide_both_timeout_and */
  {__pyx_k_cannot_run_synchronous_measureme, sizeof(__pyx_k_cannot_run_synchronous_measureme), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_run_synchronous_measureme */
  {__pyx_k_cannot_specify_ICMP_checksum_wit, sizeof(__pyx_k_cannot_specify_ICMP_checksum_wit), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_specify_ICMP_checksum_wit */
  {__pyx_k_cannot_specify_ICMP_parameters_w, sizeof(__pyx_k_cannot_specify_ICMP_parameters_w), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_specify_ICMP_parameters_w */
  {__pyx_k_cannot_specify_source_or_destina, sizeof(__pyx_k_cannot_specify_source_or_destina), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_specify_source_or_destina */
  {__pyx_k_cannot_specify_source_or_destina_2, sizeof(__pyx_k_cannot_specify_source_or_destina_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_specify_source_or_destina_2 */
  {__pyx_k_cannot_specify_tcp_ack_with, sizeof(__pyx_k_cannot_specify_tcp_ack_with), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_specify_tcp_ack_with */
  {__pyx_k_cannot_specify_tcp_seq_with, sizeof(__pyx_k_cannot_specify_tcp_seq_with), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_cannot_specify_tcp_seq_with */
  {__pyx_k_cc, sizeof(__pyx_k_cc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_cc */
  {__pyx_k_class_getitem, sizeof(__pyx_k_class_getitem), 0, 1, 1}, /* PyObject cname: __pyx_n_u_class_getitem */
  {__pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 1, 1}, /* PyObject cname: __pyx_n_u_cline_in_traceback */
  {__pyx_k_close, sizeof(__pyx_k_close), 0, 1, 1}, /* PyObject cname: __pyx_n_u_close */
  {__pyx_k_cmd, sizeof(__pyx_k_cmd), 0, 1, 1}, /* PyObject cname: __pyx_n_u_cmd */
  {__pyx_k_confidence, sizeof(__pyx_k_confidence), 0, 1, 1}, /* PyObject cname: __pyx_n_u_confidence */
  {__pyx_k_could_not_allocate_hopiter, sizeof(__pyx_k_could_not_allocate_hopiter), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_could_not_allocate_hopiter */
  {__pyx_k_could_not_build_filter, sizeof(__pyx_k_could_not_build_filter), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_could_not_build_filter */
  {__pyx_k_could_not_connect_to, sizeof(__pyx_k_could_not_connect_to), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_could_not_connect_to */
  {__pyx_k_could_not_extract, sizeof(__pyx_k_could_not_extract), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_could_not_extract */
  {__pyx_k_could_not_open_file, sizeof(__pyx_k_could_not_open_file), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_could_not_open_file */
  {__pyx_k_could_not_schedule_command, sizeof(__pyx_k_could_not_schedule_command), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_could_not_schedule_command */
  {__pyx_k_could_not_write, sizeof(__pyx_k_could_not_write), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_could_not_write */
  {__pyx_k_count, sizeof(__pyx_k_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_count */
  {__pyx_k_count_2, sizeof(__pyx_k_count_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_count_2 */
  {__pyx_k_cstr, sizeof(__pyx_k_cstr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_cstr */
  {__pyx_k_d, sizeof(__pyx_k_d), 0, 1, 1}, /* PyObject cname: __pyx_n_u_d */
  {__pyx_k_d_2, sizeof(__pyx_k_d_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_d_2 */
  {__pyx_k_d_3, sizeof(__pyx_k_d_3), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_d_3 */
  {__pyx_k_data, sizeof(__pyx_k_data), 0, 1, 1}, /* PyObject cname: __pyx_n_u_data */
  {__pyx_k_data_2, sizeof(__pyx_k_data_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_data_2 */
  {__pyx_k_datetime, sizeof(__pyx_k_datetime), 0, 1, 1}, /* PyObject cname: __pyx_n_u_datetime */
  {__pyx_k_dealias, sizeof(__pyx_k_dealias), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dealias */
  {__pyx_k_dealias_2, sizeof(__pyx_k_dealias_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dealias_2 */
  {__pyx_k_dealias_m_ally, sizeof(__pyx_k_dealias_m_ally), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_dealias_m_ally */
  {__pyx_k_dealias_m_mercator, sizeof(__pyx_k_dealias_m_mercator), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_dealias_m_mercator */
  {__pyx_k_dealias_m_midardisc, sizeof(__pyx_k_dealias_m_midardisc), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_dealias_m_midardisc */
  {__pyx_k_dealias_m_midarest, sizeof(__pyx_k_dealias_m_midarest), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_dealias_m_midarest */
  {__pyx_k_dealias_m_prefixscan, sizeof(__pyx_k_dealias_m_prefixscan), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_dealias_m_prefixscan */
  {__pyx_k_dealias_m_radargun, sizeof(__pyx_k_dealias_m_radargun), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_dealias_m_radargun */
  {__pyx_k_decode, sizeof(__pyx_k_decode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_decode */
  {__pyx_k_diff, sizeof(__pyx_k_diff), 0, 1, 1}, /* PyObject cname: __pyx_n_u_diff */
  {__pyx_k_disable, sizeof(__pyx_k_disable), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_disable */
  {__pyx_k_dist, sizeof(__pyx_k_dist), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dist */
  {__pyx_k_dltx, sizeof(__pyx_k_dltx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dltx */
  {__pyx_k_do_ally, sizeof(__pyx_k_do_ally), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_ally */
  {__pyx_k_do_ally_locals_genexpr, sizeof(__pyx_k_do_ally_locals_genexpr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_ally_locals_genexpr */
  {__pyx_k_do_dns, sizeof(__pyx_k_do_dns), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_dns */
  {__pyx_k_do_http, sizeof(__pyx_k_do_http), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_http */
  {__pyx_k_do_mercator, sizeof(__pyx_k_do_mercator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_mercator */
  {__pyx_k_do_midardisc, sizeof(__pyx_k_do_midardisc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_midardisc */
  {__pyx_k_do_midarest, sizeof(__pyx_k_do_midarest), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_midarest */
  {__pyx_k_do_not_specify_icmp_sum_with, sizeof(__pyx_k_do_not_specify_icmp_sum_with), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_do_not_specify_icmp_sum_with */
  {__pyx_k_do_not_specify_kind_when_opening, sizeof(__pyx_k_do_not_specify_kind_when_opening), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_do_not_specify_kind_when_opening */
  {__pyx_k_do_ping, sizeof(__pyx_k_do_ping), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_ping */
  {__pyx_k_do_ping_locals_genexpr, sizeof(__pyx_k_do_ping_locals_genexpr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_ping_locals_genexpr */
  {__pyx_k_do_prefixscan, sizeof(__pyx_k_do_prefixscan), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_prefixscan */
  {__pyx_k_do_prefixscan_locals_genexpr, sizeof(__pyx_k_do_prefixscan_locals_genexpr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_prefixscan_locals_genexpr */
  {__pyx_k_do_radargun, sizeof(__pyx_k_do_radargun), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_radargun */
  {__pyx_k_do_sniff, sizeof(__pyx_k_do_sniff), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_sniff */
  {__pyx_k_do_tbit, sizeof(__pyx_k_do_tbit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_tbit */
  {__pyx_k_do_trace, sizeof(__pyx_k_do_trace), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_trace */
  {__pyx_k_do_trace_locals_genexpr, sizeof(__pyx_k_do_trace_locals_genexpr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_trace_locals_genexpr */
  {__pyx_k_do_tracelb, sizeof(__pyx_k_do_tracelb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_tracelb */
  {__pyx_k_do_tracelb_locals_genexpr, sizeof(__pyx_k_do_tracelb_locals_genexpr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_tracelb_locals_genexpr */
  {__pyx_k_do_udpprobe, sizeof(__pyx_k_do_udpprobe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_do_udpprobe */
  {__pyx_k_doc, sizeof(__pyx_k_doc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_doc */
  {__pyx_k_done, sizeof(__pyx_k_done), 0, 1, 1}, /* PyObject cname: __pyx_n_u_done */
  {__pyx_k_dotasks, sizeof(__pyx_k_dotasks), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dotasks */
  {__pyx_k_dport, sizeof(__pyx_k_dport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dport */
  {__pyx_k_dport_2, sizeof(__pyx_k_dport_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_dport_2 */
  {__pyx_k_dport_invalid_for_method, sizeof(__pyx_k_dport_invalid_for_method), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_dport_invalid_for_method */
  {__pyx_k_dst, sizeof(__pyx_k_dst), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dst */
  {__pyx_k_dst1, sizeof(__pyx_k_dst1), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dst1 */
  {__pyx_k_dst2, sizeof(__pyx_k_dst2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_dst2 */
  {__pyx_k_dst_2, sizeof(__pyx_k_dst_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_dst_2 */
  {__pyx_k_dst_cannot_be_none, sizeof(__pyx_k_dst_cannot_be_none), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_dst_cannot_be_none */
  {__pyx_k_e, sizeof(__pyx_k_e), 0, 1, 1}, /* PyObject cname: __pyx_n_u_e */
  {__pyx_k_ecs, sizeof(__pyx_k_ecs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ecs */
  {__pyx_k_edns_do, sizeof(__pyx_k_edns_do), 0, 1, 1}, /* PyObject cname: __pyx_n_u_edns_do */
  {__pyx_k_edns_version, sizeof(__pyx_k_edns_version), 0, 1, 1}, /* PyObject cname: __pyx_n_u_edns_version */
  {__pyx_k_elem, sizeof(__pyx_k_elem), 0, 1, 1}, /* PyObject cname: __pyx_n_u_elem */
  {__pyx_k_enable, sizeof(__pyx_k_enable), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_enable */
  {__pyx_k_encode, sizeof(__pyx_k_encode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_encode */
  {__pyx_k_end, sizeof(__pyx_k_end), 0, 1, 1}, /* PyObject cname: __pyx_n_u_end */
  {__pyx_k_endswith, sizeof(__pyx_k_endswith), 0, 1, 1}, /* PyObject cname: __pyx_n_u_endswith */
  {__pyx_k_enter, sizeof(__pyx_k_enter), 0, 1, 1}, /* PyObject cname: __pyx_n_u_enter */
  {__pyx_k_enum, sizeof(__pyx_k_enum), 0, 1, 1}, /* PyObject cname: __pyx_n_u_enum */
  {__pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_enumerate */
  {__pyx_k_eof, sizeof(__pyx_k_eof), 0, 1, 1}, /* PyObject cname: __pyx_n_u_eof */
  {__pyx_k_eofcb, sizeof(__pyx_k_eofcb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_eofcb */
  {__pyx_k_err, sizeof(__pyx_k_err), 0, 1, 1}, /* PyObject cname: __pyx_n_u_err */
  {__pyx_k_esc, sizeof(__pyx_k_esc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_esc */
  {__pyx_k_exc_tb, sizeof(__pyx_k_exc_tb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_exc_tb */
  {__pyx_k_exc_type, sizeof(__pyx_k_exc_type), 0, 1, 1}, /* PyObject cname: __pyx_n_u_exc_type */
  {__pyx_k_exc_val, sizeof(__pyx_k_exc_val), 0, 1, 1}, /* PyObject cname: __pyx_n_u_exc_val */
  {__pyx_k_exceptions, sizeof(__pyx_k_exceptions), 0, 1, 1}, /* PyObject cname: __pyx_n_u_exceptions */
  {__pyx_k_exit, sizeof(__pyx_k_exit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_exit */
  {__pyx_k_exp, sizeof(__pyx_k_exp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_exp */
  {__pyx_k_expected_bytes_array_of_4_6_16_b, sizeof(__pyx_k_expected_bytes_array_of_4_6_16_b), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_bytes_array_of_4_6_16_b */
  {__pyx_k_expected_int_for_begin, sizeof(__pyx_k_expected_int_for_begin), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_int_for_begin */
  {__pyx_k_expected_int_for_end, sizeof(__pyx_k_expected_int_for_end), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_int_for_end */
  {__pyx_k_expected_probedef_in_probedefs, sizeof(__pyx_k_expected_probedef_in_probedefs), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_probedef_in_probedefs */
  {__pyx_k_expected_round_in_schedule, sizeof(__pyx_k_expected_round_in_schedule), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_round_in_schedule */
  {__pyx_k_expected_str_in_addrs, sizeof(__pyx_k_expected_str_in_addrs), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_str_in_addrs */
  {__pyx_k_expected_str_in_rrtypes, sizeof(__pyx_k_expected_str_in_rrtypes), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_str_in_rrtypes */
  {__pyx_k_expected_string_for_method, sizeof(__pyx_k_expected_string_for_method), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_string_for_method */
  {__pyx_k_expected_timedelta_for_start, sizeof(__pyx_k_expected_timedelta_for_start), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_expected_timedelta_for_start */
  {__pyx_k_ext, sizeof(__pyx_k_ext), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ext */
  {__pyx_k_ext_2, sizeof(__pyx_k_ext_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ext_2 */
  {__pyx_k_ext_count, sizeof(__pyx_k_ext_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ext_count */
  {__pyx_k_extended_rcode, sizeof(__pyx_k_extended_rcode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_extended_rcode */
  {__pyx_k_extended_rcode_num, sizeof(__pyx_k_extended_rcode_num), 0, 1, 1}, /* PyObject cname: __pyx_n_u_extended_rcode_num */
  {__pyx_k_exts, sizeof(__pyx_k_exts), 0, 1, 1}, /* PyObject cname: __pyx_n_u_exts */
  {__pyx_k_exts_2, sizeof(__pyx_k_exts_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_exts_2 */
  {__pyx_k_f, sizeof(__pyx_k_f), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_f */
  {__pyx_k_far, sizeof(__pyx_k_far), 0, 1, 1}, /* PyObject cname: __pyx_n_u_far */
  {__pyx_k_fbody, sizeof(__pyx_k_fbody), 0, 1, 1}, /* PyObject cname: __pyx_n_u_fbody */
  {__pyx_k_file_not_opened_in_read_mode, sizeof(__pyx_k_file_not_opened_in_read_mode), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_file_not_opened_in_read_mode */
  {__pyx_k_file_not_opened_in_write_mode, sizeof(__pyx_k_file_not_opened_in_write_mode), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_file_not_opened_in_write_mode */
  {__pyx_k_filename, sizeof(__pyx_k_filename), 0, 1, 1}, /* PyObject cname: __pyx_n_u_filename */
  {__pyx_k_filter_types, sizeof(__pyx_k_filter_types), 0, 1, 1}, /* PyObject cname: __pyx_n_u_filter_types */
  {__pyx_k_firsthop, sizeof(__pyx_k_firsthop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_firsthop */
  {__pyx_k_fname, sizeof(__pyx_k_fname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_fname */
  {__pyx_k_format, sizeof(__pyx_k_format), 0, 1, 1}, /* PyObject cname: __pyx_n_u_format */
  {__pyx_k_format_2, sizeof(__pyx_k_format_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_format_2 */
  {__pyx_k_format_spec, sizeof(__pyx_k_format_spec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_format_spec */
  {__pyx_k_fudge, sizeof(__pyx_k_fudge), 0, 1, 1}, /* PyObject cname: __pyx_n_u_fudge */
  {__pyx_k_fudge_value_must_be_between_0_65, sizeof(__pyx_k_fudge_value_must_be_between_0_65), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_fudge_value_must_be_between_0_65 */
  {__pyx_k_func, sizeof(__pyx_k_func), 0, 1, 1}, /* PyObject cname: __pyx_n_u_func */
  {__pyx_k_g, sizeof(__pyx_k_g), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_g */
  {__pyx_k_gaplimit, sizeof(__pyx_k_gaplimit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_gaplimit */
  {__pyx_k_gc, sizeof(__pyx_k_gc), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_gc */
  {__pyx_k_genexpr, sizeof(__pyx_k_genexpr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_genexpr */
  {__pyx_k_getinst, sizeof(__pyx_k_getinst), 0, 1, 1}, /* PyObject cname: __pyx_n_u_getinst */
  {__pyx_k_getstate, sizeof(__pyx_k_getstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_getstate */
  {__pyx_k_gmtime, sizeof(__pyx_k_gmtime), 0, 1, 1}, /* PyObject cname: __pyx_n_u_gmtime */
  {__pyx_k_got_err_from, sizeof(__pyx_k_got_err_from), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_got_err_from */
  {__pyx_k_got_fatal_from, sizeof(__pyx_k_got_fatal_from), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_got_fatal_from */
  {__pyx_k_group, sizeof(__pyx_k_group), 0, 1, 1}, /* PyObject cname: __pyx_n_u_group */
  {__pyx_k_gz, sizeof(__pyx_k_gz), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_gz */
  {__pyx_k_halt, sizeof(__pyx_k_halt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_halt */
  {__pyx_k_has_aliases, sizeof(__pyx_k_has_aliases), 0, 1, 1}, /* PyObject cname: __pyx_n_u_has_aliases */
  {__pyx_k_has_signalled_EOF, sizeof(__pyx_k_has_signalled_EOF), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_has_signalled_EOF */
  {__pyx_k_header_field_body_is_not_ascii, sizeof(__pyx_k_header_field_body_is_not_ascii), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_header_field_body_is_not_ascii */
  {__pyx_k_header_field_name_is_not_ascii, sizeof(__pyx_k_header_field_name_is_not_ascii), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_header_field_name_is_not_ascii */
  {__pyx_k_headers, sizeof(__pyx_k_headers), 0, 1, 1}, /* PyObject cname: __pyx_n_u_headers */
  {__pyx_k_headers_not_dictionary, sizeof(__pyx_k_headers_not_dictionary), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_headers_not_dictionary */
  {__pyx_k_hexlify, sizeof(__pyx_k_hexlify), 0, 1, 1}, /* PyObject cname: __pyx_n_u_hexlify */
  {__pyx_k_hi, sizeof(__pyx_k_hi), 0, 1, 1}, /* PyObject cname: __pyx_n_u_hi */
  {__pyx_k_hop, sizeof(__pyx_k_hop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_hop */
  {__pyx_k_hopc, sizeof(__pyx_k_hopc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_hopc */
  {__pyx_k_hoplimit, sizeof(__pyx_k_hoplimit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_hoplimit */
  {__pyx_k_hops, sizeof(__pyx_k_hops), 0, 1, 1}, /* PyObject cname: __pyx_n_u_hops */
  {__pyx_k_host, sizeof(__pyx_k_host), 0, 1, 1}, /* PyObject cname: __pyx_n_u_host */
  {__pyx_k_htb, sizeof(__pyx_k_htb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_htb */
  {__pyx_k_http, sizeof(__pyx_k_http), 0, 1, 1}, /* PyObject cname: __pyx_n_u_http */
  {__pyx_k_http_2, sizeof(__pyx_k_http_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_http_2 */
  {__pyx_k_i, sizeof(__pyx_k_i), 0, 1, 1}, /* PyObject cname: __pyx_n_u_i */
  {__pyx_k_i_2, sizeof(__pyx_k_i_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_i_2 */
  {__pyx_k_i_3, sizeof(__pyx_k_i_3), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_i_3 */
  {__pyx_k_icmp, sizeof(__pyx_k_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_icmp */
  {__pyx_k_icmp_echo, sizeof(__pyx_k_icmp_echo), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_icmp_echo */
  {__pyx_k_icmp_icmpid, sizeof(__pyx_k_icmp_icmpid), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_icmp_icmpid */
  {__pyx_k_icmp_id, sizeof(__pyx_k_icmp_id), 0, 1, 1}, /* PyObject cname: __pyx_n_u_icmp_id */
  {__pyx_k_icmp_id_2, sizeof(__pyx_k_icmp_id_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_icmp_id_2 */
  {__pyx_k_icmp_id_invalid_for_method, sizeof(__pyx_k_icmp_id_invalid_for_method), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_icmp_id_invalid_for_method */
  {__pyx_k_icmp_paris, sizeof(__pyx_k_icmp_paris), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_icmp_paris */
  {__pyx_k_icmp_seq, sizeof(__pyx_k_icmp_seq), 0, 1, 1}, /* PyObject cname: __pyx_n_u_icmp_seq */
  {__pyx_k_icmp_sum, sizeof(__pyx_k_icmp_sum), 0, 1, 1}, /* PyObject cname: __pyx_n_u_icmp_sum */
  {__pyx_k_icmp_sum_2, sizeof(__pyx_k_icmp_sum_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_icmp_sum_2 */
  {__pyx_k_icmp_sum_invalid_for_method, sizeof(__pyx_k_icmp_sum_invalid_for_method), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_icmp_sum_invalid_for_method */
  {__pyx_k_index, sizeof(__pyx_k_index), 0, 1, 1}, /* PyObject cname: __pyx_n_u_index */
  {__pyx_k_init, sizeof(__pyx_k_init), 0, 1, 1}, /* PyObject cname: __pyx_n_u_init */
  {__pyx_k_initializing, sizeof(__pyx_k_initializing), 0, 1, 1}, /* PyObject cname: __pyx_n_u_initializing */
  {__pyx_k_insecure, sizeof(__pyx_k_insecure), 0, 1, 1}, /* PyObject cname: __pyx_n_u_insecure */
  {__pyx_k_inst, sizeof(__pyx_k_inst), 0, 1, 1}, /* PyObject cname: __pyx_n_u_inst */
  {__pyx_k_inst_2, sizeof(__pyx_k_inst_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_inst_2 */
  {__pyx_k_inst_list_contains_non_ScamperIn, sizeof(__pyx_k_inst_list_contains_non_ScamperIn), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_inst_list_contains_non_ScamperIn */
  {__pyx_k_inst_not_ScamperInst_type, sizeof(__pyx_k_inst_not_ScamperInst_type), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_inst_not_ScamperInst_type */
  {__pyx_k_instances, sizeof(__pyx_k_instances), 0, 1, 1}, /* PyObject cname: __pyx_n_u_instances */
  {__pyx_k_insts, sizeof(__pyx_k_insts), 0, 1, 1}, /* PyObject cname: __pyx_n_u_insts */
  {__pyx_k_invalid_ICMP_ID, sizeof(__pyx_k_invalid_ICMP_ID), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_ICMP_ID */
  {__pyx_k_invalid_TTL, sizeof(__pyx_k_invalid_TTL), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_TTL */
  {__pyx_k_invalid_address, sizeof(__pyx_k_invalid_address), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_address */
  {__pyx_k_invalid_address_2, sizeof(__pyx_k_invalid_address_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_address_2 */
  {__pyx_k_invalid_destination_port, sizeof(__pyx_k_invalid_destination_port), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_destination_port */
  {__pyx_k_invalid_dport, sizeof(__pyx_k_invalid_dport), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_dport */
  {__pyx_k_invalid_dst, sizeof(__pyx_k_invalid_dst), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_dst */
  {__pyx_k_invalid_hop_index, sizeof(__pyx_k_invalid_hop_index), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_hop_index */
  {__pyx_k_invalid_icmp_id, sizeof(__pyx_k_invalid_icmp_id), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_icmp_id */
  {__pyx_k_invalid_icmp_sum, sizeof(__pyx_k_invalid_icmp_sum), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_icmp_sum */
  {__pyx_k_invalid_limit_pkt_count, sizeof(__pyx_k_invalid_limit_pkt_count), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_limit_pkt_count */
  {__pyx_k_invalid_limit_time, sizeof(__pyx_k_invalid_limit_time), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_limit_time */
  {__pyx_k_invalid_mode, sizeof(__pyx_k_invalid_mode), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_mode */
  {__pyx_k_invalid_size, sizeof(__pyx_k_invalid_size), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_size */
  {__pyx_k_invalid_sport, sizeof(__pyx_k_invalid_sport), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_sport */
  {__pyx_k_invalid_src, sizeof(__pyx_k_invalid_src), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_src */
  {__pyx_k_invalid_type, sizeof(__pyx_k_invalid_type), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_type */
  {__pyx_k_invalid_url, sizeof(__pyx_k_invalid_url), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_invalid_url */
  {__pyx_k_ipv4, sizeof(__pyx_k_ipv4), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ipv4 */
  {__pyx_k_is_6to4, sizeof(__pyx_k_is_6to4), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_6to4 */
  {__pyx_k_is_ally, sizeof(__pyx_k_is_ally), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_ally */
  {__pyx_k_is_bump, sizeof(__pyx_k_is_bump), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_bump */
  {__pyx_k_is_coroutine, sizeof(__pyx_k_is_coroutine), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_coroutine */
  {__pyx_k_is_data, sizeof(__pyx_k_is_data), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_data */
  {__pyx_k_is_done, sizeof(__pyx_k_is_done), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_done */
  {__pyx_k_is_eof, sizeof(__pyx_k_is_eof), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_eof */
  {__pyx_k_is_from_target, sizeof(__pyx_k_is_from_target), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_from_target */
  {__pyx_k_is_hdr, sizeof(__pyx_k_is_hdr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_hdr */
  {__pyx_k_is_icmp, sizeof(__pyx_k_is_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_icmp */
  {__pyx_k_is_icmp_echo_reply, sizeof(__pyx_k_is_icmp_echo_reply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_icmp_echo_reply */
  {__pyx_k_is_icmp_ptb, sizeof(__pyx_k_is_icmp_ptb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_icmp_ptb */
  {__pyx_k_is_icmp_q, sizeof(__pyx_k_is_icmp_q), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_icmp_q */
  {__pyx_k_is_icmp_time, sizeof(__pyx_k_is_icmp_time), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_icmp_time */
  {__pyx_k_is_icmp_tsreply, sizeof(__pyx_k_is_icmp_tsreply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_icmp_tsreply */
  {__pyx_k_is_icmp_ttl_exp, sizeof(__pyx_k_is_icmp_ttl_exp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_icmp_ttl_exp */
  {__pyx_k_is_icmp_unreach, sizeof(__pyx_k_is_icmp_unreach), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_icmp_unreach */
  {__pyx_k_is_icmp_unreach_port, sizeof(__pyx_k_is_icmp_unreach_port), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_icmp_unreach_port */
  {__pyx_k_is_ipv4, sizeof(__pyx_k_is_ipv4), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_ipv4 */
  {__pyx_k_is_ipv6, sizeof(__pyx_k_is_ipv6), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_ipv6 */
  {__pyx_k_is_linklocal, sizeof(__pyx_k_is_linklocal), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_linklocal */
  {__pyx_k_is_mercator, sizeof(__pyx_k_is_mercator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_mercator */
  {__pyx_k_is_midardisc, sizeof(__pyx_k_is_midardisc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_midardisc */
  {__pyx_k_is_midarest, sizeof(__pyx_k_is_midarest), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_midarest */
  {__pyx_k_is_mpls, sizeof(__pyx_k_is_mpls), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_mpls */
  {__pyx_k_is_prefixscan, sizeof(__pyx_k_is_prefixscan), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_prefixscan */
  {__pyx_k_is_radargun, sizeof(__pyx_k_is_radargun), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_radargun */
  {__pyx_k_is_read, sizeof(__pyx_k_is_read), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_read */
  {__pyx_k_is_reserved, sizeof(__pyx_k_is_reserved), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_reserved */
  {__pyx_k_is_rfc1918, sizeof(__pyx_k_is_rfc1918), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_rfc1918 */
  {__pyx_k_is_rx, sizeof(__pyx_k_is_rx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_rx */
  {__pyx_k_is_stop_completed, sizeof(__pyx_k_is_stop_completed), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_stop_completed */
  {__pyx_k_is_stop_error, sizeof(__pyx_k_is_stop_error), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_stop_error */
  {__pyx_k_is_stop_gaplimit, sizeof(__pyx_k_is_stop_gaplimit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_stop_gaplimit */
  {__pyx_k_is_stop_gss, sizeof(__pyx_k_is_stop_gss), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_stop_gss */
  {__pyx_k_is_stop_halted, sizeof(__pyx_k_is_stop_halted), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_stop_halted */
  {__pyx_k_is_stop_hoplimit, sizeof(__pyx_k_is_stop_hoplimit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_stop_hoplimit */
  {__pyx_k_is_stop_icmp, sizeof(__pyx_k_is_stop_icmp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_stop_icmp */
  {__pyx_k_is_stop_loop, sizeof(__pyx_k_is_stop_loop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_stop_loop */
  {__pyx_k_is_stop_noreason, sizeof(__pyx_k_is_stop_noreason), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_stop_noreason */
  {__pyx_k_is_stop_unreach, sizeof(__pyx_k_is_stop_unreach), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_stop_unreach */
  {__pyx_k_is_tcp, sizeof(__pyx_k_is_tcp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_tcp */
  {__pyx_k_is_tcp_ack_sport, sizeof(__pyx_k_is_tcp_ack_sport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_tcp_ack_sport */
  {__pyx_k_is_tls, sizeof(__pyx_k_is_tls), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_tls */
  {__pyx_k_is_tx, sizeof(__pyx_k_is_tx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_tx */
  {__pyx_k_is_udp, sizeof(__pyx_k_is_udp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_udp */
  {__pyx_k_is_unicast, sizeof(__pyx_k_is_unicast), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_unicast */
  {__pyx_k_is_vary_dport, sizeof(__pyx_k_is_vary_dport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_vary_dport */
  {__pyx_k_is_vary_sport, sizeof(__pyx_k_is_vary_sport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_vary_sport */
  {__pyx_k_is_write, sizeof(__pyx_k_is_write), 0, 1, 1}, /* PyObject cname: __pyx_n_u_is_write */
  {__pyx_k_isascii, sizeof(__pyx_k_isascii), 0, 1, 1}, /* PyObject cname: __pyx_n_u_isascii */
  {__pyx_k_isdecimal, sizeof(__pyx_k_isdecimal), 0, 1, 1}, /* PyObject cname: __pyx_n_u_isdecimal */
  {__pyx_k_isenabled, sizeof(__pyx_k_isenabled), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_isenabled */
  {__pyx_k_iter, sizeof(__pyx_k_iter), 0, 1, 1}, /* PyObject cname: __pyx_n_u_iter */
  {__pyx_k_j, sizeof(__pyx_k_j), 0, 1, 1}, /* PyObject cname: __pyx_n_u_j */
  {__pyx_k_json, sizeof(__pyx_k_json), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_json */
  {__pyx_k_json_2, sizeof(__pyx_k_json_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_json_2 */
  {__pyx_k_keys, sizeof(__pyx_k_keys), 0, 1, 1}, /* PyObject cname: __pyx_n_u_keys */
  {__pyx_k_kind, sizeof(__pyx_k_kind), 0, 1, 1}, /* PyObject cname: __pyx_n_u_kind */
  {__pyx_k_l, sizeof(__pyx_k_l), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_l */
  {__pyx_k_label, sizeof(__pyx_k_label), 0, 1, 1}, /* PyObject cname: __pyx_n_u_label */
  {__pyx_k_length, sizeof(__pyx_k_length), 0, 1, 1}, /* PyObject cname: __pyx_n_u_length */
  {__pyx_k_lib_python_scamper_pyx, sizeof(__pyx_k_lib_python_scamper_pyx), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_lib_python_scamper_pyx */
  {__pyx_k_limit_pkt_count, sizeof(__pyx_k_limit_pkt_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_limit_pkt_count */
  {__pyx_k_limit_time, sizeof(__pyx_k_limit_time), 0, 1, 1}, /* PyObject cname: __pyx_n_u_limit_time */
  {__pyx_k_link, sizeof(__pyx_k_link), 0, 1, 1}, /* PyObject cname: __pyx_n_u_link */
  {__pyx_k_link_count, sizeof(__pyx_k_link_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_link_count */
  {__pyx_k_linkc, sizeof(__pyx_k_linkc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_linkc */
  {__pyx_k_links, sizeof(__pyx_k_links), 0, 1, 1}, /* PyObject cname: __pyx_n_u_links */
  {__pyx_k_list_not_allowed_with_primitive, sizeof(__pyx_k_list_not_allowed_with_primitive), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_list_not_allowed_with_primitive */
  {__pyx_k_listallowed, sizeof(__pyx_k_listallowed), 0, 1, 1}, /* PyObject cname: __pyx_n_u_listallowed */
  {__pyx_k_listdir, sizeof(__pyx_k_listdir), 0, 1, 1}, /* PyObject cname: __pyx_n_u_listdir */
  {__pyx_k_loc, sizeof(__pyx_k_loc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_loc */
  {__pyx_k_loops, sizeof(__pyx_k_loops), 0, 1, 1}, /* PyObject cname: __pyx_n_u_loops */
  {__pyx_k_lower, sizeof(__pyx_k_lower), 0, 1, 1}, /* PyObject cname: __pyx_n_u_lower */
  {__pyx_k_m, sizeof(__pyx_k_m), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_m */
  {__pyx_k_m_2, sizeof(__pyx_k_m_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_m_2 */
  {__pyx_k_main, sizeof(__pyx_k_main), 0, 1, 1}, /* PyObject cname: __pyx_n_u_main */
  {__pyx_k_mc, sizeof(__pyx_k_mc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mc */
  {__pyx_k_md, sizeof(__pyx_k_md), 0, 1, 1}, /* PyObject cname: __pyx_n_u_md */
  {__pyx_k_me, sizeof(__pyx_k_me), 0, 1, 1}, /* PyObject cname: __pyx_n_u_me */
  {__pyx_k_mercator, sizeof(__pyx_k_mercator), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mercator */
  {__pyx_k_message, sizeof(__pyx_k_message), 0, 1, 1}, /* PyObject cname: __pyx_n_u_message */
  {__pyx_k_meta, sizeof(__pyx_k_meta), 0, 1, 1}, /* PyObject cname: __pyx_n_u_meta */
  {__pyx_k_metaclass, sizeof(__pyx_k_metaclass), 0, 1, 1}, /* PyObject cname: __pyx_n_u_metaclass */
  {__pyx_k_method, sizeof(__pyx_k_method), 0, 1, 1}, /* PyObject cname: __pyx_n_u_method */
  {__pyx_k_microseconds, sizeof(__pyx_k_microseconds), 0, 1, 1}, /* PyObject cname: __pyx_n_u_microseconds */
  {__pyx_k_midardisc, sizeof(__pyx_k_midardisc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_midardisc */
  {__pyx_k_midarest, sizeof(__pyx_k_midarest), 0, 1, 1}, /* PyObject cname: __pyx_n_u_midarest */
  {__pyx_k_missing_IP_address_in_probedef, sizeof(__pyx_k_missing_IP_address_in_probedef), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_missing_IP_address_in_probedef */
  {__pyx_k_missing_addrs, sizeof(__pyx_k_missing_addrs), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_missing_addrs */
  {__pyx_k_missing_probedefs, sizeof(__pyx_k_missing_probedefs), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_missing_probedefs */
  {__pyx_k_missing_schedule, sizeof(__pyx_k_missing_schedule), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_missing_schedule */
  {__pyx_k_mode, sizeof(__pyx_k_mode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mode */
  {__pyx_k_module, sizeof(__pyx_k_module), 0, 1, 1}, /* PyObject cname: __pyx_n_u_module */
  {__pyx_k_morecb, sizeof(__pyx_k_morecb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_morecb */
  {__pyx_k_mpls, sizeof(__pyx_k_mpls), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mpls */
  {__pyx_k_mpls_count, sizeof(__pyx_k_mpls_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mpls_count */
  {__pyx_k_mpls_exp, sizeof(__pyx_k_mpls_exp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mpls_exp */
  {__pyx_k_mpls_label, sizeof(__pyx_k_mpls_label), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mpls_label */
  {__pyx_k_mpls_lse, sizeof(__pyx_k_mpls_lse), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mpls_lse */
  {__pyx_k_mpls_lses, sizeof(__pyx_k_mpls_lses), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mpls_lses */
  {__pyx_k_mpls_s, sizeof(__pyx_k_mpls_s), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mpls_s */
  {__pyx_k_mpls_ttl, sizeof(__pyx_k_mpls_ttl), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mpls_ttl */
  {__pyx_k_mro_entries, sizeof(__pyx_k_mro_entries), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mro_entries */
  {__pyx_k_ms, sizeof(__pyx_k_ms), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ms */
  {__pyx_k_ms_2, sizeof(__pyx_k_ms_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ms_2 */
  {__pyx_k_msg, sizeof(__pyx_k_msg), 0, 1, 1}, /* PyObject cname: __pyx_n_u_msg */
  {__pyx_k_mtu, sizeof(__pyx_k_mtu), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mtu */
  {__pyx_k_must_specify_destination_address, sizeof(__pyx_k_must_specify_destination_address), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_must_specify_destination_address */
  {__pyx_k_must_specify_dst_method_and_url, sizeof(__pyx_k_must_specify_dst_method_and_url), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_must_specify_dst_method_and_url */
  {__pyx_k_mux, sizeof(__pyx_k_mux), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mux */
  {__pyx_k_mx, sizeof(__pyx_k_mx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mx */
  {__pyx_k_mxes, sizeof(__pyx_k_mxes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_mxes */
  {__pyx_k_name, sizeof(__pyx_k_name), 0, 1, 1}, /* PyObject cname: __pyx_n_u_name */
  {__pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_name_2 */
  {__pyx_k_name_must_be_a_string, sizeof(__pyx_k_name_must_be_a_string), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_name_must_be_a_string */
  {__pyx_k_near, sizeof(__pyx_k_near), 0, 1, 1}, /* PyObject cname: __pyx_n_u_near */
  {__pyx_k_next, sizeof(__pyx_k_next), 0, 1, 1}, /* PyObject cname: __pyx_n_u_next */
  {__pyx_k_next_2, sizeof(__pyx_k_next_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_next_2 */
  {__pyx_k_nit, sizeof(__pyx_k_nit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_nit */
  {__pyx_k_no_connected_ScamperInst, sizeof(__pyx_k_no_connected_ScamperInst), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_no_connected_ScamperInst */
  {__pyx_k_no_usable_ScamperInst, sizeof(__pyx_k_no_usable_ScamperInst), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_no_usable_ScamperInst */
  {__pyx_k_node, sizeof(__pyx_k_node), 0, 1, 1}, /* PyObject cname: __pyx_n_u_node */
  {__pyx_k_node_count, sizeof(__pyx_k_node_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_node_count */
  {__pyx_k_nodec, sizeof(__pyx_k_nodec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_nodec */
  {__pyx_k_nodes, sizeof(__pyx_k_nodes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_nodes */
  {__pyx_k_not_implemented, sizeof(__pyx_k_not_implemented), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_not_implemented */
  {__pyx_k_not_readable, sizeof(__pyx_k_not_readable), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_not_readable */
  {__pyx_k_note, sizeof(__pyx_k_note), 0, 1, 1}, /* PyObject cname: __pyx_n_u_note */
  {__pyx_k_notes, sizeof(__pyx_k_notes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_notes */
  {__pyx_k_nothing_to_filter, sizeof(__pyx_k_nothing_to_filter), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_nothing_to_filter */
  {__pyx_k_now, sizeof(__pyx_k_now), 0, 1, 1}, /* PyObject cname: __pyx_n_u_now */
  {__pyx_k_ns, sizeof(__pyx_k_ns), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ns */
  {__pyx_k_nscount, sizeof(__pyx_k_nscount), 0, 1, 1}, /* PyObject cname: __pyx_n_u_nscount */
  {__pyx_k_nses, sizeof(__pyx_k_nses), 0, 1, 1}, /* PyObject cname: __pyx_n_u_nses */
  {__pyx_k_nsid, sizeof(__pyx_k_nsid), 0, 1, 1}, /* PyObject cname: __pyx_n_u_nsid */
  {__pyx_k_nss, sizeof(__pyx_k_nss), 0, 1, 1}, /* PyObject cname: __pyx_n_u_nss */
  {__pyx_k_o, sizeof(__pyx_k_o), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_o */
  {__pyx_k_o_2, sizeof(__pyx_k_o_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_o_2 */
  {__pyx_k_o_data, sizeof(__pyx_k_o_data), 0, 1, 1}, /* PyObject cname: __pyx_n_u_o_data */
  {__pyx_k_o_type, sizeof(__pyx_k_o_type), 0, 1, 1}, /* PyObject cname: __pyx_n_u_o_type */
  {__pyx_k_obj, sizeof(__pyx_k_obj), 0, 1, 1}, /* PyObject cname: __pyx_n_u_obj */
  {__pyx_k_object, sizeof(__pyx_k_object), 0, 1, 1}, /* PyObject cname: __pyx_n_u_object */
  {__pyx_k_onion, sizeof(__pyx_k_onion), 0, 1, 1}, /* PyObject cname: __pyx_n_u_onion */
  {__pyx_k_opt, sizeof(__pyx_k_opt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_opt */
  {__pyx_k_os, sizeof(__pyx_k_os), 0, 1, 1}, /* PyObject cname: __pyx_n_u_os */
  {__pyx_k_out, sizeof(__pyx_k_out), 0, 1, 1}, /* PyObject cname: __pyx_n_u_out */
  {__pyx_k_outfile, sizeof(__pyx_k_outfile), 0, 1, 1}, /* PyObject cname: __pyx_n_u_outfile */
  {__pyx_k_outfile_not_ScamperFile, sizeof(__pyx_k_outfile_not_ScamperFile), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_outfile_not_ScamperFile */
  {__pyx_k_outfile_not_opened_in_write_mode, sizeof(__pyx_k_outfile_not_opened_in_write_mode), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_outfile_not_opened_in_write_mode */
  {__pyx_k_p, sizeof(__pyx_k_p), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_p */
  {__pyx_k_p_2, sizeof(__pyx_k_p_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_p_2 */
  {__pyx_k_p_3, sizeof(__pyx_k_p_3), 0, 1, 1}, /* PyObject cname: __pyx_n_u_p_3 */
  {__pyx_k_p_P, sizeof(__pyx_k_p_P), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_p_P */
  {__pyx_k_param, sizeof(__pyx_k_param), 0, 1, 1}, /* PyObject cname: __pyx_n_u_param */
  {__pyx_k_path, sizeof(__pyx_k_path), 0, 1, 1}, /* PyObject cname: __pyx_n_u_path */
  {__pyx_k_payload, sizeof(__pyx_k_payload), 0, 1, 1}, /* PyObject cname: __pyx_n_u_payload */
  {__pyx_k_pc, sizeof(__pyx_k_pc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pc */
  {__pyx_k_pd, sizeof(__pyx_k_pd), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pd */
  {__pyx_k_pf, sizeof(__pyx_k_pf), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pf */
  {__pyx_k_pi, sizeof(__pyx_k_pi), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pi */
  {__pyx_k_ping, sizeof(__pyx_k_ping), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ping */
  {__pyx_k_ping_2, sizeof(__pyx_k_ping_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ping_2 */
  {__pyx_k_pkt, sizeof(__pyx_k_pkt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pkt */
  {__pyx_k_place, sizeof(__pyx_k_place), 0, 1, 1}, /* PyObject cname: __pyx_n_u_place */
  {__pyx_k_pmtud, sizeof(__pyx_k_pmtud), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pmtud */
  {__pyx_k_poll, sizeof(__pyx_k_poll), 0, 1, 1}, /* PyObject cname: __pyx_n_u_poll */
  {__pyx_k_pop, sizeof(__pyx_k_pop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pop */
  {__pyx_k_port, sizeof(__pyx_k_port), 0, 1, 1}, /* PyObject cname: __pyx_n_u_port */
  {__pyx_k_prefixlen, sizeof(__pyx_k_prefixlen), 0, 1, 1}, /* PyObject cname: __pyx_n_u_prefixlen */
  {__pyx_k_prefixscan, sizeof(__pyx_k_prefixscan), 0, 1, 1}, /* PyObject cname: __pyx_n_u_prefixscan */
  {__pyx_k_prepare, sizeof(__pyx_k_prepare), 0, 1, 1}, /* PyObject cname: __pyx_n_u_prepare */
  {__pyx_k_primitive, sizeof(__pyx_k_primitive), 0, 1, 1}, /* PyObject cname: __pyx_n_u_primitive */
  {__pyx_k_probe, sizeof(__pyx_k_probe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_probe */
  {__pyx_k_probe_2, sizeof(__pyx_k_probe_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_probe_2 */
  {__pyx_k_probe_count, sizeof(__pyx_k_probe_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_probe_count */
  {__pyx_k_probe_flowid, sizeof(__pyx_k_probe_flowid), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_probe_flowid */
  {__pyx_k_probe_sent, sizeof(__pyx_k_probe_sent), 0, 1, 1}, /* PyObject cname: __pyx_n_u_probe_sent */
  {__pyx_k_probec, sizeof(__pyx_k_probec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_probec */
  {__pyx_k_probedef, sizeof(__pyx_k_probedef), 0, 1, 1}, /* PyObject cname: __pyx_n_u_probedef */
  {__pyx_k_probedef_count, sizeof(__pyx_k_probedef_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_probedef_count */
  {__pyx_k_probedefs, sizeof(__pyx_k_probedefs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_probedefs */
  {__pyx_k_probes, sizeof(__pyx_k_probes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_probes */
  {__pyx_k_probeset, sizeof(__pyx_k_probeset), 0, 1, 1}, /* PyObject cname: __pyx_n_u_probeset */
  {__pyx_k_property, sizeof(__pyx_k_property), 0, 1, 1}, /* PyObject cname: __pyx_n_u_property */
  {__pyx_k_ptr, sizeof(__pyx_k_ptr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ptr */
  {__pyx_k_ptrs, sizeof(__pyx_k_ptrs), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ptrs */
  {__pyx_k_pyx_state, sizeof(__pyx_k_pyx_state), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_state */
  {__pyx_k_pyx_vtable, sizeof(__pyx_k_pyx_vtable), 0, 1, 1}, /* PyObject cname: __pyx_n_u_pyx_vtable */
  {__pyx_k_q, sizeof(__pyx_k_q), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_q */
  {__pyx_k_qclass, sizeof(__pyx_k_qclass), 0, 1, 1}, /* PyObject cname: __pyx_n_u_qclass */
  {__pyx_k_qname, sizeof(__pyx_k_qname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_qname */
  {__pyx_k_qtype, sizeof(__pyx_k_qtype), 0, 1, 1}, /* PyObject cname: __pyx_n_u_qtype */
  {__pyx_k_qualname, sizeof(__pyx_k_qualname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_qualname */
  {__pyx_k_query, sizeof(__pyx_k_query), 0, 1, 1}, /* PyObject cname: __pyx_n_u_query */
  {__pyx_k_query_2, sizeof(__pyx_k_query_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_query_2 */
  {__pyx_k_queued, sizeof(__pyx_k_queued), 0, 1, 1}, /* PyObject cname: __pyx_n_u_queued */
  {__pyx_k_r, sizeof(__pyx_k_r), 0, 1, 1}, /* PyObject cname: __pyx_n_u_r */
  {__pyx_k_r_2, sizeof(__pyx_k_r_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_r_2 */
  {__pyx_k_r_3, sizeof(__pyx_k_r_3), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_r_3 */
  {__pyx_k_radargun, sizeof(__pyx_k_radargun), 0, 1, 1}, /* PyObject cname: __pyx_n_u_radargun */
  {__pyx_k_range, sizeof(__pyx_k_range), 0, 1, 1}, /* PyObject cname: __pyx_n_u_range */
  {__pyx_k_rc, sizeof(__pyx_k_rc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rc */
  {__pyx_k_rclass, sizeof(__pyx_k_rclass), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rclass */
  {__pyx_k_rcode, sizeof(__pyx_k_rcode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rcode */
  {__pyx_k_rcode_num, sizeof(__pyx_k_rcode_num), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rcode_num */
  {__pyx_k_rd, sizeof(__pyx_k_rd), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rd */
  {__pyx_k_re, sizeof(__pyx_k_re), 0, 1, 1}, /* PyObject cname: __pyx_n_u_re */
  {__pyx_k_read, sizeof(__pyx_k_read), 0, 1, 1}, /* PyObject cname: __pyx_n_u_read */
  {__pyx_k_rec, sizeof(__pyx_k_rec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rec */
  {__pyx_k_recordroute, sizeof(__pyx_k_recordroute), 0, 1, 1}, /* PyObject cname: __pyx_n_u_recordroute */
  {__pyx_k_reduce, sizeof(__pyx_k_reduce), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce */
  {__pyx_k_reduce_cython, sizeof(__pyx_k_reduce_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce_cython */
  {__pyx_k_reduce_ex, sizeof(__pyx_k_reduce_ex), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reduce_ex */
  {__pyx_k_remote, sizeof(__pyx_k_remote), 0, 1, 1}, /* PyObject cname: __pyx_n_u_remote */
  {__pyx_k_remote_dir, sizeof(__pyx_k_remote_dir), 0, 1, 1}, /* PyObject cname: __pyx_n_u_remote_dir */
  {__pyx_k_remove, sizeof(__pyx_k_remove), 0, 1, 1}, /* PyObject cname: __pyx_n_u_remove */
  {__pyx_k_replies, sizeof(__pyx_k_replies), 0, 1, 1}, /* PyObject cname: __pyx_n_u_replies */
  {__pyx_k_reply, sizeof(__pyx_k_reply), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reply */
  {__pyx_k_reply_count, sizeof(__pyx_k_reply_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reply_count */
  {__pyx_k_replyc, sizeof(__pyx_k_replyc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_replyc */
  {__pyx_k_reserved, sizeof(__pyx_k_reserved), 0, 1, 1}, /* PyObject cname: __pyx_n_u_reserved */
  {__pyx_k_response_hdr_byname, sizeof(__pyx_k_response_hdr_byname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_response_hdr_byname */
  {__pyx_k_responses, sizeof(__pyx_k_responses), 0, 1, 1}, /* PyObject cname: __pyx_n_u_responses */
  {__pyx_k_rg, sizeof(__pyx_k_rg), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rg */
  {__pyx_k_ri, sizeof(__pyx_k_ri), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ri */
  {__pyx_k_rounds, sizeof(__pyx_k_rounds), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rounds */
  {__pyx_k_rounds_not_an_integer, sizeof(__pyx_k_rounds_not_an_integer), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_rounds_not_an_integer */
  {__pyx_k_rr, sizeof(__pyx_k_rr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rr */
  {__pyx_k_rrtl, sizeof(__pyx_k_rrtl), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rrtl */
  {__pyx_k_rrtype, sizeof(__pyx_k_rrtype), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rrtype */
  {__pyx_k_rrtypes, sizeof(__pyx_k_rrtypes), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rrtypes */
  {__pyx_k_rrtypes_2, sizeof(__pyx_k_rrtypes_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rrtypes_2 */
  {__pyx_k_rtr, sizeof(__pyx_k_rtr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rtr */
  {__pyx_k_rtt, sizeof(__pyx_k_rtt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rtt */
  {__pyx_k_rtype, sizeof(__pyx_k_rtype), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rtype */
  {__pyx_k_rx, sizeof(__pyx_k_rx), 0, 1, 1}, /* PyObject cname: __pyx_n_u_rx */
  {__pyx_k_s, sizeof(__pyx_k_s), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_s */
  {__pyx_k_s_2, sizeof(__pyx_k_s_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_s_2 */
  {__pyx_k_sa, sizeof(__pyx_k_sa), 0, 1, 1}, /* PyObject cname: __pyx_n_u_sa */
  {__pyx_k_sb, sizeof(__pyx_k_sb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_sb */
  {__pyx_k_scamper, sizeof(__pyx_k_scamper), 0, 1, 1}, /* PyObject cname: __pyx_n_u_scamper */
  {__pyx_k_schedule, sizeof(__pyx_k_schedule), 0, 1, 1}, /* PyObject cname: __pyx_n_u_schedule */
  {__pyx_k_search, sizeof(__pyx_k_search), 0, 1, 1}, /* PyObject cname: __pyx_n_u_search */
  {__pyx_k_seconds, sizeof(__pyx_k_seconds), 0, 1, 1}, /* PyObject cname: __pyx_n_u_seconds */
  {__pyx_k_section, sizeof(__pyx_k_section), 0, 1, 1}, /* PyObject cname: __pyx_n_u_section */
  {__pyx_k_section_2, sizeof(__pyx_k_section_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_section_2 */
  {__pyx_k_seen, sizeof(__pyx_k_seen), 0, 1, 1}, /* PyObject cname: __pyx_n_u_seen */
  {__pyx_k_self, sizeof(__pyx_k_self), 0, 1, 1}, /* PyObject cname: __pyx_n_u_self */
  {__pyx_k_self__c_cannot_be_converted_to_a, sizeof(__pyx_k_self__c_cannot_be_converted_to_a), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_self__c_cannot_be_converted_to_a */
  {__pyx_k_self__c_self__c_f_self__c_rb_can, sizeof(__pyx_k_self__c_self__c_f_self__c_rb_can), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_self__c_self__c_f_self__c_rb_can */
  {__pyx_k_self__c_self__c_i_cannot_be_conv, sizeof(__pyx_k_self__c_self__c_i_cannot_be_conv), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_self__c_self__c_i_cannot_be_conv */
  {__pyx_k_self__c_self__c_s_cannot_be_conv, sizeof(__pyx_k_self__c_self__c_s_cannot_be_conv), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_self__c_self__c_s_cannot_be_conv */
  {__pyx_k_self__c_self__c_synctask_cannot, sizeof(__pyx_k_self__c_self__c_synctask_cannot), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_self__c_self__c_synctask_cannot */
  {__pyx_k_self__c_sf_self__c_sff_cannot_be, sizeof(__pyx_k_self__c_sf_self__c_sff_cannot_be), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_self__c_sf_self__c_sff_cannot_be */
  {__pyx_k_self__p_self__r_cannot_be_conver, sizeof(__pyx_k_self__p_self__r_cannot_be_conver), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_self__p_self__r_cannot_be_conver */
  {__pyx_k_send, sizeof(__pyx_k_send), 0, 1, 1}, /* PyObject cname: __pyx_n_u_send */
  {__pyx_k_seq, sizeof(__pyx_k_seq), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_seq */
  {__pyx_k_server, sizeof(__pyx_k_server), 0, 1, 1}, /* PyObject cname: __pyx_n_u_server */
  {__pyx_k_set_name, sizeof(__pyx_k_set_name), 0, 1, 1}, /* PyObject cname: __pyx_n_u_set_name */
  {__pyx_k_setstate, sizeof(__pyx_k_setstate), 0, 1, 1}, /* PyObject cname: __pyx_n_u_setstate */
  {__pyx_k_setstate_cython, sizeof(__pyx_k_setstate_cython), 0, 1, 1}, /* PyObject cname: __pyx_n_u_setstate_cython */
  {__pyx_k_shortname, sizeof(__pyx_k_shortname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_shortname */
  {__pyx_k_size, sizeof(__pyx_k_size), 0, 1, 1}, /* PyObject cname: __pyx_n_u_size */
  {__pyx_k_size_2, sizeof(__pyx_k_size_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_size_2 */
  {__pyx_k_sniff, sizeof(__pyx_k_sniff), 0, 1, 1}, /* PyObject cname: __pyx_n_u_sniff */
  {__pyx_k_sniff_S, sizeof(__pyx_k_sniff_S), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_sniff_S */
  {__pyx_k_soa, sizeof(__pyx_k_soa), 0, 1, 1}, /* PyObject cname: __pyx_n_u_soa */
  {__pyx_k_spec, sizeof(__pyx_k_spec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_spec */
  {__pyx_k_specify_a_ScamperInst, sizeof(__pyx_k_specify_a_ScamperInst), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_specify_a_ScamperInst */
  {__pyx_k_specify_method_when_specifying_a, sizeof(__pyx_k_specify_method_when_specifying_a), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_specify_method_when_specifying_a */
  {__pyx_k_specify_method_when_specifying_t, sizeof(__pyx_k_specify_method_when_specifying_t), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_specify_method_when_specifying_t */
  {__pyx_k_sport, sizeof(__pyx_k_sport), 0, 1, 1}, /* PyObject cname: __pyx_n_u_sport */
  {__pyx_k_sport_2, sizeof(__pyx_k_sport_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_sport_2 */
  {__pyx_k_sport_invalid_for_method, sizeof(__pyx_k_sport_invalid_for_method), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_sport_invalid_for_method */
  {__pyx_k_squeries, sizeof(__pyx_k_squeries), 0, 1, 1}, /* PyObject cname: __pyx_n_u_squeries */
  {__pyx_k_src, sizeof(__pyx_k_src), 0, 1, 1}, /* PyObject cname: __pyx_n_u_src */
  {__pyx_k_src_2, sizeof(__pyx_k_src_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_src_2 */
  {__pyx_k_st, sizeof(__pyx_k_st), 0, 1, 1}, /* PyObject cname: __pyx_n_u_st */
  {__pyx_k_st_mode, sizeof(__pyx_k_st_mode), 0, 1, 1}, /* PyObject cname: __pyx_n_u_st_mode */
  {__pyx_k_start, sizeof(__pyx_k_start), 0, 1, 1}, /* PyObject cname: __pyx_n_u_start */
  {__pyx_k_startat, sizeof(__pyx_k_startat), 0, 1, 1}, /* PyObject cname: __pyx_n_u_startat */
  {__pyx_k_startat_not_a_datetime, sizeof(__pyx_k_startat_not_a_datetime), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_startat_not_a_datetime */
  {__pyx_k_startswith, sizeof(__pyx_k_startswith), 0, 1, 1}, /* PyObject cname: __pyx_n_u_startswith */
  {__pyx_k_stat, sizeof(__pyx_k_stat), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stat */
  {__pyx_k_stats, sizeof(__pyx_k_stats), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stats */
  {__pyx_k_stop, sizeof(__pyx_k_stop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stop */
  {__pyx_k_stop_count, sizeof(__pyx_k_stop_count), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stop_count */
  {__pyx_k_stop_hop, sizeof(__pyx_k_stop_hop), 0, 1, 1}, /* PyObject cname: __pyx_n_u_stop_hop */
  {__pyx_k_str, sizeof(__pyx_k_str), 0, 1, 1}, /* PyObject cname: __pyx_n_u_str */
  {__pyx_k_str_2, sizeof(__pyx_k_str_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_str_2 */
  {__pyx_k_stringsource, sizeof(__pyx_k_stringsource), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_stringsource */
  {__pyx_k_super, sizeof(__pyx_k_super), 0, 1, 1}, /* PyObject cname: __pyx_n_u_super */
  {__pyx_k_svcb, sizeof(__pyx_k_svcb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_svcb */
  {__pyx_k_sync, sizeof(__pyx_k_sync), 0, 1, 1}, /* PyObject cname: __pyx_n_u_sync */
  {__pyx_k_t, sizeof(__pyx_k_t), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_t */
  {__pyx_k_t_2, sizeof(__pyx_k_t_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_t_2 */
  {__pyx_k_t_3, sizeof(__pyx_k_t_3), 0, 1, 1}, /* PyObject cname: __pyx_n_u_t_3 */
  {__pyx_k_t_flags, sizeof(__pyx_k_t_flags), 0, 1, 1}, /* PyObject cname: __pyx_n_u_t_flags */
  {__pyx_k_task, sizeof(__pyx_k_task), 0, 1, 1}, /* PyObject cname: __pyx_n_u_task */
  {__pyx_k_tasks, sizeof(__pyx_k_tasks), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tasks */
  {__pyx_k_tbit, sizeof(__pyx_k_tbit), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tbit */
  {__pyx_k_tcp, sizeof(__pyx_k_tcp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tcp */
  {__pyx_k_tcp_ack, sizeof(__pyx_k_tcp_ack), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tcp_ack */
  {__pyx_k_tcp_ack_2, sizeof(__pyx_k_tcp_ack_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_tcp_ack_2 */
  {__pyx_k_tcp_rst, sizeof(__pyx_k_tcp_rst), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_tcp_rst */
  {__pyx_k_tcp_seq, sizeof(__pyx_k_tcp_seq), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tcp_seq */
  {__pyx_k_tcp_syn, sizeof(__pyx_k_tcp_syn), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_tcp_syn */
  {__pyx_k_test, sizeof(__pyx_k_test), 0, 1, 1}, /* PyObject cname: __pyx_n_u_test */
  {__pyx_k_text, sizeof(__pyx_k_text), 0, 1, 1}, /* PyObject cname: __pyx_n_u_text */
  {__pyx_k_throw, sizeof(__pyx_k_throw), 0, 1, 1}, /* PyObject cname: __pyx_n_u_throw */
  {__pyx_k_time, sizeof(__pyx_k_time), 0, 1, 1}, /* PyObject cname: __pyx_n_u_time */
  {__pyx_k_time_2, sizeof(__pyx_k_time_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_time_2 */
  {__pyx_k_timedelta, sizeof(__pyx_k_timedelta), 0, 1, 1}, /* PyObject cname: __pyx_n_u_timedelta */
  {__pyx_k_timeout, sizeof(__pyx_k_timeout), 0, 1, 1}, /* PyObject cname: __pyx_n_u_timeout */
  {__pyx_k_timestamp, sizeof(__pyx_k_timestamp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_timestamp */
  {__pyx_k_timezone, sizeof(__pyx_k_timezone), 0, 1, 1}, /* PyObject cname: __pyx_n_u_timezone */
  {__pyx_k_to_json, sizeof(__pyx_k_to_json), 0, 1, 1}, /* PyObject cname: __pyx_n_u_to_json */
  {__pyx_k_tos, sizeof(__pyx_k_tos), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tos */
  {__pyx_k_total_seconds, sizeof(__pyx_k_total_seconds), 0, 1, 1}, /* PyObject cname: __pyx_n_u_total_seconds */
  {__pyx_k_trace, sizeof(__pyx_k_trace), 0, 1, 1}, /* PyObject cname: __pyx_n_u_trace */
  {__pyx_k_trace_2, sizeof(__pyx_k_trace_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_trace_2 */
  {__pyx_k_tracelb, sizeof(__pyx_k_tracelb), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tracelb */
  {__pyx_k_transmit_hdr_byname, sizeof(__pyx_k_transmit_hdr_byname), 0, 1, 1}, /* PyObject cname: __pyx_n_u_transmit_hdr_byname */
  {__pyx_k_ttl, sizeof(__pyx_k_ttl), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ttl */
  {__pyx_k_ttl_2, sizeof(__pyx_k_ttl_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ttl_2 */
  {__pyx_k_ttl_3, sizeof(__pyx_k_ttl_3), 0, 1, 1}, /* PyObject cname: __pyx_n_u_ttl_3 */
  {__pyx_k_ttl_4, sizeof(__pyx_k_ttl_4), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_ttl_4 */
  {__pyx_k_tv, sizeof(__pyx_k_tv), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tv */
  {__pyx_k_tv_ptr, sizeof(__pyx_k_tv_ptr), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tv_ptr */
  {__pyx_k_tx, sizeof(__pyx_k_tx), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_tx */
  {__pyx_k_tx_2, sizeof(__pyx_k_tx_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tx_2 */
  {__pyx_k_txt, sizeof(__pyx_k_txt), 0, 1, 1}, /* PyObject cname: __pyx_n_u_txt */
  {__pyx_k_txt_2, sizeof(__pyx_k_txt_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_txt_2 */
  {__pyx_k_txts, sizeof(__pyx_k_txts), 0, 1, 1}, /* PyObject cname: __pyx_n_u_txts */
  {__pyx_k_typea, sizeof(__pyx_k_typea), 0, 1, 1}, /* PyObject cname: __pyx_n_u_typea */
  {__pyx_k_typec, sizeof(__pyx_k_typec), 0, 1, 1}, /* PyObject cname: __pyx_n_u_typec */
  {__pyx_k_types, sizeof(__pyx_k_types), 0, 1, 1}, /* PyObject cname: __pyx_n_u_types */
  {__pyx_k_tzinfo, sizeof(__pyx_k_tzinfo), 0, 1, 1}, /* PyObject cname: __pyx_n_u_tzinfo */
  {__pyx_k_u, sizeof(__pyx_k_u), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_u */
  {__pyx_k_u_2, sizeof(__pyx_k_u_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_u_2 */
  {__pyx_k_udp, sizeof(__pyx_k_udp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_udp */
  {__pyx_k_udpprobe, sizeof(__pyx_k_udpprobe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_udpprobe */
  {__pyx_k_udpsize, sizeof(__pyx_k_udpsize), 0, 1, 1}, /* PyObject cname: __pyx_n_u_udpsize */
  {__pyx_k_unexpected_IP_address_in_probede, sizeof(__pyx_k_unexpected_IP_address_in_probede), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unexpected_IP_address_in_probede */
  {__pyx_k_unexpected_object_type, sizeof(__pyx_k_unexpected_object_type), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unexpected_object_type */
  {__pyx_k_unhandled_object_type, sizeof(__pyx_k_unhandled_object_type), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unhandled_object_type */
  {__pyx_k_unix, sizeof(__pyx_k_unix), 0, 1, 1}, /* PyObject cname: __pyx_n_u_unix */
  {__pyx_k_unknown_method, sizeof(__pyx_k_unknown_method), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_unknown_method */
  {__pyx_k_until, sizeof(__pyx_k_until), 0, 1, 1}, /* PyObject cname: __pyx_n_u_until */
  {__pyx_k_until_is_not_a_datetime, sizeof(__pyx_k_until_is_not_a_datetime), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_until_is_not_a_datetime */
  {__pyx_k_up, sizeof(__pyx_k_up), 0, 1, 1}, /* PyObject cname: __pyx_n_u_up */
  {__pyx_k_up_2, sizeof(__pyx_k_up_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_up_2 */
  {__pyx_k_upper, sizeof(__pyx_k_upper), 0, 1, 1}, /* PyObject cname: __pyx_n_u_upper */
  {__pyx_k_url, sizeof(__pyx_k_url), 0, 1, 1}, /* PyObject cname: __pyx_n_u_url */
  {__pyx_k_userid, sizeof(__pyx_k_userid), 0, 1, 1}, /* PyObject cname: __pyx_n_u_userid */
  {__pyx_k_userid_not_an_integer, sizeof(__pyx_k_userid_not_an_integer), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_userid_not_an_integer */
  {__pyx_k_utc, sizeof(__pyx_k_utc), 0, 1, 1}, /* PyObject cname: __pyx_n_u_utc */
  {__pyx_k_value, sizeof(__pyx_k_value), 0, 1, 1}, /* PyObject cname: __pyx_n_u_value */
  {__pyx_k_vp, sizeof(__pyx_k_vp), 0, 1, 1}, /* PyObject cname: __pyx_n_u_vp */
  {__pyx_k_vp_c, sizeof(__pyx_k_vp_c), 0, 1, 1}, /* PyObject cname: __pyx_n_u_vp_c */
  {__pyx_k_vps, sizeof(__pyx_k_vps), 0, 1, 1}, /* PyObject cname: __pyx_n_u_vps */
  {__pyx_k_vps_containts_non_ScamperVp, sizeof(__pyx_k_vps_containts_non_ScamperVp), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_vps_containts_non_ScamperVp */
  {__pyx_k_vps_list_containts_non_ScamperVp, sizeof(__pyx_k_vps_list_containts_non_ScamperVp), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_vps_list_containts_non_ScamperVp */
  {__pyx_k_vpset, sizeof(__pyx_k_vpset), 0, 1, 1}, /* PyObject cname: __pyx_n_u_vpset */
  {__pyx_k_w, sizeof(__pyx_k_w), 0, 1, 1}, /* PyObject cname: __pyx_n_u_w */
  {__pyx_k_w_2, sizeof(__pyx_k_w_2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_w_2 */
  {__pyx_k_wait_probe, sizeof(__pyx_k_wait_probe), 0, 1, 1}, /* PyObject cname: __pyx_n_u_wait_probe */
  {__pyx_k_wait_probe_must_be_at_least_1ms, sizeof(__pyx_k_wait_probe_must_be_at_least_1ms), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_wait_probe_must_be_at_least_1ms */
  {__pyx_k_wait_probe_must_be_greater_than, sizeof(__pyx_k_wait_probe_must_be_greater_than), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_wait_probe_must_be_greater_than */
  {__pyx_k_wait_round, sizeof(__pyx_k_wait_round), 0, 1, 1}, /* PyObject cname: __pyx_n_u_wait_round */
  {__pyx_k_wait_round_must_be_at_least_1ms, sizeof(__pyx_k_wait_round_must_be_at_least_1ms), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_wait_round_must_be_at_least_1ms */
  {__pyx_k_wait_round_must_be_greater_than, sizeof(__pyx_k_wait_round_must_be_greater_than), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_wait_round_must_be_greater_than */
  {__pyx_k_wait_timeout, sizeof(__pyx_k_wait_timeout), 0, 1, 1}, /* PyObject cname: __pyx_n_u_wait_timeout */
  {__pyx_k_wait_timeout_must_be_at_least_1s, sizeof(__pyx_k_wait_timeout_must_be_at_least_1s), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_wait_timeout_must_be_at_least_1s */
  {__pyx_k_warts, sizeof(__pyx_k_warts), 0, 1, 1}, /* PyObject cname: __pyx_n_u_warts */
  {__pyx_k_warts_bz2, sizeof(__pyx_k_warts_bz2), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_warts_bz2 */
  {__pyx_k_warts_gz, sizeof(__pyx_k_warts_gz), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_warts_gz */
  {__pyx_k_warts_xz, sizeof(__pyx_k_warts_xz), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_warts_xz */
  {__pyx_k_write, sizeof(__pyx_k_write), 0, 1, 1}, /* PyObject cname: __pyx_n_u_write */
  {__pyx_k_x, sizeof(__pyx_k_x), 0, 1, 1}, /* PyObject cname: __pyx_n_u_x */
  {__pyx_k_x_2, sizeof(__pyx_k_x_2), 0, 1, 1}, /* PyObject cname: __pyx_n_u_x_2 */
  {__pyx_k_xz, sizeof(__pyx_k_xz), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_xz */
  {__pyx_k_z, sizeof(__pyx_k_z), 0, 1, 0}, /* PyObject cname: __pyx_kp_u_z */
  {0, 0, 0, 0, 0}
};
/* InitStrings.proto */
static int __Pyx_InitStrings(__Pyx_StringTabEntry const *t, PyObject **target, const char* const* encoding_names);

/* #### Code section: cached_builtins ### */

static int __Pyx_InitCachedBuiltins(__pyx_mstatetype *__pyx_mstate) {
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __pyx_builtin_property = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_property); if (!__pyx_builtin_property) __PYX_ERR(0, 805, __pyx_L1_error)
  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_ValueError); if (!__pyx_builtin_ValueError) __PYX_ERR(0, 410, __pyx_L1_error)
  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 411, __pyx_L1_error)
  __pyx_builtin_format = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_format); if (!__pyx_builtin_format) __PYX_ERR(0, 429, __pyx_L1_error)
  __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_NotImplemented); if (!__pyx_builtin_NotImplemented) __PYX_ERR(0, 441, __pyx_L1_error)
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_TypeError); if (!__pyx_builtin_TypeError) __PYX_ERR(1, 2, __pyx_L1_error)
  __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 859, __pyx_L1_error)
  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_range); if (!__pyx_builtin_range) __PYX_ERR(0, 1098, __pyx_L1_error)
  __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(0, 1851, __pyx_L1_error)
  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_RuntimeError); if (!__pyx_builtin_RuntimeError) __PYX_ERR(0, 7970, __pyx_L1_error)
  __pyx_builtin_super = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_super); if (!__pyx_builtin_super) __PYX_ERR(0, 8723, __pyx_L1_error)
  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_mstate->__pyx_n_u_object); if (!__pyx_builtin_object) __PYX_ERR(0, 10545, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: cached_constants ### */

static int __Pyx_InitCachedConstants(__pyx_mstatetype *__pyx_mstate) {
  __Pyx_RefNannyDeclarations
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "scamper.pyx":9484
 *             if m is None:
 *                 raise ValueError("specify method when specifying the source or destination port")
 *             elif not any(m.startswith(s) for s in ["tcp", "udp"]):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify source or destination ports with " + method)
 * 
*/
  __pyx_mstate_global->__pyx_tuple[0] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_n_u_tcp, __pyx_mstate_global->__pyx_n_u_udp); if (unlikely(!__pyx_mstate_global->__pyx_tuple[0])) __PYX_ERR(0, 9484, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[0]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[0]);

  /* "scamper.pyx":9719
 *                 raise ValueError("cannot specify tcp_ack with " + method)
 *             elif (tcp_seq is not None and
 *                   not any(m.startswith(s) for s in ["tcp-syn", "tcp-rst"])):             # <<<<<<<<<<<<<<
 *                 raise ValueError("cannot specify tcp_seq with " + method)
 * 
*/
  __pyx_mstate_global->__pyx_tuple[1] = PyTuple_Pack(2, __pyx_mstate_global->__pyx_kp_u_tcp_syn, __pyx_mstate_global->__pyx_kp_u_tcp_rst); if (unlikely(!__pyx_mstate_global->__pyx_tuple[1])) __PYX_ERR(0, 9719, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[1]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[1]);

  /* "scamper.pyx":1897
 *         return _ScamperTraceHopIterator(self)
 * 
 *     def addrs(self, reserved=True):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain unique addresses in traceroute hops.
*/
  __pyx_mstate_global->__pyx_tuple[2] = PyTuple_Pack(1, Py_True); if (unlikely(!__pyx_mstate_global->__pyx_tuple[2])) __PYX_ERR(0, 1897, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[2]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[2]);

  /* "scamper.pyx":4819
 *                                  tzinfo=datetime.timezone.utc)
 * 
 *     def reply(self, i=0):             # <<<<<<<<<<<<<<
 *         """
 *         reply(i=0)
*/
  __pyx_mstate_global->__pyx_tuple[3] = PyTuple_Pack(1, __pyx_mstate_global->__pyx_int_0); if (unlikely(!__pyx_mstate_global->__pyx_tuple[3])) __PYX_ERR(0, 4819, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[3]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[3]);

  /* "scamper.pyx":7331
 *         return self._q.an(i)
 * 
 *     def ans(self, rrtypes=None):             # <<<<<<<<<<<<<<
 *         """
 *         get method to obtain a RR Iterator over the AN section of the first
*/
  __pyx_mstate_global->__pyx_tuple[4] = PyTuple_Pack(1, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[4])) __PYX_ERR(0, 7331, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[4]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[4]);

  /* "scamper.pyx":9110
 *             yield self._exceptions.pop(0)
 * 
 *     def responses(self, timeout=None, until=None):             # <<<<<<<<<<<<<<
 *         """
 *         responses(timeout=None, until=None)
*/
  __pyx_mstate_global->__pyx_tuple[5] = PyTuple_Pack(2, Py_None, Py_None); if (unlikely(!__pyx_mstate_global->__pyx_tuple[5])) __PYX_ERR(0, 9110, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[5]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[5]);

  /* "scamper.pyx":9413
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying trace command
 *     def do_trace(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                  icmp_sum=None, firsthop=None, gaplimit=None, loops=None,
 *                  hoplimit=None, pmtud=None, squeries=None, ptr=None,
*/
  __pyx_mstate_global->__pyx_tuple[6] = PyTuple_Pack(23, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[6])) __PYX_ERR(0, 9413, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[6]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[6]);

  /* "scamper.pyx":9541
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_tracelb(self, dst, confidence=None, dport=None,             # <<<<<<<<<<<<<<
 *                    firsthop=None, gaplimit=None, method=None,
 *                    attempts=None, ptr=None, rtr=None, sport=None, tos=None,
*/
  __pyx_mstate_global->__pyx_tuple[7] = PyTuple_Pack(15, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[7])) __PYX_ERR(0, 9541, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[7]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[7]);

  /* "scamper.pyx":9636
 *     # the optional parameters are ordered roughly according to the order
 *     # these appear in the underlying ping command
 *     def do_ping(self, dst, tcp_ack=None, tcp_seq=None, attempts=None,             # <<<<<<<<<<<<<<
 *                 icmp_id=None, icmp_seq=None, icmp_sum=None, dport=None,
 *                 sport=None, wait_probe=None, ttl=None, mtu=None,
*/
  __pyx_mstate_global->__pyx_tuple[8] = PyTuple_Pack(24, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[8])) __PYX_ERR(0, 9636, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[8]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[8]);

  /* "scamper.pyx":9788
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_dns(self, qname, server=None, qclass=None, qtype=None,             # <<<<<<<<<<<<<<
 *                attempts=None, rd=None, wait_timeout=None, tcp=None,
 *                nsid=None, ecs=None, userid=None, inst=None, sync=False):
*/
  __pyx_mstate_global->__pyx_tuple[9] = PyTuple_Pack(12, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[9])) __PYX_ERR(0, 9788, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[9]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[9]);

  /* "scamper.pyx":9854
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_ally(self, dst1, dst2, fudge=None, icmp_sum=None, dport=None,             # <<<<<<<<<<<<<<
 *                 sport=None, method=None, attempts=None, wait_probe=None,
 *                 wait_timeout=None, userid=None, inst=None, sync=False):
*/
  __pyx_mstate_global->__pyx_tuple[10] = PyTuple_Pack(11, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[10])) __PYX_ERR(0, 9854, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[10]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[10]);

  /* "scamper.pyx":9953
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_mercator(self, dst, userid=None, inst=None, sync=False):             # <<<<<<<<<<<<<<
 *         """
 *         do_mercator(dst, userid=None, inst=None, sync=False)
*/
  __pyx_mstate_global->__pyx_tuple[11] = PyTuple_Pack(3, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[11])) __PYX_ERR(0, 9953, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[11]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[11]);

  /* "scamper.pyx":9978
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midarest(self, rounds=None, wait_probe=None, wait_round=None,             # <<<<<<<<<<<<<<
 *                     wait_timeout=None, probedefs=None, addrs=None,
 *                     userid=None, inst=None, sync=False):
*/
  __pyx_mstate_global->__pyx_tuple[12] = PyTuple_Pack(9, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[12])) __PYX_ERR(0, 9978, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[12]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[12]);

  /* "scamper.pyx":10054
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_midardisc(self, probedefs=None, schedule=None,             # <<<<<<<<<<<<<<
 *                      startat=None, wait_timeout=None,
 *                      userid=None, inst=None, sync=False):
*/
  __pyx_mstate_global->__pyx_tuple[13] = PyTuple_Pack(7, Py_None, Py_None, Py_None, Py_None, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[13])) __PYX_ERR(0, 10054, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[13]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[13]);

  /* "scamper.pyx":10311
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_sniff(self, src, icmp_id, limit_pkt_count=None, limit_time=None,             # <<<<<<<<<<<<<<
 *                  userid=None, inst=None, sync=False):
 *         """
*/
  __pyx_mstate_global->__pyx_tuple[14] = PyTuple_Pack(5, Py_None, Py_None, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[14])) __PYX_ERR(0, 10311, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[14]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[14]);

  /* "scamper.pyx":10355
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_http(self, dst, url, headers=None, insecure=False, limit_time=None,             # <<<<<<<<<<<<<<
 *                 userid=None, inst=None, sync=False):
 *         """
*/
  __pyx_mstate_global->__pyx_tuple[15] = PyTuple_Pack(6, Py_None, Py_False, Py_None, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[15])) __PYX_ERR(0, 10355, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[15]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[15]);

  /* "scamper.pyx":10410
 *         return self._dotasks(' '.join(args), inst, sync)
 * 
 *     def do_udpprobe(self, dst, dport, payload, attempts=None, src=None,             # <<<<<<<<<<<<<<
 *                     stop_count=None, inst=None, userid=None, sync=False):
 *         """
*/
  __pyx_mstate_global->__pyx_tuple[16] = PyTuple_Pack(6, Py_None, Py_None, Py_None, Py_None, Py_None, Py_False); if (unlikely(!__pyx_mstate_global->__pyx_tuple[16])) __PYX_ERR(0, 10410, __pyx_L1_error)
  __Pyx_GOTREF(__pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_GIVEREF(__pyx_mstate_global->__pyx_tuple[16]);
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}
/* #### Code section: init_constants ### */

static int __Pyx_InitConstants(__pyx_mstatetype *__pyx_mstate) {
  CYTHON_UNUSED_VAR(__pyx_mstate);
  __pyx_mstate->__pyx_umethod_PyDict_Type_keys.type = (PyObject*)&PyDict_Type;
  __pyx_mstate->__pyx_umethod_PyDict_Type_keys.method_name = &__pyx_mstate->__pyx_n_u_keys;
  __pyx_mstate->__pyx_umethod_PyDict_Type_pop.type = (PyObject*)&PyDict_Type;
  __pyx_mstate->__pyx_umethod_PyDict_Type_pop.method_name = &__pyx_mstate->__pyx_n_u_pop;
  if (__Pyx_InitStrings(__pyx_string_tab, __pyx_mstate->__pyx_string_tab, __pyx_string_tab_encodings) < 0) __PYX_ERR(0, 1, __pyx_L1_error);
  __pyx_mstate->__pyx_int_0 = PyLong_FromLong(0); if (unlikely(!__pyx_mstate->__pyx_int_0)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_1 = PyLong_FromLong(1); if (unlikely(!__pyx_mstate->__pyx_int_1)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_2 = PyLong_FromLong(2); if (unlikely(!__pyx_mstate->__pyx_int_2)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_3 = PyLong_FromLong(3); if (unlikely(!__pyx_mstate->__pyx_int_3)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_4 = PyLong_FromLong(4); if (unlikely(!__pyx_mstate->__pyx_int_4)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_5 = PyLong_FromLong(5); if (unlikely(!__pyx_mstate->__pyx_int_5)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_6 = PyLong_FromLong(6); if (unlikely(!__pyx_mstate->__pyx_int_6)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_7 = PyLong_FromLong(7); if (unlikely(!__pyx_mstate->__pyx_int_7)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_8 = PyLong_FromLong(8); if (unlikely(!__pyx_mstate->__pyx_int_8)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_9 = PyLong_FromLong(9); if (unlikely(!__pyx_mstate->__pyx_int_9)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_10 = PyLong_FromLong(10); if (unlikely(!__pyx_mstate->__pyx_int_10)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_11 = PyLong_FromLong(11); if (unlikely(!__pyx_mstate->__pyx_int_11)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_12 = PyLong_FromLong(12); if (unlikely(!__pyx_mstate->__pyx_int_12)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_13 = PyLong_FromLong(13); if (unlikely(!__pyx_mstate->__pyx_int_13)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_14 = PyLong_FromLong(14); if (unlikely(!__pyx_mstate->__pyx_int_14)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_15 = PyLong_FromLong(15); if (unlikely(!__pyx_mstate->__pyx_int_15)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_16 = PyLong_FromLong(16); if (unlikely(!__pyx_mstate->__pyx_int_16)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_20 = PyLong_FromLong(20); if (unlikely(!__pyx_mstate->__pyx_int_20)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_28 = PyLong_FromLong(28); if (unlikely(!__pyx_mstate->__pyx_int_28)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_43 = PyLong_FromLong(43); if (unlikely(!__pyx_mstate->__pyx_int_43)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_44 = PyLong_FromLong(44); if (unlikely(!__pyx_mstate->__pyx_int_44)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_46 = PyLong_FromLong(46); if (unlikely(!__pyx_mstate->__pyx_int_46)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_47 = PyLong_FromLong(47); if (unlikely(!__pyx_mstate->__pyx_int_47)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_48 = PyLong_FromLong(48); if (unlikely(!__pyx_mstate->__pyx_int_48)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_128 = PyLong_FromLong(128); if (unlikely(!__pyx_mstate->__pyx_int_128)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_255 = PyLong_FromLong(255); if (unlikely(!__pyx_mstate->__pyx_int_255)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_1000 = PyLong_FromLong(1000); if (unlikely(!__pyx_mstate->__pyx_int_1000)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_65535 = PyLong_FromLong(65535L); if (unlikely(!__pyx_mstate->__pyx_int_65535)) __PYX_ERR(0, 1, __pyx_L1_error)
  __pyx_mstate->__pyx_int_999999 = PyLong_FromLong(999999L); if (unlikely(!__pyx_mstate->__pyx_int_999999)) __PYX_ERR(0, 1, __pyx_L1_error)
  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: init_codeobjects ### */
\
        typedef struct {
            unsigned int argcount : 5;
            unsigned int num_posonly_args : 1;
            unsigned int num_kwonly_args : 1;
            unsigned int nlocals : 5;
            unsigned int flags : 10;
            unsigned int first_line : 14;
            unsigned int line_table_length : 15;
        } __Pyx_PyCode_New_function_description;
/* NewCodeObj.proto */
static PyObject* __Pyx_PyCode_New(
        const __Pyx_PyCode_New_function_description descr,
        PyObject * const *varnames,
        PyObject *filename,
        PyObject *funcname,
        const char *line_table,
        PyObject *tuple_dedup_map
);


static int __Pyx_CreateCodeObjects(__pyx_mstatetype *__pyx_mstate) {
  PyObject* tuple_dedup_map = PyDict_New();
  if (unlikely(!tuple_dedup_map)) return -1;
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 1659, 2};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_nit, __pyx_mstate->__pyx_n_u_note, __pyx_mstate->__pyx_n_u_t_flags, __pyx_mstate->__pyx_n_u_dist};
    __pyx_mstate_global->__pyx_codeobj_tab[0] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_notes, __pyx_k_A_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[0])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 9101, 2};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[1] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_exceptions, __pyx_k_A_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[1])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 12, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 9110, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_timeout, __pyx_mstate->__pyx_n_u_until, __pyx_mstate->__pyx_n_u_tv, __pyx_mstate->__pyx_n_u_tv_ptr, __pyx_mstate->__pyx_n_u_u_2, __pyx_mstate->__pyx_n_u_onion, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_o_2, __pyx_mstate->__pyx_n_u_e, __pyx_mstate->__pyx_n_u_now, __pyx_mstate->__pyx_n_u_diff};
    __pyx_mstate_global->__pyx_codeobj_tab[2] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_responses, __pyx_k_A_4, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[2])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 9484, 2};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_s_2};
    __pyx_mstate_global->__pyx_codeobj_tab[3] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_k_Q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[3])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 9597, 2};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_s_2};
    __pyx_mstate_global->__pyx_codeobj_tab[4] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_k_Q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[4])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 9719, 2};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_s_2};
    __pyx_mstate_global->__pyx_codeobj_tab[5] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_k_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[5])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 9733, 2};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_s_2};
    __pyx_mstate_global->__pyx_codeobj_tab[6] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_k_Q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[6])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 9917, 2};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_s_2};
    __pyx_mstate_global->__pyx_codeobj_tab[7] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_k_Q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[7])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {0, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_GENERATOR), 10266, 2};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_s_2};
    __pyx_mstate_global->__pyx_codeobj_tab[8] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_genexpr, __pyx_k_Q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[8])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 428, 17};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_format_spec};
    __pyx_mstate_global->__pyx_codeobj_tab[9] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_format_2, __pyx_k_A_vQc, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[9])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 497, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[10] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_linklocal, __pyx_k_A_5Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[10])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 507, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[11] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_rfc1918, __pyx_k_A_31D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[11])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 517, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[12] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_unicast, __pyx_k_A_31D_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[12])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 526, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[13] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_6to4, __pyx_k_A_0_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[13])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 535, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[14] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_reserved, __pyx_k_A_4AT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[14])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 550, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[15] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_ipv4, __pyx_k_A_0_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[15])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 559, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[16] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_ipv6, __pyx_k_A_0_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[16])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[17] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[17])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[18] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[18])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[19] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[19])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[20] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[20])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[21] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[21])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[22] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[22])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 790, 18};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ext, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[23] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_HA_F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[23])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 798, 76};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_label, __pyx_mstate->__pyx_n_u_exp, __pyx_mstate->__pyx_n_u_ttl_3, __pyx_mstate->__pyx_n_u_s_2};
    __pyx_mstate_global->__pyx_codeobj_tab[24] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_str, __pyx_k_A_E_AT_d_y_Q_d_y_Q_D_WAT_5WE_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[24])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 805, 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[25] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_label, __pyx_k_A_t5_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[25])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 815, 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[26] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_exp, __pyx_k_A_t5_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[26])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 825, 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[27] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_s_2, __pyx_k_A_t5_q_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[27])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 835, 19};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[28] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ttl_3, __pyx_k_A_t5_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[28])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 846, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ext};
    __pyx_mstate_global->__pyx_codeobj_tab[29] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_HA_F_F_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[29])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 851, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[30] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[30])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 854, 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_mpls};
    __pyx_mstate_global->__pyx_codeobj_tab[31] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_4t2T_4uIQd_q_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[31])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 901, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[32] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_mpls, __pyx_k_A_7q_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[32])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 923, 34};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[33] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_mpls_lses, __pyx_k_A_7q_A_1_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[33])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 935, 58};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[34] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_mpls_lse, __pyx_k_A_7q_A_1_2_q_A_1_QfA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[34])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 951, 60};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[35] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_mpls_label, __pyx_k_A_7q_A_1_2_q_A_1_at5, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[35])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 966, 60};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[36] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_mpls_ttl, __pyx_k_A_7q_A_1_2_q_A_1_AT_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[36])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 981, 60};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[37] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_mpls_exp, __pyx_k_A_7q_A_1_2_q_A_1_AT_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[37])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 996, 60};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[38] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_mpls_s, __pyx_k_A_7q_A_1_2_q_A_1_4uA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[38])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[39] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[39])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[40] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[40])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1012, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_exts};
    __pyx_mstate_global->__pyx_codeobj_tab[41] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_IQ_F_F_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[41])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1017, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[42] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[42])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1020, 49};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ext};
    __pyx_mstate_global->__pyx_codeobj_tab[43] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_4t2T_fD_t1_q_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[43])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1068, 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[44] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ext_count, __pyx_k_A_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[44])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1071, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[45] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ext, __pyx_k_A_5Qd_q_Yaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[45])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1082, 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[46] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_exts, __pyx_k_A_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[46])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[47] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[47])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[48] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[48])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1339, 32};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[49] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tcp, __pyx_k_A_4t3a_1_8_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[49])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1350, 32};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[50] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp, __pyx_k_A_4t3a_1_9_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[50])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1361, 32};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[51] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_q, __pyx_k_A_4t3a_1_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[51])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1372, 32};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[52] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_unreach_port, __pyx_k_A_4t3a_1_Fat1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[52])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1384, 32};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[53] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_echo_reply, __pyx_k_A_4t3a_1_DAT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[53])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1395, 32};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[54] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_ttl_exp, __pyx_k_A_4t3a_1_A_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[54])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1407, 32};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[55] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_ptb, __pyx_k_A_4t3a_1_Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[55])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[56] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[56])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[57] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[57])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1510, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_trace};
    __pyx_mstate_global->__pyx_codeobj_tab[58] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_Ja_Ja_IU, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[58])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1515, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[59] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[59])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1518, 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_hop};
    __pyx_mstate_global->__pyx_codeobj_tab[60] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_4xr_Q_gT_a_1_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[60])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1586, 65};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_probe, __pyx_mstate->__pyx_n_u_reply};
    __pyx_mstate_global->__pyx_codeobj_tab[61] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_hop, __pyx_k_A_A_a_A_a_6_E_F_Q_1_iq_wd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[61])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[62] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[62])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[63] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[63])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[64] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[64])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[65] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[65])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1768, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[66] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_to_json, __pyx_k_A_q_E_2S_1_away_AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[66])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1839, 177};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_hi, __pyx_mstate->__pyx_n_u_r, __pyx_mstate->__pyx_n_u_p_3, __pyx_mstate->__pyx_n_u_t_flags};
    __pyx_mstate_global->__pyx_codeobj_tab[67] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_hop, __pyx_k_A_2Rr_Bc_A_32Q_7q_3c_Qa_7q_AQc_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[67])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1888, 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[68] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_hops, __pyx_k_A_q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[68])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1897, 75};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_reserved, __pyx_mstate->__pyx_n_u_addrs, __pyx_mstate->__pyx_n_u_hop};
    __pyx_mstate_global->__pyx_codeobj_tab[69] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_addrs, __pyx_k_Q_G4uA_t3e4t9D_4_1_XQ_t1E_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[69])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2120, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[70] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_udp, __pyx_k_A_7q_A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[70])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2129, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[71] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tcp, __pyx_k_A_7q_A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[71])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2138, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[72] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp, __pyx_k_A_8_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[72])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2147, 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stop};
    __pyx_mstate_global->__pyx_codeobj_tab[73] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_stop_noreason, __pyx_k_A_1D_5_1_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[73])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2159, 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stop};
    __pyx_mstate_global->__pyx_codeobj_tab[74] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_stop_completed, __pyx_k_A_1D_5_1_1_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[74])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2172, 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stop};
    __pyx_mstate_global->__pyx_codeobj_tab[75] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_stop_unreach, __pyx_k_A_1D_5_1_1_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[75])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2185, 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stop};
    __pyx_mstate_global->__pyx_codeobj_tab[76] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_stop_icmp, __pyx_k_A_1D_5_1_1_q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[76])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2199, 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stop};
    __pyx_mstate_global->__pyx_codeobj_tab[77] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_stop_loop, __pyx_k_A_1D_5_1_1_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[77])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2212, 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stop};
    __pyx_mstate_global->__pyx_codeobj_tab[78] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_stop_gaplimit, __pyx_k_A_1D_5_1_1_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[78])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2225, 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stop};
    __pyx_mstate_global->__pyx_codeobj_tab[79] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_stop_error, __pyx_k_A_1D_5_1_1_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[79])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2238, 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stop};
    __pyx_mstate_global->__pyx_codeobj_tab[80] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_stop_hoplimit, __pyx_k_A_1D_5_1_1_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[80])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2251, 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stop};
    __pyx_mstate_global->__pyx_codeobj_tab[81] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_stop_gss, __pyx_k_A_1D_5_1_1_q_4, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[81])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2266, 38};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_stop};
    __pyx_mstate_global->__pyx_codeobj_tab[82] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_stop_halted, __pyx_k_A_1D_5_1_1_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[82])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[83] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[83])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[84] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[84])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2329, 11};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[85] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_from_target, __pyx_k_A_t1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[85])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2470, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[86] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp, __pyx_k_A_7q_A_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[86])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2479, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[87] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tcp, __pyx_k_A_6at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[87])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2488, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[88] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_udp, __pyx_k_A_6at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[88])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2497, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[89] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_echo_reply, __pyx_k_A_B_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[89])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2506, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[90] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_unreach, __pyx_k_A_q_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[90])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2515, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[91] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_unreach_port, __pyx_k_A_DAT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[91])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2525, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[92] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_ttl_exp, __pyx_k_A_q_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[92])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2534, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[93] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_tsreply, __pyx_k_A_q_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[93])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2543, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[94] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_ptb, __pyx_k_A_1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[94])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[95] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[95])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[96] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[96])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2620, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ping};
    __pyx_mstate_global->__pyx_codeobj_tab[97] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_IQ_F_F_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[97])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2625, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[98] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[98])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2628, 52};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_reply};
    __pyx_mstate_global->__pyx_codeobj_tab[99] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_d_b_A_D_fAT_q_q_q_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[99])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2786, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[100] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_to_json, __pyx_k_A_Qd_q_2S_1_away_AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[100])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2836, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[101] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp, __pyx_k_A_8_Q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[101])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2845, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[102] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_time, __pyx_k_A_Qd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[102])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2855, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[103] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tcp, __pyx_k_A_7q_A_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[103])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2864, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[104] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tcp_ack_sport, __pyx_k_A_A_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[104])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2874, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[105] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_udp, __pyx_k_A_7q_A_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[105])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2883, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[106] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_vary_sport, __pyx_k_A_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[106])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 2893, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[107] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_vary_dport, __pyx_k_A_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[107])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3046, 59};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_p_3, __pyx_mstate->__pyx_n_u_r};
    __pyx_mstate_global->__pyx_codeobj_tab[108] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_reply, __pyx_k_A_0_U_2S_1_6as_y_Ct1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[108])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3060, 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[109] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_replies, __pyx_k_A_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[109])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3067, 31};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[110] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_stats, __pyx_k_A_4vS_at1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[110])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[111] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[111])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[112] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[112])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3201, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_trace};
    __pyx_mstate_global->__pyx_codeobj_tab[113] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_Ja_Ja_Je1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[113])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3206, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[114] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[114])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3209, 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_node};
    __pyx_mstate_global->__pyx_codeobj_tab[115] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_4xr_Q_4we1D_1_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[115])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3217, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_x};
    __pyx_mstate_global->__pyx_codeobj_tab[116] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_F_Ja_Jaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[116])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3222, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[117] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[117])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3225, 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_link};
    __pyx_mstate_global->__pyx_codeobj_tab[118] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_4xr_Q_4s_q_A_1_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[118])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[119] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[119])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[120] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[120])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3470, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[121] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_reply, __pyx_k_A_9_e1_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[121])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[122] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[122])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[123] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[123])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3529, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[124] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_probe, __pyx_k_A_q_E_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[124])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[125] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[125])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[126] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[126])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3610, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[127] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_link, __pyx_k_A_4uA_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[127])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3621, 12};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[128] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_links, __pyx_k_A_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[128])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[129] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[129])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[130] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[130])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3691, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[131] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_near, __pyx_k_A_4q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[131])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3701, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[132] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_far, __pyx_k_A_8_Q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[132])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3711, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[133] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_length, __pyx_k_A_Qd_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[133])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3720, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[134] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_probeset, __pyx_k_A_at5_Yaq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[134])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[135] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[135])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[136] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[136])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3828, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[137] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_to_json, __pyx_k_A_31D_Q_2S_1_away_AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[137])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3877, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[138] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_node, __pyx_k_A_5Qd_q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[138])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3898, 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[139] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_nodes, __pyx_k_A_1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[139])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3907, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[140] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_link, __pyx_k_A_5Qd_q_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[140])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3928, 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[141] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_links, __pyx_k_A_1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[141])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4076, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[142] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_udp, __pyx_k_A_1D_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[142])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4085, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[143] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tcp, __pyx_k_A_1D_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[143])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4094, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[144] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp, __pyx_k_A_AT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[144])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[145] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[145])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[146] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[146])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4133, 11};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[147] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_from_target, __pyx_k_A_t1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[147])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4258, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[148] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tcp, __pyx_k_A_AT, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[148])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4267, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[149] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp, __pyx_k_A_Qd_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[149])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4276, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[150] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_ttl_exp, __pyx_k_A_EQd, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[150])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4286, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[151] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_unreach, __pyx_k_A_EQd_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[151])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4295, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[152] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp_unreach_port, __pyx_k_A_J_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[152])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[153] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[153])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[154] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[154])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[155] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[155])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[156] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[156])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4716, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[157] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_udp, __pyx_k_A_q_A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[157])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4725, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[158] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_icmp, __pyx_k_A_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[158])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4734, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[159] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tcp, __pyx_k_A_q_A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[159])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[160] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[160])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[161] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[161])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4744, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_probe};
    __pyx_mstate_global->__pyx_codeobj_tab[162] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_Ja_F_F_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[162])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4749, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[163] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[163])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4752, 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_reply};
    __pyx_mstate_global->__pyx_codeobj_tab[164] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_4t2T_D_vQd_q_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[164])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4819, 34};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_r};
    __pyx_mstate_global->__pyx_codeobj_tab[165] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_reply, __pyx_k_a_AT_a_1Ct1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[165])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4841, 12};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[166] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_replies, __pyx_k_A_1A_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[166])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[167] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[167])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[168] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[168])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4855, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dealias};
    __pyx_mstate_global->__pyx_codeobj_tab[169] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_L_F_F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[169])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4860, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[170] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[170])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4863, 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_probe};
    __pyx_mstate_global->__pyx_codeobj_tab[171] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_4t2T_D_q_A_q_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[171])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4871, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dealias};
    __pyx_mstate_global->__pyx_codeobj_tab[172] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_L_F_F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[172])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4876, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[173] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[173])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4879, 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pd};
    __pyx_mstate_global->__pyx_codeobj_tab[174] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_4t2T_Yiq_A_q_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[174])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4965, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[175] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_to_json, __pyx_k_A_31D_Q_2S_1_away_AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[175])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4980, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[176] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_ally, __pyx_k_A_at1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[176])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4989, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[177] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_mercator, __pyx_k_A_B_4q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[177])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 4998, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[178] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_prefixscan, __pyx_k_A_DAT_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[178])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5007, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[179] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_radargun, __pyx_k_A_B_4q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[179])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5016, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[180] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_bump, __pyx_k_A_at1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[180])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5025, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[181] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_midarest, __pyx_k_A_B_4q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[181])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5034, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[182] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_midardisc, __pyx_k_A_C1D, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[182])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5043, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[183] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_has_aliases, __pyx_k_A_A_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[183])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 16, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5053, 363};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_mc, __pyx_mstate->__pyx_n_u_pd, __pyx_mstate->__pyx_n_u_sa, __pyx_mstate->__pyx_n_u_probec, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_p_3, __pyx_mstate->__pyx_n_u_replyc, __pyx_mstate->__pyx_n_u_j, __pyx_mstate->__pyx_n_u_r, __pyx_mstate->__pyx_n_u_sb, __pyx_mstate->__pyx_n_u_ally, __pyx_mstate->__pyx_n_u_addr, __pyx_mstate->__pyx_n_u_a, __pyx_mstate->__pyx_n_u_b, __pyx_mstate->__pyx_n_u_pf};
    __pyx_mstate_global->__pyx_codeobj_tab[184] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_aliases, __pyx_k_A_A_a_1_at1_at1_B_1_B_1_Q_U_1_at, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[184])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5098, 322};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_mc, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_ally, __pyx_mstate->__pyx_n_u_pf, __pyx_mstate->__pyx_n_u_rg, __pyx_mstate->__pyx_n_u_me, __pyx_mstate->__pyx_n_u_md};
    __pyx_mstate_global->__pyx_codeobj_tab[185] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_probedef, __pyx_k_2Rq_1_at1_at1_r_A_q_A_1_AT_AT_r, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[185])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5174, 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[186] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_probedefs, __pyx_k_A_aq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[186])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5183, 44};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_p_3};
    __pyx_mstate_global->__pyx_codeobj_tab[187] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_probe, __pyx_k_a_2Rq_1_6at5_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[187])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5207, 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[188] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_probes, __pyx_k_A_1A_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[188])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[189] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[189])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[190] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[190])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5377, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[191] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_to_json, __pyx_k_A_q_E_2S_1_away_AQ_q_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[191])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[192] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[192])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[193] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[193])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5432, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_d};
    __pyx_mstate_global->__pyx_codeobj_tab[194] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tx, __pyx_k_A_2_4q_r_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[194])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5443, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_d};
    __pyx_mstate_global->__pyx_codeobj_tab[195] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_rx, __pyx_k_A_2_4q_r_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[195])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[196] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[196])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[197] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[197])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5583, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[198] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_to_json, __pyx_k_A_Qd_q_2S_1_away_AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[198])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[199] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[199])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[200] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[200])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[201] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[201])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[202] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[202])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[203] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[203])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[204] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[204])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 5913, 30};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[205] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_pkt, __pyx_k_A_0_U_iq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[205])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[206] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[206])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[207] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[207])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[208] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[208])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[209] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[209])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[210] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[210])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[211] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[211])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6133, 45};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_txt};
    __pyx_mstate_global->__pyx_codeobj_tab[212] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_str_2, __pyx_k_A_7q_E_4s_1_s_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[212])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[213] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[213])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[214] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[214])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[215] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[215])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[216] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[216])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6258, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_elem};
    __pyx_mstate_global->__pyx_codeobj_tab[217] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_elem, __pyx_k_A_4t3a_1_9_e1_5_1_1_1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[217])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[218] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[218])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[219] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[219])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[220] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[220])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[221] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[221])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6408, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_p_3};
    __pyx_mstate_global->__pyx_codeobj_tab[222] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_param, __pyx_k_A_4t3a_1_8_U_2S_1_9AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[222])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[223] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[223])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[224] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[224])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[225] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[225])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[226] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[226])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6708, 323};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_query, __pyx_mstate->__pyx_n_u_section, __pyx_mstate->__pyx_n_u_rrtypes, __pyx_mstate->__pyx_n_u_rrtype, __pyx_mstate->__pyx_n_u_rrtl};
    __pyx_mstate_global->__pyx_codeobj_tab[227] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_Ja_L_Ja_Ja_L_6_xs_Je1_A_Je1_Je, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[227])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6756, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[228] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[228])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6759, 131};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rr};
    __pyx_mstate_global->__pyx_codeobj_tab[229] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_d_D_t_S_T_1D_Zs_T_1D_T_1D_1_Jc, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[229])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6930, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[230] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_an, __pyx_k_A_31D_Q_IQa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[230])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6951, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[231] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ns, __pyx_k_A_31D_Q_IQa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[231])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 6972, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[232] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ar, __pyx_k_A_31D_Q_IQa, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[232])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[233] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[233])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[234] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[234])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7138, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[235] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_to_json, __pyx_k_A_Qd_q_2S_1_away_AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[235])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7318, 33};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[236] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_an, __pyx_k_A_4t3a_1_t3c, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[236])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7331, 23};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rrtypes};
    __pyx_mstate_global->__pyx_codeobj_tab[237] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ans, __pyx_k_Qd_s, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[237])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7354, 33};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[238] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ns, __pyx_k_A_4t3a_1_t3c, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[238])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7367, 23};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rrtypes};
    __pyx_mstate_global->__pyx_codeobj_tab[239] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_nss, __pyx_k_Qd_s, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[239])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7390, 33};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[240] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ar, __pyx_k_A_4t3a_1_t3c, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[240])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7403, 25};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rrtypes};
    __pyx_mstate_global->__pyx_codeobj_tab[241] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ars, __pyx_k_Qd_s_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[241])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7413, 55};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_addrs, __pyx_mstate->__pyx_n_u_rec};
    __pyx_mstate_global->__pyx_codeobj_tab[242] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ans_addrs, __pyx_k_A_G4t1_s_q_Qc_t1E_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[242])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7426, 55};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_nses, __pyx_mstate->__pyx_n_u_rec};
    __pyx_mstate_global->__pyx_codeobj_tab[243] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ans_nses, __pyx_k_A_q_G4t1_s_gQ_AS_q_t1D_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[243])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7439, 55};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_ptrs, __pyx_mstate->__pyx_n_u_rec};
    __pyx_mstate_global->__pyx_codeobj_tab[244] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ans_ptrs, __pyx_k_A_q_G4t1_s_wa_AS_t1D_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[244])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7452, 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_txts, __pyx_mstate->__pyx_n_u_rec};
    __pyx_mstate_global->__pyx_codeobj_tab[245] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ans_txts, __pyx_k_A_q_G4t1_s_wa_G1Cq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[245])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7465, 47};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_mxes, __pyx_mstate->__pyx_n_u_rec};
    __pyx_mstate_global->__pyx_codeobj_tab[246] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_ans_mxes, __pyx_k_A_q_G4t1_s_gQ_G1Cq_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[246])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[247] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[247])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[248] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[248])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7587, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[249] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tx, __pyx_k_A_31D_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[249])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7596, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[250] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_rx, __pyx_k_A_31D_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[250])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7605, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[251] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_tls, __pyx_k_A_4AT_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[251])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7614, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[252] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_hdr, __pyx_k_A_4AT_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[252])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7623, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[253] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_data, __pyx_k_A_5Qd_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[253])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[254] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[254])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[255] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[255])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7649, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_http};
    __pyx_mstate_global->__pyx_codeobj_tab[256] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_IQ_F, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[256])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7653, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[257] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[257])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7656, 39};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_htb};
    __pyx_mstate_global->__pyx_codeobj_tab[258] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_d_AT_G1_1_1_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[258])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7951, 122};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[259] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_response_hdr_byname, __pyx_k_A_5_5_4z_Qa_6at17_7_178_2S_q_8_6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[259])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 7977, 122};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_name, __pyx_mstate->__pyx_n_u_value, __pyx_mstate->__pyx_n_u_x, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[260] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_transmit_hdr_byname, __pyx_k_A_5_5_4z_Qa_6at17_7_178_2S_q_8_6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[260])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8013, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[261] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_buf, __pyx_k_A_at5_Yaq_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[261])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8025, 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[262] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_bufs, __pyx_k_A_1A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[262])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[263] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[263])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[264] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[264])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8036, 32};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_up};
    __pyx_mstate_global->__pyx_codeobj_tab[265] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_G1_G1_G2Q_G1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[265])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8042, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[266] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_iter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[266])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8045, 87};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_probe, __pyx_mstate->__pyx_n_u_reply};
    __pyx_mstate_global->__pyx_codeobj_tab[267] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_next, __pyx_k_A_d_r_Q_D_F_4q_e2U_V1D_HA_q_q_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[267])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[268] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[268])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[269] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[269])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8190, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[270] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_reply, __pyx_k_A_at5_9AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[270])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[271] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[271])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[272] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[272])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8294, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_out};
    __pyx_mstate_global->__pyx_codeobj_tab[273] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_to_json, __pyx_k_A_5Qd_q_2S_1_away_AQ_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[273])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8385, 27};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4};
    __pyx_mstate_global->__pyx_codeobj_tab[274] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_probe, __pyx_k_A_8_U_9AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[274])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8395, 14};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[275] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_replies, __pyx_k_A_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[275])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[276] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[276])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[277] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[277])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8478, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[278] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_enter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[278])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8481, 2};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_exc_type, __pyx_mstate->__pyx_n_u_exc_val, __pyx_mstate->__pyx_n_u_exc_tb};
    __pyx_mstate_global->__pyx_codeobj_tab[279] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_exit, __pyx_k_A_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[279])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8496, 20};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[280] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_close, __pyx_k_A_Q_IQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[280])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS|CO_VARARGS), 8516, 312};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_types, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_o_type, __pyx_mstate->__pyx_n_u_typea, __pyx_mstate->__pyx_n_u_typec, __pyx_mstate->__pyx_n_u_t_3, __pyx_mstate->__pyx_n_u_seen, __pyx_mstate->__pyx_n_u_c_sff};
    __pyx_mstate_global->__pyx_codeobj_tab[281] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_filter_types, __pyx_k_A_a_4wgQ_AQ_E_r_A_3a_3a_3a_3a_3a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[281])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8579, 412};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_c_list, __pyx_mstate->__pyx_n_u_c_cycle, __pyx_mstate->__pyx_n_u_o_type, __pyx_mstate->__pyx_n_u_o_data, __pyx_mstate->__pyx_n_u_rc, __pyx_mstate->__pyx_n_u_o_2};
    __pyx_mstate_global->__pyx_codeobj_tab[282] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_read, __pyx_k_A_4wgQ_aq_AT_YaxqPQ_3c_3gS_1_7_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[282])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8643, 443};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_obj, __pyx_mstate->__pyx_n_u_o_data, __pyx_mstate->__pyx_n_u_o_type, __pyx_mstate->__pyx_n_u_rc};
    __pyx_mstate_global->__pyx_codeobj_tab[283] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_write, __pyx_k_A_4wgQ_aq_Qe1_Q_m4q_q_Q_nD_nD_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[283])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8715, 13};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[284] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_write, __pyx_k_A_t7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[284])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8718, 13};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[285] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_read, __pyx_k_A_t7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[285])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[286] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[286])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[287] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[287])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8722, 20};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_message, __pyx_mstate->__pyx_n_u_inst};
    __pyx_mstate_global->__pyx_codeobj_tab[288] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_Ry_HA, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[288])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8727, 16};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_data};
    __pyx_mstate_global->__pyx_codeobj_tab[289] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_init, __pyx_k_A_IQ_IQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[289])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8960, 7};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[290] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_enter, __pyx_k_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[290])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8963, 2};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_exc_type, __pyx_mstate->__pyx_n_u_exc_val, __pyx_mstate->__pyx_n_u_exc_tb};
    __pyx_mstate_global->__pyx_codeobj_tab[291] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_exit, __pyx_k_A_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[291])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8966, 113};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_path, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_err, __pyx_mstate->__pyx_n_u_inst};
    __pyx_mstate_global->__pyx_codeobj_tab[292] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_add_unix, __pyx_k_A_Qd_q_2_2S_7q_A_t3a_l_3gQiq_l_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[292])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 8, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 8990, 174};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_port, __pyx_mstate->__pyx_n_u_addr, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_a, __pyx_mstate->__pyx_n_u_err, __pyx_mstate->__pyx_n_u_msg, __pyx_mstate->__pyx_n_u_inst};
    __pyx_mstate_global->__pyx_codeobj_tab[293] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_add_inet, __pyx_k_5_1_1_e6_q_G1A_1_e6_A_2S_7q_A_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[293])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9019, 110};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_path, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_err, __pyx_mstate->__pyx_n_u_inst};
    __pyx_mstate_global->__pyx_codeobj_tab[294] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_add_remote, __pyx_k_A_q_E_WAQ_2S_7q_A_t3a_l_3gQiq_l, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[294])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9042, 111};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_path, __pyx_mstate->__pyx_n_u_filename, __pyx_mstate->__pyx_n_u_pf, __pyx_mstate->__pyx_n_u_o_2, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_inst};
    __pyx_mstate_global->__pyx_codeobj_tab[295] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_add_remote_dir, __pyx_k_A_L_1_b_Ba_q_t4y_31D_Rwaq_r_A_iq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[295])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9059, 105};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_path, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_err, __pyx_mstate->__pyx_n_u_mux};
    __pyx_mstate_global->__pyx_codeobj_tab[296] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_add_mux, __pyx_k_A_1D_T_2S_7q_A_t3a_l_3gQiq_l_2Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[296])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 4, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9075, 57};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_vp, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_inst};
    __pyx_mstate_global->__pyx_codeobj_tab[297] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_add_vp, __pyx_k_A_1D_k_A_2S_1A_G7_1_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[297])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 5, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9083, 135};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_vps, __pyx_mstate->__pyx_n_u_insts, __pyx_mstate->__pyx_n_u_vp, __pyx_mstate->__pyx_n_u_inst};
    __pyx_mstate_global->__pyx_codeobj_tab[298] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_add_vps, __pyx_k_A_Qe1_a_4z_a_1A_a_t81A_5_q_q_Q_4, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[298])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {3, 0, 0, 11, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9180, 538};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_timeout, __pyx_mstate->__pyx_n_u_until, __pyx_mstate->__pyx_n_u_tv, __pyx_mstate->__pyx_n_u_tv_ptr, __pyx_mstate->__pyx_n_u_onion, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_o_2, __pyx_mstate->__pyx_n_u_u_2, __pyx_mstate->__pyx_n_u_now, __pyx_mstate->__pyx_n_u_diff};
    __pyx_mstate_global->__pyx_codeobj_tab[299] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_poll, __pyx_k_q_q_3at_1_l_aq_c_hb_D_d_1_5_Q_A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[299])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9263, 20};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[300] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_done, __pyx_k_A_E_Q_U, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[300])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 3, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9270, 36};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_vps, __pyx_mstate->__pyx_n_u_u_2};
    __pyx_mstate_global->__pyx_codeobj_tab[301] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_vps, __pyx_k_A_a_E_Q_waq_A_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[301])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9280, 11};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[302] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_instances, __pyx_k_A_t1_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[302])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9335, 259};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_primitive, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_listallowed, __pyx_mstate->__pyx_n_u_out, __pyx_mstate->__pyx_n_u_i};
    __pyx_mstate_global->__pyx_codeobj_tab[303] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_getinst, __pyx_k_5_q_z_4q_aq_5_1_aq_a_E_t_Qc_iq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[303])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {4, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9391, 164};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_cmd, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_cstr, __pyx_mstate->__pyx_n_u_tasks, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_c_4, __pyx_mstate->__pyx_n_u_task};
    __pyx_mstate_global->__pyx_codeobj_tab[304] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_dotasks, __pyx_k_A_s_QfA_A_Q_32_A4_2S_t6_m2U_5_q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[304])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {25, 0, 0, 29, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9413, 771};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dst, __pyx_mstate->__pyx_n_u_confidence, __pyx_mstate->__pyx_n_u_dport, __pyx_mstate->__pyx_n_u_icmp_sum, __pyx_mstate->__pyx_n_u_firsthop, __pyx_mstate->__pyx_n_u_gaplimit, __pyx_mstate->__pyx_n_u_loops, __pyx_mstate->__pyx_n_u_hoplimit, __pyx_mstate->__pyx_n_u_pmtud, __pyx_mstate->__pyx_n_u_squeries, __pyx_mstate->__pyx_n_u_ptr, __pyx_mstate->__pyx_n_u_payload, __pyx_mstate->__pyx_n_u_method, __pyx_mstate->__pyx_n_u_attempts, __pyx_mstate->__pyx_n_u_all_attempts, __pyx_mstate->__pyx_n_u_rtr, __pyx_mstate->__pyx_n_u_sport, __pyx_mstate->__pyx_n_u_src, __pyx_mstate->__pyx_n_u_tos, __pyx_mstate->__pyx_n_u_wait_timeout, __pyx_mstate->__pyx_n_u_wait_probe, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_m_2, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr};
    __pyx_mstate_global->__pyx_codeobj_tab[305] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_trace, __pyx_k_1_A_oZq_o5H_Q_q_aj_q_G1A_t9AV9A, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[305])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {17, 0, 0, 21, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9541, 534};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dst, __pyx_mstate->__pyx_n_u_confidence, __pyx_mstate->__pyx_n_u_dport, __pyx_mstate->__pyx_n_u_firsthop, __pyx_mstate->__pyx_n_u_gaplimit, __pyx_mstate->__pyx_n_u_method, __pyx_mstate->__pyx_n_u_attempts, __pyx_mstate->__pyx_n_u_ptr, __pyx_mstate->__pyx_n_u_rtr, __pyx_mstate->__pyx_n_u_sport, __pyx_mstate->__pyx_n_u_tos, __pyx_mstate->__pyx_n_u_wait_timeout, __pyx_mstate->__pyx_n_u_wait_probe, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_m_2, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr};
    __pyx_mstate_global->__pyx_codeobj_tab[306] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_tracelb, __pyx_k_Q_j_Ja_1_P_q_G1A_t9AV_a_7_fA_6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[306])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {26, 0, 0, 31, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9636, 984};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dst, __pyx_mstate->__pyx_n_u_tcp_ack, __pyx_mstate->__pyx_n_u_tcp_seq, __pyx_mstate->__pyx_n_u_attempts, __pyx_mstate->__pyx_n_u_icmp_id, __pyx_mstate->__pyx_n_u_icmp_seq, __pyx_mstate->__pyx_n_u_icmp_sum, __pyx_mstate->__pyx_n_u_dport, __pyx_mstate->__pyx_n_u_sport, __pyx_mstate->__pyx_n_u_wait_probe, __pyx_mstate->__pyx_n_u_ttl_3, __pyx_mstate->__pyx_n_u_mtu, __pyx_mstate->__pyx_n_u_stop_count, __pyx_mstate->__pyx_n_u_method, __pyx_mstate->__pyx_n_u_payload, __pyx_mstate->__pyx_n_u_rtr, __pyx_mstate->__pyx_n_u_recordroute, __pyx_mstate->__pyx_n_u_dltx, __pyx_mstate->__pyx_n_u_size, __pyx_mstate->__pyx_n_u_src, __pyx_mstate->__pyx_n_u_wait_timeout, __pyx_mstate->__pyx_n_u_tos, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_m_2, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr};
    __pyx_mstate_global->__pyx_codeobj_tab[307] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_ping, __pyx_k_l_z_1_j_A_q_Ql_q_G1A_t9AV81_4s, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[307])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {14, 0, 0, 15, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9788, 373};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_qname, __pyx_mstate->__pyx_n_u_server, __pyx_mstate->__pyx_n_u_qclass, __pyx_mstate->__pyx_n_u_qtype, __pyx_mstate->__pyx_n_u_attempts, __pyx_mstate->__pyx_n_u_rd, __pyx_mstate->__pyx_n_u_wait_timeout, __pyx_mstate->__pyx_n_u_tcp, __pyx_mstate->__pyx_n_u_nsid, __pyx_mstate->__pyx_n_u_ecs, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args};
    __pyx_mstate_global->__pyx_codeobj_tab[308] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_dns, __pyx_k_A_4Ja_m_k_q_G1A_t9AV81_9G5_IRq, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[308])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {14, 0, 0, 19, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9854, 555};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dst1, __pyx_mstate->__pyx_n_u_dst2, __pyx_mstate->__pyx_n_u_fudge, __pyx_mstate->__pyx_n_u_icmp_sum, __pyx_mstate->__pyx_n_u_dport, __pyx_mstate->__pyx_n_u_sport, __pyx_mstate->__pyx_n_u_method, __pyx_mstate->__pyx_n_u_attempts, __pyx_mstate->__pyx_n_u_wait_probe, __pyx_mstate->__pyx_n_u_wait_timeout, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_m_2, __pyx_mstate->__pyx_n_u_pd, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr};
    __pyx_mstate_global->__pyx_codeobj_tab[309] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_ally, __pyx_k_1_2C1_N_q_G1A_t9AV86_Q_7_fA_9G1, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[309])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {5, 0, 0, 6, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9953, 94};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dst, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args};
    __pyx_mstate_global->__pyx_codeobj_tab[310] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_mercator, __pyx_k_k_A_q_G1A_t9AV_q_7_q_G3d_t9AS_Q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[310])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {10, 0, 0, 15, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 9978, 574};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_rounds, __pyx_mstate->__pyx_n_u_wait_probe, __pyx_mstate->__pyx_n_u_wait_round, __pyx_mstate->__pyx_n_u_wait_timeout, __pyx_mstate->__pyx_n_u_probedefs, __pyx_mstate->__pyx_n_u_addrs, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_ms_2, __pyx_mstate->__pyx_n_u_s_2, __pyx_mstate->__pyx_n_u_pd, __pyx_mstate->__pyx_n_u_addr};
    __pyx_mstate_global->__pyx_codeobj_tab[311] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_midarest, __pyx_k_22C1_1_Q_k_0_q_G1A_t9AV_v_S_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[311])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {8, 0, 0, 11, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10054, 388};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_probedefs, __pyx_mstate->__pyx_n_u_schedule, __pyx_mstate->__pyx_n_u_startat, __pyx_mstate->__pyx_n_u_wait_timeout, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_s_2, __pyx_mstate->__pyx_n_u_pd};
    __pyx_mstate_global->__pyx_codeobj_tab[312] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_midardisc, __pyx_k_A_0_q_G1A_t9AV_l_S_AQ_9Cq_AQ_7, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[312])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {10, 0, 0, 13, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10116, 548};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_addrs, __pyx_mstate->__pyx_n_u_rounds, __pyx_mstate->__pyx_n_u_probedefs, __pyx_mstate->__pyx_n_u_wait_probe, __pyx_mstate->__pyx_n_u_wait_round, __pyx_mstate->__pyx_n_u_wait_timeout, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_pd, __pyx_mstate->__pyx_n_u_a};
    __pyx_mstate_global->__pyx_codeobj_tab[313] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_radargun, __pyx_k_Q_00C1_k_q_G1A_t9AV_q_S_AQ_7_t, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[313])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {15, 0, 0, 20, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10201, 610};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_near, __pyx_mstate->__pyx_n_u_far, __pyx_mstate->__pyx_n_u_prefixlen, __pyx_mstate->__pyx_n_u_fudge, __pyx_mstate->__pyx_n_u_icmp_sum, __pyx_mstate->__pyx_n_u_dport, __pyx_mstate->__pyx_n_u_sport, __pyx_mstate->__pyx_n_u_method, __pyx_mstate->__pyx_n_u_attempts, __pyx_mstate->__pyx_n_u_wait_probe, __pyx_mstate->__pyx_n_u_wait_timeout, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_m_2, __pyx_mstate->__pyx_n_u_pd, __pyx_mstate->__pyx_n_u_genexpr, __pyx_mstate->__pyx_n_u_genexpr};
    __pyx_mstate_global->__pyx_codeobj_tab[314] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_prefixscan, __pyx_k_8_A_00C1_1P_q_G1A_t9AV_1_7_fA_9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[314])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {8, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10311, 253};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_src, __pyx_mstate->__pyx_n_u_icmp_id, __pyx_mstate->__pyx_n_u_limit_pkt_count, __pyx_mstate->__pyx_n_u_limit_time, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args};
    __pyx_mstate_global->__pyx_codeobj_tab[315] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_sniff, __pyx_k_55Fa_a_q_G1Bm1_t9AV9A_82Rs_A_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[315])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {9, 0, 0, 13, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10355, 335};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dst, __pyx_mstate->__pyx_n_u_url, __pyx_mstate->__pyx_n_u_headers, __pyx_mstate->__pyx_n_u_insecure, __pyx_mstate->__pyx_n_u_limit_time, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_fname, __pyx_mstate->__pyx_n_u_fbody, __pyx_mstate->__pyx_n_u_esc};
    __pyx_mstate_global->__pyx_codeobj_tab[316] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_http, __pyx_k_7I_Q_q_G1A_t9AV81_4s_AQ_4s_AQ_9, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[316])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {10, 0, 0, 11, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10410, 270};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dst, __pyx_mstate->__pyx_n_u_dport, __pyx_mstate->__pyx_n_u_payload, __pyx_mstate->__pyx_n_u_attempts, __pyx_mstate->__pyx_n_u_src, __pyx_mstate->__pyx_n_u_stop_count, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args};
    __pyx_mstate_global->__pyx_codeobj_tab[317] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_udpprobe, __pyx_k_8_q_G1A_t9AV_q_4s_s_5_83a_AQ_6, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[317])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {7, 0, 0, 9, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10456, 156};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_dst, __pyx_mstate->__pyx_n_u_method, __pyx_mstate->__pyx_n_u_url, __pyx_mstate->__pyx_n_u_inst, __pyx_mstate->__pyx_n_u_userid, __pyx_mstate->__pyx_n_u_sync, __pyx_mstate->__pyx_n_u_args, __pyx_mstate->__pyx_n_u_esc};
    __pyx_mstate_global->__pyx_codeobj_tab[318] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_do_tbit, __pyx_k_A_Q_q_G1A_t9AV81_4s_s_E_D_1_AQ, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[318])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10491, 36};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[319] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_done, __pyx_k_A_3at82Q_1_2_4q, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[319])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[320] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[320])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[321] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[321])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 7, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10517, 105};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_vps, __pyx_mstate->__pyx_n_u_vpset, __pyx_mstate->__pyx_n_u_count_2, __pyx_mstate->__pyx_n_u_i, __pyx_mstate->__pyx_n_u_vp_c, __pyx_mstate->__pyx_n_u_vp};
    __pyx_mstate_global->__pyx_codeobj_tab[322] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_vps, __pyx_k_A_a_1_a_6_A_1_6aq_E_aq_7q_q_1A_s, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[322])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[323] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[323])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[324] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[324])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[325] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[325])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[326] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[326])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10874, 13};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[327] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_done, __pyx_k_A_a, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[327])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10881, 11};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[328] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_is_eof, __pyx_k_A_t1_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[328])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[329] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[329])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[330] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[330])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 10931, 13};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[331] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_lib_python_scamper_pyx, __pyx_mstate->__pyx_n_u_halt, __pyx_k_A_a_2, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[331])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {1, 0, 0, 1, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 1, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self};
    __pyx_mstate_global->__pyx_codeobj_tab[332] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_reduce_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[332])) goto bad;
  }
  {
    const __Pyx_PyCode_New_function_description descr = {2, 0, 0, 2, (unsigned int)(CO_OPTIMIZED|CO_NEWLOCALS), 3, 9};
    PyObject* const varnames[] = {__pyx_mstate->__pyx_n_u_self, __pyx_mstate->__pyx_n_u_pyx_state};
    __pyx_mstate_global->__pyx_codeobj_tab[333] = __Pyx_PyCode_New(descr, varnames, __pyx_mstate->__pyx_kp_u_stringsource, __pyx_mstate->__pyx_n_u_setstate_cython, __pyx_k_Q_3, tuple_dedup_map); if (unlikely(!__pyx_mstate_global->__pyx_codeobj_tab[333])) goto bad;
  }
  Py_DECREF(tuple_dedup_map);
  return 0;
  bad:
  Py_DECREF(tuple_dedup_map);
  return -1;
}
/* #### Code section: init_globals ### */

static int __Pyx_InitGlobals(void) {
  /* PythonCompatibility.init */
  if (likely(__Pyx_init_co_variables() == 0)); else

if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)

  /* CachedMethodType.init */
  #if CYTHON_COMPILING_IN_LIMITED_API
{
    PyObject *typesModule=NULL;
    typesModule = PyImport_ImportModule("types");
    if (typesModule) {
        __pyx_mstate_global->__Pyx_CachedMethodType = PyObject_GetAttrString(typesModule, "MethodType");
        Py_DECREF(typesModule);
    }
} // error handling follows
#endif

if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 1, __pyx_L1_error)

  return 0;
  __pyx_L1_error:;
  return -1;
}
/* #### Code section: cleanup_globals ### */
/* #### Code section: cleanup_module ### */
/* #### Code section: main_method ### */
/* #### Code section: utility_code_pragmas ### */
#ifdef _MSC_VER
#pragma warning( push )
/* Warning 4127: conditional expression is constant
 * Cython uses constant conditional expressions to allow in inline functions to be optimized at
 * compile-time, so this warning is not useful
 */
#pragma warning( disable : 4127 )
#endif



/* #### Code section: utility_code_def ### */

/* --- Runtime support code --- */
/* Refnanny */
#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule(modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, "RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif

/* PyErrExceptionMatches */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx_PyErr_ExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    n = PyTuple_GET_SIZE(tuple);
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
    for (i=0; i<n; i++) {
        if (__Pyx_PyErr_GivenExceptionMatches(exc_type, PyTuple_GET_ITEM(tuple, i))) return 1;
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) {
    int result;
    PyObject *exc_type;
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject *current_exception = tstate->current_exception;
    if (unlikely(!current_exception)) return 0;
    exc_type = (PyObject*) Py_TYPE(current_exception);
    if (exc_type == err) return 1;
#else
    exc_type = tstate->curexc_type;
    if (exc_type == err) return 1;
    if (unlikely(!exc_type)) return 0;
#endif
    #if CYTHON_AVOID_BORROWED_REFS
    Py_INCREF(exc_type);
    #endif
    if (unlikely(PyTuple_Check(err))) {
        result = __Pyx_PyErr_ExceptionMatchesTuple(exc_type, err);
    } else {
        result = __Pyx_PyErr_GivenExceptionMatches(exc_type, err);
    }
    #if CYTHON_AVOID_BORROWED_REFS
    Py_DECREF(exc_type);
    #endif
    return result;
}
#endif

/* PyErrFetchRestore */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject *tmp_value;
    assert(type == NULL || (value != NULL && type == (PyObject*) Py_TYPE(value)));
    if (value) {
        #if CYTHON_COMPILING_IN_CPYTHON
        if (unlikely(((PyBaseExceptionObject*) value)->traceback != tb))
        #endif
            PyException_SetTraceback(value, tb);
    }
    tmp_value = tstate->current_exception;
    tstate->current_exception = value;
    Py_XDECREF(tmp_value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
#else
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    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);
#endif
}
static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
#if PY_VERSION_HEX >= 0x030C00A6
    PyObject* exc_value;
    exc_value = tstate->current_exception;
    tstate->current_exception = 0;
    *value = exc_value;
    *type = NULL;
    *tb = NULL;
    if (exc_value) {
        *type = (PyObject*) Py_TYPE(exc_value);
        Py_INCREF(*type);
        #if CYTHON_COMPILING_IN_CPYTHON
        *tb = ((PyBaseExceptionObject*) exc_value)->traceback;
        Py_XINCREF(*tb);
        #else
        *tb = PyException_GetTraceback(exc_value);
        #endif
    }
#else
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
#endif
}
#endif

/* PyObjectGetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
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);
    return PyObject_GetAttr(obj, attr_name);
}
#endif

/* PyObjectGetAttrStrNoError */
#if __PYX_LIMITED_VERSION_HEX < 0x030d0000
static void __Pyx_PyObject_GetAttrStr_ClearAttributeError(void) {
    __Pyx_PyThreadState_declare
    __Pyx_PyThreadState_assign
    if (likely(__Pyx_PyErr_ExceptionMatches(PyExc_AttributeError)))
        __Pyx_PyErr_Clear();
}
#endif
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStrNoError(PyObject* obj, PyObject* attr_name) {
    PyObject *result;
#if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
    (void) PyObject_GetOptionalAttr(obj, attr_name, &result);
    return result;
#else
#if CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_TYPE_SLOTS
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro == PyObject_GenericGetAttr)) {
        return _PyObject_GenericGetAttrWithDict(obj, attr_name, NULL, 1);
    }
#endif
    result = __Pyx_PyObject_GetAttrStr(obj, attr_name);
    if (unlikely(!result)) {
        __Pyx_PyObject_GetAttrStr_ClearAttributeError();
    }
    return result;
#endif
}

/* GetBuiltinName */
static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_b, name);
    if (unlikely(!result) && !PyErr_Occurred()) {
        PyErr_Format(PyExc_NameError,
            "name '%U' is not defined", name);
    }
    return result;
}

/* TupleAndListFromArray */
#if !CYTHON_COMPILING_IN_CPYTHON && CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject *
__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    Py_ssize_t i;
    if (n <= 0) {
        return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple);
    }
    res = PyTuple_New(n);
    if (unlikely(res == NULL)) return NULL;
    for (i = 0; i < n; i++) {
        if (unlikely(__Pyx_PyTuple_SET_ITEM(res, i, src[i]) < 0)) {
            Py_DECREF(res);
            return NULL;
        }
        Py_INCREF(src[i]);
    }
    return res;
}
#elif CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE void __Pyx_copy_object_array(PyObject *const *CYTHON_RESTRICT src, PyObject** CYTHON_RESTRICT dest, Py_ssize_t length) {
    PyObject *v;
    Py_ssize_t i;
    for (i = 0; i < length; i++) {
        v = dest[i] = src[i];
        Py_INCREF(v);
    }
}
static CYTHON_INLINE PyObject *
__Pyx_PyTuple_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    if (n <= 0) {
        return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_tuple);
    }
    res = PyTuple_New(n);
    if (unlikely(res == NULL)) return NULL;
    __Pyx_copy_object_array(src, ((PyTupleObject*)res)->ob_item, n);
    return res;
}
static CYTHON_INLINE PyObject *
__Pyx_PyList_FromArray(PyObject *const *src, Py_ssize_t n)
{
    PyObject *res;
    if (n <= 0) {
        return PyList_New(0);
    }
    res = PyList_New(n);
    if (unlikely(res == NULL)) return NULL;
    __Pyx_copy_object_array(src, ((PyListObject*)res)->ob_item, n);
    return res;
}
#endif

/* BytesEquals */
static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL ||\
        !(CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS)
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    if (s1 == s2) {
        return (equals == Py_EQ);
    } else if (PyBytes_CheckExact(s1) & PyBytes_CheckExact(s2)) {
        const char *ps1, *ps2;
        Py_ssize_t length = PyBytes_GET_SIZE(s1);
        if (length != PyBytes_GET_SIZE(s2))
            return (equals == Py_NE);
        ps1 = PyBytes_AS_STRING(s1);
        ps2 = PyBytes_AS_STRING(s2);
        if (ps1[0] != ps2[0]) {
            return (equals == Py_NE);
        } else if (length == 1) {
            return (equals == Py_EQ);
        } else {
            int result;
#if CYTHON_USE_UNICODE_INTERNALS && (PY_VERSION_HEX < 0x030B0000)
            Py_hash_t hash1, hash2;
            hash1 = ((PyBytesObject*)s1)->ob_shash;
            hash2 = ((PyBytesObject*)s2)->ob_shash;
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                return (equals == Py_NE);
            }
#endif
            result = memcmp(ps1, ps2, (size_t)length);
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & PyBytes_CheckExact(s2)) {
        return (equals == Py_NE);
    } else if ((s2 == Py_None) & PyBytes_CheckExact(s1)) {
        return (equals == Py_NE);
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
#endif
}

/* UnicodeEquals */
static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL
    return PyObject_RichCompareBool(s1, s2, equals);
#else
    int s1_is_unicode, s2_is_unicode;
    if (s1 == s2) {
        goto return_eq;
    }
    s1_is_unicode = PyUnicode_CheckExact(s1);
    s2_is_unicode = PyUnicode_CheckExact(s2);
    if (s1_is_unicode & s2_is_unicode) {
        Py_ssize_t length, length2;
        int kind;
        void *data1, *data2;
        #if !CYTHON_COMPILING_IN_LIMITED_API
        if (unlikely(__Pyx_PyUnicode_READY(s1) < 0) || unlikely(__Pyx_PyUnicode_READY(s2) < 0))
            return -1;
        #endif
        length = __Pyx_PyUnicode_GET_LENGTH(s1);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(length < 0)) return -1;
        #endif
        length2 = __Pyx_PyUnicode_GET_LENGTH(s2);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(length2 < 0)) return -1;
        #endif
        if (length != length2) {
            goto return_ne;
        }
#if CYTHON_USE_UNICODE_INTERNALS
        {
            Py_hash_t hash1, hash2;
            hash1 = ((PyASCIIObject*)s1)->hash;
            hash2 = ((PyASCIIObject*)s2)->hash;
            if (hash1 != hash2 && hash1 != -1 && hash2 != -1) {
                goto return_ne;
            }
        }
#endif
        kind = __Pyx_PyUnicode_KIND(s1);
        if (kind != __Pyx_PyUnicode_KIND(s2)) {
            goto return_ne;
        }
        data1 = __Pyx_PyUnicode_DATA(s1);
        data2 = __Pyx_PyUnicode_DATA(s2);
        if (__Pyx_PyUnicode_READ(kind, data1, 0) != __Pyx_PyUnicode_READ(kind, data2, 0)) {
            goto return_ne;
        } else if (length == 1) {
            goto return_eq;
        } else {
            int result = memcmp(data1, data2, (size_t)(length * kind));
            return (equals == Py_EQ) ? (result == 0) : (result != 0);
        }
    } else if ((s1 == Py_None) & s2_is_unicode) {
        goto return_ne;
    } else if ((s2 == Py_None) & s1_is_unicode) {
        goto return_ne;
    } else {
        int result;
        PyObject* py_result = PyObject_RichCompare(s1, s2, equals);
        if (!py_result)
            return -1;
        result = __Pyx_PyObject_IsTrue(py_result);
        Py_DECREF(py_result);
        return result;
    }
return_eq:
    return (equals == Py_EQ);
return_ne:
    return (equals == Py_NE);
#endif
}

/* fastcall */
#if CYTHON_METH_FASTCALL
static CYTHON_INLINE PyObject * __Pyx_GetKwValue_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues, PyObject *s)
{
    Py_ssize_t i, n = __Pyx_PyTuple_GET_SIZE(kwnames);
    #if !CYTHON_ASSUME_SAFE_SIZE
    if (unlikely(n == -1)) return NULL;
    #endif
    for (i = 0; i < n; i++)
    {
        PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i);
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(!namei)) return NULL;
        #endif
        if (s == namei) return kwvalues[i];
    }
    for (i = 0; i < n; i++)
    {
        PyObject *namei = __Pyx_PyTuple_GET_ITEM(kwnames, i);
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(!namei)) return NULL;
        #endif
        int eq = __Pyx_PyUnicode_Equals(s, namei, Py_EQ);
        if (unlikely(eq != 0)) {
            if (unlikely(eq < 0)) return NULL;
            return kwvalues[i];
        }
    }
    return NULL;
}
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX >= 0x030d0000 || CYTHON_COMPILING_IN_LIMITED_API
CYTHON_UNUSED static PyObject *__Pyx_KwargsAsDict_FASTCALL(PyObject *kwnames, PyObject *const *kwvalues) {
    Py_ssize_t i, nkwargs;
    PyObject *dict;
#if !CYTHON_ASSUME_SAFE_SIZE
    nkwargs = PyTuple_Size(kwnames);
    if (unlikely(nkwargs < 0)) return NULL;
#else
    nkwargs = PyTuple_GET_SIZE(kwnames);
#endif
    dict = PyDict_New();
    if (unlikely(!dict))
        return NULL;
    for (i=0; i<nkwargs; i++) {
#if !CYTHON_ASSUME_SAFE_MACROS
        PyObject *key = PyTuple_GetItem(kwnames, i);
        if (!key) goto bad;
#else
        PyObject *key = PyTuple_GET_ITEM(kwnames, i);
#endif
        if (unlikely(PyDict_SetItem(dict, key, kwvalues[i]) < 0))
            goto bad;
    }
    return dict;
bad:
    Py_DECREF(dict);
    return NULL;
}
#endif
#endif

/* RaiseDoubleKeywords */
static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
}

/* PyFunctionFastCall */
#if CYTHON_FAST_PYCALL && !CYTHON_VECTORCALL
static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject *const *args, Py_ssize_t na,
                                               PyObject *globals) {
    PyFrameObject *f;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject **fastlocals;
    Py_ssize_t i;
    PyObject *result;
    assert(globals != NULL);
    /* XXX Perhaps we should create a specialized
       PyFrame_New() that doesn't take locals, but does
       take builtins without sanity checking them.
       */
    assert(tstate != NULL);
    f = PyFrame_New(tstate, co, globals, NULL);
    if (f == NULL) {
        return NULL;
    }
    fastlocals = __Pyx_PyFrame_GetLocalsplus(f);
    for (i = 0; i < na; i++) {
        Py_INCREF(*args);
        fastlocals[i] = *args++;
    }
    result = PyEval_EvalFrameEx(f,0);
    ++tstate->recursion_depth;
    Py_DECREF(f);
    --tstate->recursion_depth;
    return result;
}
static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject *const *args, Py_ssize_t nargs, PyObject *kwargs) {
    PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func);
    PyObject *globals = PyFunction_GET_GLOBALS(func);
    PyObject *argdefs = PyFunction_GET_DEFAULTS(func);
    PyObject *closure;
    PyObject *kwdefs;
    PyObject *kwtuple, **k;
    PyObject **d;
    Py_ssize_t nd;
    Py_ssize_t nk;
    PyObject *result;
    assert(kwargs == NULL || PyDict_Check(kwargs));
    nk = kwargs ? PyDict_Size(kwargs) : 0;
    if (unlikely(Py_EnterRecursiveCall(" while calling a Python object"))) {
        return NULL;
    }
    if (
            co->co_kwonlyargcount == 0 &&
            likely(kwargs == NULL || nk == 0) &&
            co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) {
        if (argdefs == NULL && co->co_argcount == nargs) {
            result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals);
            goto done;
        }
        else if (nargs == 0 && argdefs != NULL
                 && co->co_argcount == Py_SIZE(argdefs)) {
            /* function called with no arguments, but all parameters have
               a default value: use default values as arguments .*/
            args = &PyTuple_GET_ITEM(argdefs, 0);
            result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals);
            goto done;
        }
    }
    if (kwargs != NULL) {
        Py_ssize_t pos, i;
        kwtuple = PyTuple_New(2 * nk);
        if (kwtuple == NULL) {
            result = NULL;
            goto done;
        }
        k = &PyTuple_GET_ITEM(kwtuple, 0);
        pos = i = 0;
        while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) {
            Py_INCREF(k[i]);
            Py_INCREF(k[i+1]);
            i += 2;
        }
        nk = i / 2;
    }
    else {
        kwtuple = NULL;
        k = NULL;
    }
    closure = PyFunction_GET_CLOSURE(func);
    kwdefs = PyFunction_GET_KW_DEFAULTS(func);
    if (argdefs != NULL) {
        d = &PyTuple_GET_ITEM(argdefs, 0);
        nd = Py_SIZE(argdefs);
    }
    else {
        d = NULL;
        nd = 0;
    }
    result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL,
                               args, (int)nargs,
                               k, (int)nk,
                               d, (int)nd, kwdefs, closure);
    Py_XDECREF(kwtuple);
done:
    Py_LeaveRecursiveCall();
    return result;
}
#endif

/* PyObjectCall */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *result;
    ternaryfunc call = Py_TYPE(func)->tp_call;
    if (unlikely(!call))
        return PyObject_Call(func, arg, kw);
    if (unlikely(Py_EnterRecursiveCall(" 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

/* PyObjectCallMethO */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) {
    PyObject *self, *result;
    PyCFunction cfunc;
    cfunc = __Pyx_CyOrPyCFunction_GET_FUNCTION(func);
    self = __Pyx_CyOrPyCFunction_GET_SELF(func);
    if (unlikely(Py_EnterRecursiveCall(" 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

/* PyObjectFastCall */
#if PY_VERSION_HEX < 0x03090000 || CYTHON_COMPILING_IN_LIMITED_API
static PyObject* __Pyx_PyObject_FastCall_fallback(PyObject *func, PyObject * const*args, size_t nargs, PyObject *kwargs) {
    PyObject *argstuple;
    PyObject *result = 0;
    size_t i;
    argstuple = PyTuple_New((Py_ssize_t)nargs);
    if (unlikely(!argstuple)) return NULL;
    for (i = 0; i < nargs; i++) {
        Py_INCREF(args[i]);
        if (__Pyx_PyTuple_SET_ITEM(argstuple, (Py_ssize_t)i, args[i]) != (0)) goto bad;
    }
    result = __Pyx_PyObject_Call(func, argstuple, kwargs);
  bad:
    Py_DECREF(argstuple);
    return result;
}
#endif
#if CYTHON_VECTORCALL && !CYTHON_COMPILING_IN_LIMITED_API
  #if PY_VERSION_HEX < 0x03090000
    #define __Pyx_PyVectorcall_Function(callable) _PyVectorcall_Function(callable)
  #elif CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE vectorcallfunc __Pyx_PyVectorcall_Function(PyObject *callable) {
    PyTypeObject *tp = Py_TYPE(callable);
    #if defined(__Pyx_CyFunction_USED)
    if (__Pyx_CyFunction_CheckExact(callable)) {
        return __Pyx_CyFunction_func_vectorcall(callable);
    }
    #endif
    if (!PyType_HasFeature(tp, Py_TPFLAGS_HAVE_VECTORCALL)) {
        return NULL;
    }
    assert(PyCallable_Check(callable));
    Py_ssize_t offset = tp->tp_vectorcall_offset;
    assert(offset > 0);
    vectorcallfunc ptr;
    memcpy(&ptr, (char *) callable + offset, sizeof(ptr));
    return ptr;
}
  #else
    #define __Pyx_PyVectorcall_Function(callable) PyVectorcall_Function(callable)
  #endif
#endif
static CYTHON_INLINE PyObject* __Pyx_PyObject_FastCallDict(PyObject *func, PyObject *const *args, size_t _nargs, PyObject *kwargs) {
    Py_ssize_t nargs = __Pyx_PyVectorcall_NARGS(_nargs);
#if CYTHON_COMPILING_IN_CPYTHON
    if (nargs == 0 && kwargs == NULL) {
        if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_NOARGS))
            return __Pyx_PyObject_CallMethO(func, NULL);
    }
    else if (nargs == 1 && kwargs == NULL) {
        if (__Pyx_CyOrPyCFunction_Check(func) && likely( __Pyx_CyOrPyCFunction_GET_FLAGS(func) & METH_O))
            return __Pyx_PyObject_CallMethO(func, args[0]);
    }
#endif
    #if PY_VERSION_HEX < 0x030800B1
    #if CYTHON_FAST_PYCCALL
    if (PyCFunction_Check(func)) {
        if (kwargs) {
            return _PyCFunction_FastCallDict(func, args, nargs, kwargs);
        } else {
            return _PyCFunction_FastCallKeywords(func, args, nargs, NULL);
        }
    }
    if (!kwargs && __Pyx_IS_TYPE(func, &PyMethodDescr_Type)) {
        return _PyMethodDescr_FastCallKeywords(func, args, nargs, NULL);
    }
    #endif
    #if CYTHON_FAST_PYCALL
    if (PyFunction_Check(func)) {
        return __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs);
    }
    #endif
    #endif
    if (kwargs == NULL) {
        #if CYTHON_VECTORCALL && !CYTHON_COMPILING_IN_LIMITED_API
        vectorcallfunc f = __Pyx_PyVectorcall_Function(func);
        if (f) {
            return f(func, args, _nargs, NULL);
        }
        #elif defined(__Pyx_CyFunction_USED) && CYTHON_BACKPORT_VECTORCALL
        if (__Pyx_CyFunction_CheckExact(func)) {
            __pyx_vectorcallfunc f = __Pyx_CyFunction_func_vectorcall(func);
            if (f) return f(func, args, _nargs, NULL);
        }
        #elif CYTHON_COMPILING_IN_LIMITED_API && CYTHON_VECTORCALL
        return PyObject_Vectorcall(func, args, _nargs, NULL);
        #endif
    }
    if (nargs == 0) {
        return __Pyx_PyObject_Call(func, __pyx_mstate_global->__pyx_empty_tuple, kwargs);
    }
    #if PY_VERSION_HEX >= 0x03090000 && !CYTHON_COMPILING_IN_LIMITED_API
    return PyObject_VectorcallDict(func, args, (size_t)nargs, kwargs);
    #else
    return __Pyx_PyObject_FastCall_fallback(func, args, (size_t)nargs, kwargs);
    #endif
}

/* UnpackUnboundCMethod */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *args, PyObject *kwargs) {
    PyObject *result;
    PyObject *selfless_args = PyTuple_GetSlice(args, 1, PyTuple_Size(args));
    if (unlikely(!selfless_args)) return NULL;
    result = PyObject_Call(method, selfless_args, kwargs);
    Py_DECREF(selfless_args);
    return result;
}
#elif CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x03090000
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject **args, Py_ssize_t nargs, PyObject *kwnames) {
        return _PyObject_Vectorcall
            (method, args ? args+1 : NULL, nargs ? nargs-1 : 0, kwnames);
}
#else
static PyObject *__Pyx_SelflessCall(PyObject *method, PyObject *const *args, Py_ssize_t nargs, PyObject *kwnames) {
    return
#if PY_VERSION_HEX < 0x03090000
    _PyObject_Vectorcall
#else
    PyObject_Vectorcall
#endif
        (method, args ? args+1 : NULL, nargs ? (size_t) nargs-1 : 0, kwnames);
}
#endif
static PyMethodDef __Pyx_UnboundCMethod_Def = {
     "CythonUnboundCMethod",
     __PYX_REINTERPRET_FUNCION(PyCFunction, __Pyx_SelflessCall),
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030C0000
     METH_VARARGS | METH_KEYWORDS,
#else
     METH_FASTCALL | METH_KEYWORDS,
#endif
     NULL
};
static int __Pyx_TryUnpackUnboundCMethod(__Pyx_CachedCFunction* target) {
    PyObject *method, *result=NULL;
    method = __Pyx_PyObject_GetAttrStr(target->type, *target->method_name);
    if (unlikely(!method))
        return -1;
    result = method;
#if CYTHON_COMPILING_IN_CPYTHON
    if (likely(__Pyx_TypeCheck(method, &PyMethodDescr_Type)))
    {
        PyMethodDescrObject *descr = (PyMethodDescrObject*) method;
        target->func = descr->d_method->ml_meth;
        target->flag = descr->d_method->ml_flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_STACKLESS);
    } else
#endif
#if CYTHON_COMPILING_IN_PYPY
#else
    if (PyCFunction_Check(method))
#endif
    {
        PyObject *self;
        int self_found;
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
        self = PyObject_GetAttrString(method, "__self__");
        if (!self) {
            PyErr_Clear();
        }
#else
        self = PyCFunction_GET_SELF(method);
#endif
        self_found = (self && self != Py_None);
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
        Py_XDECREF(self);
#endif
        if (self_found) {
            PyObject *unbound_method = PyCFunction_New(&__Pyx_UnboundCMethod_Def, method);
            if (unlikely(!unbound_method)) return -1;
            Py_DECREF(method);
            result = unbound_method;
        }
    }
#if !CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    if (unlikely(target->method)) {
        Py_DECREF(result);
    } else
#endif
    target->method = result;
    return 0;
}

/* CallUnboundCMethod2 */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject *__Pyx_CallUnboundCMethod2(__Pyx_CachedCFunction *cfunc, PyObject *self, PyObject *arg1, PyObject *arg2) {
    int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc);
    if (likely(was_initialized == 2 && cfunc->func)) {
        PyObject *args[2] = {arg1, arg2};
        if (cfunc->flag == METH_FASTCALL) {
            return __Pyx_CallCFunctionFast(cfunc, self, args, 2);
        }
        if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
            return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, args, 2, NULL);
    }
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    else if (unlikely(was_initialized == 1)) {
        __Pyx_CachedCFunction tmp_cfunc = {
#ifndef __cplusplus
            0
#endif
        };
        tmp_cfunc.type = cfunc->type;
        tmp_cfunc.method_name = cfunc->method_name;
        return __Pyx__CallUnboundCMethod2(&tmp_cfunc, self, arg1, arg2);
    }
#endif
    PyObject *result = __Pyx__CallUnboundCMethod2(cfunc, self, arg1, arg2);
    __Pyx_CachedCFunction_SetFinishedInitializing(cfunc);
    return result;
}
#endif
static PyObject* __Pyx__CallUnboundCMethod2(__Pyx_CachedCFunction* cfunc, PyObject* self, PyObject* arg1, PyObject* arg2){
    if (unlikely(!cfunc->func && !cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
#if CYTHON_COMPILING_IN_CPYTHON
    if (cfunc->func && (cfunc->flag & METH_VARARGS)) {
        PyObject *result = NULL;
        PyObject *args = PyTuple_New(2);
        if (unlikely(!args)) return NULL;
        Py_INCREF(arg1);
        PyTuple_SET_ITEM(args, 0, arg1);
        Py_INCREF(arg2);
        PyTuple_SET_ITEM(args, 1, arg2);
        if (cfunc->flag & METH_KEYWORDS)
            result = __Pyx_CallCFunctionWithKeywords(cfunc, self, args, NULL);
        else
            result = __Pyx_CallCFunction(cfunc, self, args);
        Py_DECREF(args);
        return result;
    }
#endif
    {
        PyObject *args[4] = {NULL, self, arg1, arg2};
        return __Pyx_PyObject_FastCall(cfunc->method, args+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
    }
}

/* ParseKeywords */
static int __Pyx_ValidateDuplicatePosArgs(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    const char* function_name)
{
    PyObject ** const *name = argnames;
    while (name != first_kw_arg) {
        PyObject *key = **name;
        int found = PyDict_Contains(kwds, key);
        if (unlikely(found)) {
            if (found == 1) __Pyx_RaiseDoubleKeywordsError(function_name, key);
            goto bad;
        }
        name++;
    }
    return 0;
bad:
    return -1;
}
#if CYTHON_USE_UNICODE_INTERNALS
static CYTHON_INLINE int __Pyx_UnicodeKeywordsEqual(PyObject *s1, PyObject *s2) {
    int kind;
    Py_ssize_t len = PyUnicode_GET_LENGTH(s1);
    if (len != PyUnicode_GET_LENGTH(s2)) return 0;
    kind = PyUnicode_KIND(s1);
    if (kind != PyUnicode_KIND(s2)) return 0;
    const void *data1 = PyUnicode_DATA(s1);
    const void *data2 = PyUnicode_DATA(s2);
    return (memcmp(data1, data2, (size_t) len * (size_t) kind) == 0);
}
#endif
static int __Pyx_MatchKeywordArg_str(
    PyObject *key,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    size_t *index_found,
    const char *function_name)
{
    PyObject ** const *name;
    #if CYTHON_USE_UNICODE_INTERNALS
    Py_hash_t key_hash = ((PyASCIIObject*)key)->hash;
    if (unlikely(key_hash == -1)) {
        key_hash = PyObject_Hash(key);
        if (unlikely(key_hash == -1))
            goto bad;
    }
    #endif
    name = first_kw_arg;
    while (*name) {
        PyObject *name_str = **name;
        #if CYTHON_USE_UNICODE_INTERNALS
        if (key_hash == ((PyASCIIObject*)name_str)->hash && __Pyx_UnicodeKeywordsEqual(name_str, key)) {
            *index_found = (size_t) (name - argnames);
            return 1;
        }
        #else
        #if CYTHON_ASSUME_SAFE_SIZE
        if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key))
        #endif
        {
            int cmp = PyUnicode_Compare(name_str, key);
            if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
            if (cmp == 0) {
                *index_found = (size_t) (name - argnames);
                return 1;
            }
        }
        #endif
        name++;
    }
    name = argnames;
    while (name != first_kw_arg) {
        PyObject *name_str = **name;
        #if CYTHON_USE_UNICODE_INTERNALS
        if (unlikely(key_hash == ((PyASCIIObject*)name_str)->hash)) {
            if (__Pyx_UnicodeKeywordsEqual(name_str, key))
                goto arg_passed_twice;
        }
        #else
        #if CYTHON_ASSUME_SAFE_SIZE
        if (PyUnicode_GET_LENGTH(name_str) == PyUnicode_GET_LENGTH(key))
        #endif
        {
            if (unlikely(name_str == key)) goto arg_passed_twice;
            int cmp = PyUnicode_Compare(name_str, key);
            if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
            if (cmp == 0) goto arg_passed_twice;
        }
        #endif
        name++;
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
bad:
    return -1;
}
static int __Pyx_MatchKeywordArg_nostr(
    PyObject *key,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    size_t *index_found,
    const char *function_name)
{
    PyObject ** const *name;
    if (unlikely(!PyUnicode_Check(key))) goto invalid_keyword_type;
    name = first_kw_arg;
    while (*name) {
        int cmp = PyObject_RichCompareBool(**name, key, Py_EQ);
        if (cmp == 1) {
            *index_found = (size_t) (name - argnames);
            return 1;
        }
        if (unlikely(cmp == -1)) goto bad;
        name++;
    }
    name = argnames;
    while (name != first_kw_arg) {
        int cmp = PyObject_RichCompareBool(**name, key, Py_EQ);
        if (unlikely(cmp != 0)) {
            if (cmp == 1) goto arg_passed_twice;
            else goto bad;
        }
        name++;
    }
    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;
bad:
    return -1;
}
static CYTHON_INLINE int __Pyx_MatchKeywordArg(
    PyObject *key,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    size_t *index_found,
    const char *function_name)
{
    return likely(PyUnicode_CheckExact(key)) ?
        __Pyx_MatchKeywordArg_str(key, argnames, first_kw_arg, index_found, function_name) :
        __Pyx_MatchKeywordArg_nostr(key, argnames, first_kw_arg, index_found, function_name);
}
static void __Pyx_RejectUnknownKeyword(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject ** const *first_kw_arg,
    const char *function_name)
{
    Py_ssize_t pos = 0;
    PyObject *key = NULL;
    __Pyx_BEGIN_CRITICAL_SECTION(kwds);
    while (PyDict_Next(kwds, &pos, &key, NULL)) {
        PyObject** const *name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (!*name) {
            #if CYTHON_AVOID_BORROWED_REFS
            Py_INCREF(key);
            #endif
            size_t index_found = 0;
            int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name);
            if (cmp != 1) {
                if (cmp == 0) {
                    PyErr_Format(PyExc_TypeError,
                        "%s() got an unexpected keyword argument '%U'",
                        function_name, key);
                }
                #if CYTHON_AVOID_BORROWED_REFS
                Py_DECREF(key);
                #endif
                break;
            }
            #if CYTHON_AVOID_BORROWED_REFS
            Py_DECREF(key);
            #endif
        }
    }
    __Pyx_END_CRITICAL_SECTION();
    assert(PyErr_Occurred());
}
static int __Pyx_ParseKeywordDict(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs)
{
    PyObject** const *name;
    PyObject** const *first_kw_arg = argnames + num_pos_args;
    Py_ssize_t extracted = 0;
#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
    if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1;
#endif
    name = first_kw_arg;
    while (*name && num_kwargs > extracted) {
        PyObject * key = **name;
        PyObject *value;
        int found = 0;
        #if __PYX_LIMITED_VERSION_HEX >= 0x030d0000
        found = PyDict_GetItemRef(kwds, key, &value);
        #else
        value = PyDict_GetItemWithError(kwds, key);
        if (value) {
            Py_INCREF(value);
            found = 1;
        } else {
            if (unlikely(PyErr_Occurred())) goto bad;
        }
        #endif
        if (found) {
            if (unlikely(found < 0)) goto bad;
            values[name-argnames] = value;
            extracted++;
        }
        name++;
    }
    if (num_kwargs > extracted) {
        if (ignore_unknown_kwargs) {
            if (unlikely(__Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name) == -1))
                goto bad;
        } else {
            __Pyx_RejectUnknownKeyword(kwds, argnames, first_kw_arg, function_name);
            goto bad;
        }
    }
    return 0;
bad:
    return -1;
}
static int __Pyx_ParseKeywordDictToDict(
    PyObject *kwds,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject** const *name;
    PyObject** const *first_kw_arg = argnames + num_pos_args;
    Py_ssize_t len;
#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
    if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return -1;
#endif
    if (PyDict_Update(kwds2, kwds) < 0) goto bad;
    name = first_kw_arg;
    while (*name) {
        PyObject *key = **name;
        PyObject *value;
#if !CYTHON_COMPILING_IN_LIMITED_API && (PY_VERSION_HEX >= 0x030d00A2 || defined(PyDict_Pop))
        int found = PyDict_Pop(kwds2, key, &value);
        if (found) {
            if (unlikely(found < 0)) goto bad;
            values[name-argnames] = value;
        }
#elif __PYX_LIMITED_VERSION_HEX >= 0x030d0000
        int found = PyDict_GetItemRef(kwds2, key, &value);
        if (found) {
            if (unlikely(found < 0)) goto bad;
            values[name-argnames] = value;
            if (unlikely(PyDict_DelItem(kwds2, key) < 0)) goto bad;
        }
#else
    #if CYTHON_COMPILING_IN_CPYTHON
        value = _PyDict_Pop(kwds2, key, kwds2);
    #else
        value = __Pyx_CallUnboundCMethod2(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_pop, kwds2, key, kwds2);
    #endif
        if (value == kwds2) {
            Py_DECREF(value);
        } else {
            if (unlikely(!value)) goto bad;
            values[name-argnames] = value;
        }
#endif
        name++;
    }
    len = PyDict_Size(kwds2);
    if (len > 0) {
        return __Pyx_ValidateDuplicatePosArgs(kwds, argnames, first_kw_arg, function_name);
    } else if (unlikely(len == -1)) {
        goto bad;
    }
    return 0;
bad:
    return -1;
}
static int __Pyx_ParseKeywordsTuple(
    PyObject *kwds,
    PyObject * const *kwvalues,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs)
{
    PyObject *key = NULL;
    PyObject** const * name;
    PyObject** const *first_kw_arg = argnames + num_pos_args;
    for (Py_ssize_t pos = 0; pos < num_kwargs; pos++) {
#if CYTHON_AVOID_BORROWED_REFS
        key = __Pyx_PySequence_ITEM(kwds, pos);
#else
        key = __Pyx_PyTuple_GET_ITEM(kwds, pos);
#endif
#if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(!key)) goto bad;
#endif
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            PyObject *value = kwvalues[pos];
            values[name-argnames] = __Pyx_NewRef(value);
        } else {
            size_t index_found = 0;
            int cmp = __Pyx_MatchKeywordArg(key, argnames, first_kw_arg, &index_found, function_name);
            if (cmp == 1) {
                PyObject *value = kwvalues[pos];
                values[index_found] = __Pyx_NewRef(value);
            } else {
                if (unlikely(cmp == -1)) goto bad;
                if (kwds2) {
                    PyObject *value = kwvalues[pos];
                    if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
                } else if (!ignore_unknown_kwargs) {
                    goto invalid_keyword;
                }
            }
        }
        #if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(key);
        key = NULL;
        #endif
    }
    return 0;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    goto bad;
bad:
    #if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(key);
    #endif
    return -1;
}
static int __Pyx_ParseKeywords(
    PyObject *kwds,
    PyObject * const *kwvalues,
    PyObject ** const argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    Py_ssize_t num_kwargs,
    const char* function_name,
    int ignore_unknown_kwargs)
{
    if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds)))
        return __Pyx_ParseKeywordsTuple(kwds, kwvalues, argnames, kwds2, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs);
    else if (kwds2)
        return __Pyx_ParseKeywordDictToDict(kwds, argnames, kwds2, values, num_pos_args, function_name);
    else
        return __Pyx_ParseKeywordDict(kwds, argnames, values, num_pos_args, num_kwargs, function_name, ignore_unknown_kwargs);
}

/* RaiseArgTupleInvalid */
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);
}

/* PyObjectFastCallMethod */
#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000
static PyObject *__Pyx_PyObject_FastCallMethod(PyObject *name, PyObject *const *args, size_t nargsf) {
    PyObject *result;
    PyObject *attr = PyObject_GetAttr(args[0], name);
    if (unlikely(!attr))
        return NULL;
    result = __Pyx_PyObject_FastCall(attr, args+1, nargsf - 1);
    Py_DECREF(attr);
    return result;
}
#endif

/* RaiseException */
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 (cause) {
        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 PY_VERSION_HEX >= 0x030C00A6
        PyException_SetTraceback(value, tb);
#elif CYTHON_FAST_THREAD_STATE
        PyThreadState *tstate = __Pyx_PyThreadState_Current;
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
#else
        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);
#endif
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceAdd : PyNumber_Add)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    long a, x;
#ifdef HAVE_LONG_LONG
    const PY_LONG_LONG llb = intval;
    PY_LONG_LONG lla, llx;
#endif
    if (unlikely(__Pyx_PyLong_IsZero(op1))) {
        return __Pyx_NewRef(op2);
    }
    if (likely(__Pyx_PyLong_IsCompact(op1))) {
        a = __Pyx_PyLong_CompactValue(op1);
    } else {
        const digit* digits = __Pyx_PyLong_Digits(op1);
        const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
        switch (size) {
            case -2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            default: return PyLong_Type.tp_as_number->nb_add(op1, op2);
        }
    }
            x = a + b;
        return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
    long_long:
            llx = lla + llb;
        return PyLong_FromLongLong(llx);
#endif
    return __Pyx_Fallback___Pyx_PyLong_AddObjC(op1, op2, inplace);
    
    
}
#endif
static PyObject* __Pyx_Float___Pyx_PyLong_AddObjC(PyObject *float_val, long intval, int zerodivision_check) {
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    double a = __Pyx_PyFloat_AS_DOUBLE(float_val);
        double result;
        
        result = ((double)a) + (double)b;
        return PyFloat_FromDouble(result);
}
static CYTHON_INLINE PyObject* __Pyx_PyLong_AddObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        return __Pyx_Unpacked___Pyx_PyLong_AddObjC(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        return __Pyx_Float___Pyx_PyLong_AddObjC(op1, intval, zerodivision_check);
    }
    return __Pyx_Fallback___Pyx_PyLong_AddObjC(op1, op2, inplace);
}
#endif

/* decode_c_string */
static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    Py_ssize_t length;
    if (unlikely((start < 0) | (stop < 0))) {
        size_t slen = strlen(cstring);
        if (unlikely(slen > (size_t) PY_SSIZE_T_MAX)) {
            PyErr_SetString(PyExc_OverflowError,
                            "c-string too long to convert to Python");
            return NULL;
        }
        length = (Py_ssize_t) slen;
        if (start < 0) {
            start += length;
            if (start < 0)
                start = 0;
        }
        if (stop < 0)
            stop += length;
    }
    if (unlikely(stop <= start))
        return __Pyx_NewRef(__pyx_mstate_global->__pyx_empty_unicode);
    length = stop - start;
    cstring += start;
    if (decode_func) {
        return decode_func(cstring, length, errors);
    } else {
        return PyUnicode_Decode(cstring, length, encoding, errors);
    }
}

/* UnicodeConcatInPlace */
# if CYTHON_COMPILING_IN_CPYTHON
static int
__Pyx_unicode_modifiable(PyObject *unicode)
{
    if (Py_REFCNT(unicode) != 1)
        return 0;
    if (!PyUnicode_CheckExact(unicode))
        return 0;
    if (PyUnicode_CHECK_INTERNED(unicode))
        return 0;
    return 1;
}
static CYTHON_INLINE PyObject *__Pyx_PyUnicode_ConcatInPlaceImpl(PyObject **p_left, PyObject *right
        #if CYTHON_REFNANNY
        , void* __pyx_refnanny
        #endif
    ) {
    PyObject *left = *p_left;
    Py_ssize_t left_len, right_len, new_len;
    if (unlikely(__Pyx_PyUnicode_READY(left) == -1))
        return NULL;
    if (unlikely(__Pyx_PyUnicode_READY(right) == -1))
        return NULL;
    left_len = PyUnicode_GET_LENGTH(left);
    if (left_len == 0) {
        Py_INCREF(right);
        return right;
    }
    right_len = PyUnicode_GET_LENGTH(right);
    if (right_len == 0) {
        Py_INCREF(left);
        return left;
    }
    if (unlikely(left_len > PY_SSIZE_T_MAX - right_len)) {
        PyErr_SetString(PyExc_OverflowError,
                        "strings are too large to concat");
        return NULL;
    }
    new_len = left_len + right_len;
    if (__Pyx_unicode_modifiable(left)
            && PyUnicode_CheckExact(right)
            && PyUnicode_KIND(right) <= PyUnicode_KIND(left)
            && !(PyUnicode_IS_ASCII(left) && !PyUnicode_IS_ASCII(right))) {
        int ret;
        __Pyx_GIVEREF(*p_left);
        ret = PyUnicode_Resize(p_left, new_len);
        __Pyx_GOTREF(*p_left);
        if (unlikely(ret != 0))
            return NULL;
        #if PY_VERSION_HEX >= 0x030d0000
        if (unlikely(PyUnicode_CopyCharacters(*p_left, left_len, right, 0, right_len) < 0)) return NULL;
        #else
        _PyUnicode_FastCopyCharacters(*p_left, left_len, right, 0, right_len);
        #endif
        __Pyx_INCREF(*p_left);
        __Pyx_GIVEREF(*p_left);
        return *p_left;
    } else {
        return __Pyx_PyUnicode_Concat(left, right);
    }
  }
#endif

/* RejectKeywords */
static void __Pyx_RejectKeywords(const char* function_name, PyObject *kwds) {
    PyObject *key = NULL;
    if (CYTHON_METH_FASTCALL && likely(PyTuple_Check(kwds))) {
        key = __Pyx_PySequence_ITEM(kwds, 0);
    } else {
        Py_ssize_t pos = 0;
#if !CYTHON_COMPILING_IN_PYPY || defined(PyArg_ValidateKeywordArguments)
        if (unlikely(!PyArg_ValidateKeywordArguments(kwds))) return;
#endif
        PyDict_Next(kwds, &pos, &key, NULL);
        Py_INCREF(key);
    }
    if (likely(key)) {
        PyErr_Format(PyExc_TypeError,
            "%s() got an unexpected keyword argument '%U'",
            function_name, key);
        Py_DECREF(key);
    }
}

/* PyDictVersioning */
#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
}
static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
    PyObject **dictptr = NULL;
    Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
    if (offset) {
#if CYTHON_COMPILING_IN_CPYTHON
        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
#else
        dictptr = _PyObject_GetDictPtr(obj);
#endif
    }
    return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
}
static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
    PyObject *dict = Py_TYPE(obj)->tp_dict;
    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
        return 0;
    return obj_dict_version == __Pyx_get_object_dict_version(obj);
}
#endif

/* GetModuleGlobalName */
#if CYTHON_USE_DICT_VERSIONS
static PyObject *__Pyx__GetModuleGlobalName(PyObject *name, PY_UINT64_T *dict_version, PyObject **dict_cached_value)
#else
static CYTHON_INLINE PyObject *__Pyx__GetModuleGlobalName(PyObject *name)
#endif
{
    PyObject *result;
#if CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(!__pyx_m)) {
        if (!PyErr_Occurred())
            PyErr_SetNone(PyExc_NameError);
        return NULL;
    }
    result = PyObject_GetAttr(__pyx_m, name);
    if (likely(result)) {
        return result;
    }
    PyErr_Clear();
#elif CYTHON_AVOID_BORROWED_REFS || CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
    if (unlikely(__Pyx_PyDict_GetItemRef(__pyx_mstate_global->__pyx_d, name, &result) == -1)) PyErr_Clear();
    __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return result;
    }
#else
    result = _PyDict_GetItem_KnownHash(__pyx_mstate_global->__pyx_d, name, ((PyASCIIObject *) name)->hash);
    __PYX_UPDATE_DICT_CACHE(__pyx_mstate_global->__pyx_d, result, *dict_cached_value, *dict_version)
    if (likely(result)) {
        return __Pyx_NewRef(result);
    }
    PyErr_Clear();
#endif
    return __Pyx_GetBuiltinName(name);
}

/* GetItemInt */
static PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (unlikely(!j)) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && !CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyList_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyList_GET_SIZE(o)))) {
        PyObject *r = PyList_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              CYTHON_NCP_UNUSED int wraparound,
                                                              CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS
    Py_ssize_t wrapped_i = i;
    if (wraparound & unlikely(i < 0)) {
        wrapped_i += PyTuple_GET_SIZE(o);
    }
    if ((!boundscheck) || likely(__Pyx_is_valid_index(wrapped_i, PyTuple_GET_SIZE(o)))) {
        PyObject *r = PyTuple_GET_ITEM(o, wrapped_i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i, int is_list,
                                                     CYTHON_NCP_UNUSED int wraparound,
                                                     CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
        if ((!boundscheck) || (likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o))))) {
            return __Pyx_PyList_GetItemRef(o, n);
        }
    }
    else if (PyTuple_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyTuple_GET_SIZE(o)))) {
            PyObject *r = PyTuple_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    } else {
        PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
        PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
        if (mm && mm->mp_subscript) {
            PyObject *r, *key = PyLong_FromSsize_t(i);
            if (unlikely(!key)) return NULL;
            r = mm->mp_subscript(o, key);
            Py_DECREF(key);
            return r;
        }
        if (likely(sm && sm->sq_item)) {
            if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
                Py_ssize_t l = sm->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return NULL;
                    PyErr_Clear();
                }
            }
            return sm->sq_item(o, i);
        }
    }
#else
    if (is_list || !PyMapping_Check(o)) {
        return PySequence_GetItem(o, i);
    }
#endif
    return __Pyx_GetItemInt_Generic(o, PyLong_FromSsize_t(i));
}

/* PyObjectVectorCallKwBuilder */
#if CYTHON_VECTORCALL
static int __Pyx_VectorcallBuilder_AddArg(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) {
    (void)__Pyx_PyObject_FastCallDict;
    if (__Pyx_PyTuple_SET_ITEM(builder, n, key) != (0)) return -1;
    Py_INCREF(key);
    args[n] = value;
    return 0;
}
CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, PyObject **args, int n) {
    (void)__Pyx_VectorcallBuilder_AddArgStr;
    if (unlikely(!PyUnicode_Check(key))) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        return -1;
    }
    return __Pyx_VectorcallBuilder_AddArg(key, value, builder, args, n);
}
static int __Pyx_VectorcallBuilder_AddArgStr(const char *key, PyObject *value, PyObject *builder, PyObject **args, int n) {
    PyObject *pyKey = PyUnicode_FromString(key);
    if (!pyKey) return -1;
    return __Pyx_VectorcallBuilder_AddArg(pyKey, value, builder, args, n);
}
#else // CYTHON_VECTORCALL
CYTHON_UNUSED static int __Pyx_VectorcallBuilder_AddArg_Check(PyObject *key, PyObject *value, PyObject *builder, CYTHON_UNUSED PyObject **args, CYTHON_UNUSED int n) {
    if (unlikely(!PyUnicode_Check(key))) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        return -1;
    }
    return PyDict_SetItem(builder, key, value);
}
#endif

/* PyObjectSetAttrStr */
#if CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE int __Pyx_PyObject_SetAttrStr(PyObject* obj, PyObject* attr_name, PyObject* value) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_setattro))
        return tp->tp_setattro(obj, attr_name, value);
    return PyObject_SetAttr(obj, attr_name, value);
}
#endif

/* PyObjectFormatAndDecref */
static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatSimpleAndDecref(PyObject* s, PyObject* f) {
    if (unlikely(!s)) return NULL;
    if (likely(PyUnicode_CheckExact(s))) return s;
    return __Pyx_PyObject_FormatAndDecref(s, f);
}
static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObject* f) {
    PyObject *result;
    if (unlikely(!s)) return NULL;
    result = PyObject_Format(s, f);
    Py_DECREF(s);
    return result;
}

/* JoinPyUnicode */
static PyObject* __Pyx_PyUnicode_Join(PyObject** values, Py_ssize_t value_count, Py_ssize_t result_ulength,
                                      Py_UCS4 max_char) {
#if CYTHON_USE_UNICODE_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    PyObject *result_uval;
    int result_ukind, kind_shift;
    Py_ssize_t i, char_pos;
    void *result_udata;
    if (max_char > 1114111) max_char = 1114111;
    result_uval = PyUnicode_New(result_ulength, max_char);
    if (unlikely(!result_uval)) return NULL;
    result_ukind = (max_char <= 255) ? PyUnicode_1BYTE_KIND : (max_char <= 65535) ? PyUnicode_2BYTE_KIND : PyUnicode_4BYTE_KIND;
    kind_shift = (result_ukind == PyUnicode_4BYTE_KIND) ? 2 : result_ukind - 1;
    result_udata = PyUnicode_DATA(result_uval);
    assert(kind_shift == 2 || kind_shift == 1 || kind_shift == 0);
    if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - result_ulength < 0))
        goto overflow;
    char_pos = 0;
    for (i=0; i < value_count; i++) {
        int ukind;
        Py_ssize_t ulength;
        void *udata;
        PyObject *uval = values[i];
        #if !CYTHON_COMPILING_IN_LIMITED_API
        if (__Pyx_PyUnicode_READY(uval) == (-1))
            goto bad;
        #endif
        ulength = __Pyx_PyUnicode_GET_LENGTH(uval);
        #if !CYTHON_ASSUME_SAFE_SIZE
        if (unlikely(ulength < 0)) goto bad;
        #endif
        if (unlikely(!ulength))
            continue;
        if (unlikely((PY_SSIZE_T_MAX >> kind_shift) - ulength < char_pos))
            goto overflow;
        ukind = __Pyx_PyUnicode_KIND(uval);
        udata = __Pyx_PyUnicode_DATA(uval);
        if (ukind == result_ukind) {
            memcpy((char *)result_udata + (char_pos << kind_shift), udata, (size_t) (ulength << kind_shift));
        } else {
            #if PY_VERSION_HEX >= 0x030d0000
            if (unlikely(PyUnicode_CopyCharacters(result_uval, char_pos, uval, 0, ulength) < 0)) goto bad;
            #elif CYTHON_COMPILING_IN_CPYTHON || defined(_PyUnicode_FastCopyCharacters)
            _PyUnicode_FastCopyCharacters(result_uval, char_pos, uval, 0, ulength);
            #else
            Py_ssize_t j;
            for (j=0; j < ulength; j++) {
                Py_UCS4 uchar = __Pyx_PyUnicode_READ(ukind, udata, j);
                __Pyx_PyUnicode_WRITE(result_ukind, result_udata, char_pos+j, uchar);
            }
            #endif
        }
        char_pos += ulength;
    }
    return result_uval;
overflow:
    PyErr_SetString(PyExc_OverflowError, "join() result is too long for a Python string");
bad:
    Py_DECREF(result_uval);
    return NULL;
#else
    Py_ssize_t i;
    PyObject *result = NULL;
    PyObject *value_tuple = PyTuple_New(value_count);
    if (unlikely(!value_tuple)) return NULL;
    CYTHON_UNUSED_VAR(max_char);
    CYTHON_UNUSED_VAR(result_ulength);
    for (i=0; i<value_count; i++) {
        if (__Pyx_PyTuple_SET_ITEM(value_tuple, i, values[i]) != (0)) goto bad;
        Py_INCREF(values[i]);
    }
    result = PyUnicode_Join(__pyx_mstate_global->__pyx_empty_unicode, value_tuple);
bad:
    Py_DECREF(value_tuple);
    return result;
#endif
}

/* PyUnicode_Unicode */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_Unicode(PyObject *obj) {
    if (unlikely(obj == Py_None))
        obj = __pyx_mstate_global->__pyx_kp_u_None;
    return __Pyx_NewRef(obj);
}

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_TrueDivideObjC(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceTrueDivide : PyNumber_TrueDivide)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_TrueDivideObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    long a, x;
    if (unlikely(__Pyx_PyLong_IsZero(op1))) {
    }
    if (likely(__Pyx_PyLong_IsCompact(op1))) {
        a = __Pyx_PyLong_CompactValue(op1);
    } else {
        const digit* digits = __Pyx_PyLong_Digits(op1);
        const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
        switch (size) {
            case -2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT && 1 * PyLong_SHIFT < 53) {
                    a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                }
                CYTHON_FALLTHROUGH;
            case 2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT && 1 * PyLong_SHIFT < 53) {
                    a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                }
                CYTHON_FALLTHROUGH;
            case -3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT && 2 * PyLong_SHIFT < 53) {
                    a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                }
                CYTHON_FALLTHROUGH;
            case 3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT && 2 * PyLong_SHIFT < 53) {
                    a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                }
                CYTHON_FALLTHROUGH;
            case -4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT && 3 * PyLong_SHIFT < 53) {
                    a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                }
                CYTHON_FALLTHROUGH;
            case 4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT && 3 * PyLong_SHIFT < 53) {
                    a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                }
                CYTHON_FALLTHROUGH;
            default: return PyLong_Type.tp_as_number->nb_true_divide(op1, op2);
        }
    }
            if ((8 * sizeof(long) <= 53 || likely(labs(a) <= ((PY_LONG_LONG)1 << 53)))
                    || __Pyx_PyLong_DigitCount(op1) <= 52 / PyLong_SHIFT) {
                return PyFloat_FromDouble((double)a / (double)b);
            }
            return PyLong_Type.tp_as_number->nb_true_divide(op1, op2);
        return PyLong_FromLong(x);
    
}
#endif
static PyObject* __Pyx_Float___Pyx_PyLong_TrueDivideObjC(PyObject *float_val, long intval, int zerodivision_check) {
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    double a = __Pyx_PyFloat_AS_DOUBLE(float_val);
        double result;
        
        result = ((double)a) / (double)b;
        return PyFloat_FromDouble(result);
}
static CYTHON_INLINE PyObject* __Pyx_PyLong_TrueDivideObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        return __Pyx_Unpacked___Pyx_PyLong_TrueDivideObjC(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        return __Pyx_Float___Pyx_PyLong_TrueDivideObjC(op1, intval, zerodivision_check);
    }
    return __Pyx_Fallback___Pyx_PyLong_TrueDivideObjC(op1, op2, inplace);
}
#endif

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_RemainderObjC(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceRemainder : PyNumber_Remainder)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_RemainderObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    long a, x;
#ifdef HAVE_LONG_LONG
    const PY_LONG_LONG llb = intval;
    PY_LONG_LONG lla, llx;
#endif
    if (unlikely(__Pyx_PyLong_IsZero(op1))) {
        return __Pyx_NewRef(op1);
    }
    if (likely(__Pyx_PyLong_IsCompact(op1))) {
        a = __Pyx_PyLong_CompactValue(op1);
    } else {
        const digit* digits = __Pyx_PyLong_Digits(op1);
        const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
        switch (size) {
            case -2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            default: return PyLong_Type.tp_as_number->nb_remainder(op1, op2);
        }
    }
            x = a % b;
            x += ((x != 0) & ((x ^ b) < 0)) * b;
        return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
    long_long:
            llx = lla % llb;
            llx += ((llx != 0) & ((llx ^ llb) < 0)) * llb;
        return PyLong_FromLongLong(llx);
#endif
    return __Pyx_Fallback___Pyx_PyLong_RemainderObjC(op1, op2, inplace);
    
    
}
#endif
static CYTHON_INLINE PyObject* __Pyx_PyLong_RemainderObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        return __Pyx_Unpacked___Pyx_PyLong_RemainderObjC(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    return __Pyx_Fallback___Pyx_PyLong_RemainderObjC(op1, op2, inplace);
}
#endif

/* PyLongCompare */
static CYTHON_INLINE int __Pyx_PyLong_BoolEqObjC(PyObject *op1, PyObject *op2, long intval, long inplace) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(inplace);
    if (op1 == op2) {
        return 1;
    }
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        int unequal;
        unsigned long uintval;
        Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
        const digit* digits = __Pyx_PyLong_Digits(op1);
        if (intval == 0) {
            return (__Pyx_PyLong_IsZero(op1) == 1);
        } else if (intval < 0) {
            if (__Pyx_PyLong_IsNonNeg(op1))
                return 0;
            intval = -intval;
        } else {
            if (__Pyx_PyLong_IsNeg(op1))
                return 0;
        }
        uintval = (unsigned long) intval;
#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 4)) {
            unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 3)) {
            unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 2)) {
            unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 1)) {
            unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
            unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
        return (unequal == 0);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = __Pyx_PyFloat_AS_DOUBLE(op1);
        return ((double)a == (double)b);
    }
    return __Pyx_PyObject_IsTrueAndDecref(
        PyObject_RichCompare(op1, op2, Py_EQ));
}

/* PyLongCompare */
static CYTHON_INLINE int __Pyx_PyLong_BoolNeObjC(PyObject *op1, PyObject *op2, long intval, long inplace) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(inplace);
    if (op1 == op2) {
        return 0;
    }
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        int unequal;
        unsigned long uintval;
        Py_ssize_t size = __Pyx_PyLong_DigitCount(op1);
        const digit* digits = __Pyx_PyLong_Digits(op1);
        if (intval == 0) {
            return (__Pyx_PyLong_IsZero(op1) != 1);
        } else if (intval < 0) {
            if (__Pyx_PyLong_IsNonNeg(op1))
                return 1;
            intval = -intval;
        } else {
            if (__Pyx_PyLong_IsNeg(op1))
                return 1;
        }
        uintval = (unsigned long) intval;
#if PyLong_SHIFT * 4 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 4)) {
            unequal = (size != 5) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[4] != ((uintval >> (4 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 3 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 3)) {
            unequal = (size != 4) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[3] != ((uintval >> (3 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 2 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 2)) {
            unequal = (size != 3) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK)) | (digits[2] != ((uintval >> (2 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
#if PyLong_SHIFT * 1 < SIZEOF_LONG*8
        if (uintval >> (PyLong_SHIFT * 1)) {
            unequal = (size != 2) || (digits[0] != (uintval & (unsigned long) PyLong_MASK))
                 | (digits[1] != ((uintval >> (1 * PyLong_SHIFT)) & (unsigned long) PyLong_MASK));
        } else
#endif
            unequal = (size != 1) || (((unsigned long) digits[0]) != (uintval & (unsigned long) PyLong_MASK));
        return (unequal != 0);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        const long b = intval;
        double a = __Pyx_PyFloat_AS_DOUBLE(op1);
        return ((double)a != (double)b);
    }
    return __Pyx_PyObject_IsTrueAndDecref(
        PyObject_RichCompare(op1, op2, Py_NE));
}

/* GetException */
#if CYTHON_FAST_THREAD_STATE
static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
#else
static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
#endif
{
    PyObject *local_type = NULL, *local_value, *local_tb = NULL;
#if CYTHON_FAST_THREAD_STATE
    PyObject *tmp_type, *tmp_value, *tmp_tb;
  #if PY_VERSION_HEX >= 0x030C0000
    local_value = tstate->current_exception;
    tstate->current_exception = 0;
  #else
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
  #endif
#elif __PYX_LIMITED_VERSION_HEX > 0x030C0000
    local_value = PyErr_GetRaisedException();
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
#if __PYX_LIMITED_VERSION_HEX > 0x030C0000
    if (likely(local_value)) {
        local_type = (PyObject*) Py_TYPE(local_value);
        Py_INCREF(local_type);
        local_tb = PyException_GetTraceback(local_value);
    }
#else
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_FAST_THREAD_STATE
    if (unlikely(tstate->curexc_type))
#else
    if (unlikely(PyErr_Occurred()))
#endif
        goto bad;
    if (local_tb) {
        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
            goto bad;
    }
#endif // __PYX_LIMITED_VERSION_HEX > 0x030C0000
    Py_XINCREF(local_tb);
    Py_XINCREF(local_type);
    Py_XINCREF(local_value);
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
#if CYTHON_FAST_THREAD_STATE
    #if CYTHON_USE_EXC_INFO_STACK
    {
        _PyErr_StackItem *exc_info = tstate->exc_info;
      #if PY_VERSION_HEX >= 0x030B00a4
        tmp_value = exc_info->exc_value;
        exc_info->exc_value = local_value;
        tmp_type = NULL;
        tmp_tb = NULL;
        Py_XDECREF(local_type);
        Py_XDECREF(local_tb);
      #else
        tmp_type = exc_info->exc_type;
        tmp_value = exc_info->exc_value;
        tmp_tb = exc_info->exc_traceback;
        exc_info->exc_type = local_type;
        exc_info->exc_value = local_value;
        exc_info->exc_traceback = local_tb;
      #endif
    }
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#elif __PYX_LIMITED_VERSION_HEX >= 0x030b0000
    PyErr_SetHandledException(local_value);
    Py_XDECREF(local_value);
    Py_XDECREF(local_type);
    Py_XDECREF(local_tb);
#else
    PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
    return 0;
#if __PYX_LIMITED_VERSION_HEX <= 0x030C0000
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
#endif
}

/* pep479 */
static void __Pyx_Generator_Replace_StopIteration(int in_async_gen) {
    PyObject *exc, *val, *tb, *cur_exc, *new_exc;
    __Pyx_PyThreadState_declare
    int is_async_stopiteration = 0;
    CYTHON_MAYBE_UNUSED_VAR(in_async_gen);
    __Pyx_PyThreadState_assign
    cur_exc = __Pyx_PyErr_CurrentExceptionType();
    if (likely(!__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopIteration))) {
        if (in_async_gen && unlikely(__Pyx_PyErr_GivenExceptionMatches(cur_exc, PyExc_StopAsyncIteration))) {
            is_async_stopiteration = 1;
        } else {
            return;
        }
    }
    __Pyx_GetException(&exc, &val, &tb);
    Py_XDECREF(exc);
    Py_XDECREF(tb);
    new_exc = PyObject_CallFunction(PyExc_RuntimeError, "s",
        is_async_stopiteration ? "async generator raised StopAsyncIteration" :
        in_async_gen ? "async generator raised StopIteration" :
        "generator raised StopIteration");
    if (!new_exc) {
        Py_XDECREF(val);
        return;
    }
    PyException_SetCause(new_exc, val); // steals ref to val
    PyErr_SetObject(PyExc_RuntimeError, new_exc);
}

/* PyObjectCallOneArg */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) {
    PyObject *args[2] = {NULL, arg};
    return __Pyx_PyObject_FastCall(func, args+1, 1 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* CallUnboundCMethod0 */
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    int was_initialized = __Pyx_CachedCFunction_GetAndSetInitializing(cfunc);
    if (likely(was_initialized == 2 && cfunc->func)) {
        if (likely(cfunc->flag == METH_NOARGS))
            return __Pyx_CallCFunction(cfunc, self, NULL);
        if (likely(cfunc->flag == METH_FASTCALL))
            return __Pyx_CallCFunctionFast(cfunc, self, NULL, 0);
        if (cfunc->flag == (METH_FASTCALL | METH_KEYWORDS))
            return __Pyx_CallCFunctionFastWithKeywords(cfunc, self, NULL, 0, NULL);
        if (likely(cfunc->flag == (METH_VARARGS | METH_KEYWORDS)))
            return __Pyx_CallCFunctionWithKeywords(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple, NULL);
        if (cfunc->flag == METH_VARARGS)
            return __Pyx_CallCFunction(cfunc, self, __pyx_mstate_global->__pyx_empty_tuple);
        return __Pyx__CallUnboundCMethod0(cfunc, self);
    }
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    else if (unlikely(was_initialized == 1)) {
        __Pyx_CachedCFunction tmp_cfunc = {
#ifndef __cplusplus
            0
#endif
        };
        tmp_cfunc.type = cfunc->type;
        tmp_cfunc.method_name = cfunc->method_name;
        return __Pyx__CallUnboundCMethod0(&tmp_cfunc, self);
    }
#endif
    PyObject *result = __Pyx__CallUnboundCMethod0(cfunc, self);
    __Pyx_CachedCFunction_SetFinishedInitializing(cfunc);
    return result;
}
#endif
static PyObject* __Pyx__CallUnboundCMethod0(__Pyx_CachedCFunction* cfunc, PyObject* self) {
    PyObject *result;
    if (unlikely(!cfunc->method) && unlikely(__Pyx_TryUnpackUnboundCMethod(cfunc) < 0)) return NULL;
    result = __Pyx_PyObject_CallOneArg(cfunc->method, self);
    return result;
}

/* py_dict_keys */
static CYTHON_INLINE PyObject* __Pyx_PyDict_Keys(PyObject* d) {
    return __Pyx_CallUnboundCMethod0(&__pyx_mstate_global->__pyx_umethod_PyDict_Type_keys, d);
}

/* ExtTypeTest */
static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) {
    __Pyx_TypeName obj_type_name;
    __Pyx_TypeName type_name;
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (likely(__Pyx_TypeCheck(obj, type)))
        return 1;
    obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj));
    type_name = __Pyx_PyType_GetFullyQualifiedName(type);
    PyErr_Format(PyExc_TypeError,
                 "Cannot convert " __Pyx_FMT_TYPENAME " to " __Pyx_FMT_TYPENAME,
                 obj_type_name, type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    __Pyx_DECREF_TypeName(type_name);
    return 0;
}

/* CIntToDigits */
static const char DIGIT_PAIRS_10[2*10*10+1] = {
    "00010203040506070809"
    "10111213141516171819"
    "20212223242526272829"
    "30313233343536373839"
    "40414243444546474849"
    "50515253545556575859"
    "60616263646566676869"
    "70717273747576777879"
    "80818283848586878889"
    "90919293949596979899"
};
static const char DIGIT_PAIRS_8[2*8*8+1] = {
    "0001020304050607"
    "1011121314151617"
    "2021222324252627"
    "3031323334353637"
    "4041424344454647"
    "5051525354555657"
    "6061626364656667"
    "7071727374757677"
};
static const char DIGITS_HEX[2*16+1] = {
    "0123456789abcdef"
    "0123456789ABCDEF"
};

/* BuildPyUnicode */
static PyObject* __Pyx_PyUnicode_BuildFromAscii(Py_ssize_t ulength, const char* chars, int clength,
                                                int prepend_sign, char padding_char) {
    PyObject *uval;
    Py_ssize_t uoffset = ulength - clength;
#if CYTHON_USE_UNICODE_INTERNALS
    Py_ssize_t i;
    void *udata;
    uval = PyUnicode_New(ulength, 127);
    if (unlikely(!uval)) return NULL;
    udata = PyUnicode_DATA(uval);
    if (uoffset > 0) {
        i = 0;
        if (prepend_sign) {
            __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, 0, '-');
            i++;
        }
        for (; i < uoffset; i++) {
            __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, i, padding_char);
        }
    }
    for (i=0; i < clength; i++) {
        __Pyx_PyUnicode_WRITE(PyUnicode_1BYTE_KIND, udata, uoffset+i, chars[i]);
    }
#else
    {
        PyObject *sign = NULL, *padding = NULL;
        uval = NULL;
        if (uoffset > 0) {
            prepend_sign = !!prepend_sign;
            if (uoffset > prepend_sign) {
                padding = PyUnicode_FromOrdinal(padding_char);
                if (likely(padding) && uoffset > prepend_sign + 1) {
                    PyObject *tmp = PySequence_Repeat(padding, uoffset - prepend_sign);
                    Py_DECREF(padding);
                    padding = tmp;
                }
                if (unlikely(!padding)) goto done_or_error;
            }
            if (prepend_sign) {
                sign = PyUnicode_FromOrdinal('-');
                if (unlikely(!sign)) goto done_or_error;
            }
        }
        uval = PyUnicode_DecodeASCII(chars, clength, NULL);
        if (likely(uval) && padding) {
            PyObject *tmp = PyUnicode_Concat(padding, uval);
            Py_DECREF(uval);
            uval = tmp;
        }
        if (likely(uval) && sign) {
            PyObject *tmp = PyUnicode_Concat(sign, uval);
            Py_DECREF(uval);
            uval = tmp;
        }
done_or_error:
        Py_XDECREF(padding);
        Py_XDECREF(sign);
    }
#endif
    return uval;
}

/* COrdinalToPyUnicode */
static CYTHON_INLINE int __Pyx_CheckUnicodeValue(int value) {
    return value <= 1114111;
}
static PyObject* __Pyx_PyUnicode_FromOrdinal_Padded(int value, Py_ssize_t ulength, char padding_char) {
    if (likely(ulength <= 250)) {
        char chars[256];
        if (value <= 255) {
            memset(chars, padding_char, (size_t) (ulength - 1));
            chars[ulength-1] = (char) value;
            return PyUnicode_DecodeLatin1(chars, ulength, NULL);
        }
        char *cpos = chars + sizeof(chars);
        if (value < 0x800) {
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0xc0 | (value & 0x1f));
        } else if (value < 0x10000) {
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0xe0 | (value & 0x0f));
        } else {
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0x80 | (value & 0x3f));
            value >>= 6;
            *--cpos = (char) (0xf0 | (value & 0x07));
        }
        cpos -= ulength;
        memset(cpos, padding_char, (size_t) (ulength - 1));
        return PyUnicode_DecodeUTF8(cpos, chars + sizeof(chars) - cpos, NULL);
    }
    if (value <= 127 && CYTHON_USE_UNICODE_INTERNALS) {
        const char chars[1] = {(char) value};
        return __Pyx_PyUnicode_BuildFromAscii(ulength, chars, 1, 0, padding_char);
    }
    {
        PyObject *uchar, *padding_uchar, *padding, *result;
        padding_uchar = PyUnicode_FromOrdinal(padding_char);
        if (unlikely(!padding_uchar)) return NULL;
        padding = PySequence_Repeat(padding_uchar, ulength - 1);
        Py_DECREF(padding_uchar);
        if (unlikely(!padding)) return NULL;
        uchar = PyUnicode_FromOrdinal(value);
        if (unlikely(!uchar)) {
            Py_DECREF(padding);
            return NULL;
        }
        result = PyUnicode_Concat(padding, uchar);
        Py_DECREF(padding);
        Py_DECREF(uchar);
        return result;
    }
}

/* CIntToPyUnicode */
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_long(long value, Py_ssize_t width, char padding_char, char format_char) {
    char digits[sizeof(long)*3+2];
    char *dpos, *end = digits + sizeof(long)*3+2;
    const char *hex_digits = DIGITS_HEX;
    Py_ssize_t length, ulength;
    int prepend_sign, last_one_off;
    long remaining;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (format_char == 'c') {
        if (unlikely(!(is_unsigned || value == 0 || value > 0) ||
                     !(sizeof(value) <= 2 || value & ~ (long) 0x01fffff || __Pyx_CheckUnicodeValue((int) value)))) {
            PyErr_SetString(PyExc_OverflowError, "%c arg not in range(0x110000)");
            return NULL;
        }
        if (width <= 1) {
            return PyUnicode_FromOrdinal((int) value);
        }
        return __Pyx_PyUnicode_FromOrdinal_Padded((int) value, width, padding_char);
    }
    if (format_char == 'X') {
        hex_digits += 16;
        format_char = 'x';
    }
    remaining = value;
    last_one_off = 0;
    dpos = end;
    do {
        int digit_pos;
        switch (format_char) {
        case 'o':
            digit_pos = abs((int)(remaining % (8*8)));
            remaining = (long) (remaining / (8*8));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_8 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 8);
            break;
        case 'd':
            digit_pos = abs((int)(remaining % (10*10)));
            remaining = (long) (remaining / (10*10));
            dpos -= 2;
            memcpy(dpos, DIGIT_PAIRS_10 + digit_pos * 2, 2);
            last_one_off = (digit_pos < 10);
            break;
        case 'x':
            *(--dpos) = hex_digits[abs((int)(remaining % 16))];
            remaining = (long) (remaining / 16);
            break;
        default:
            assert(0);
            break;
        }
    } while (unlikely(remaining != 0));
    assert(!last_one_off || *dpos == '0');
    dpos += last_one_off;
    length = end - dpos;
    ulength = length;
    prepend_sign = 0;
    if (!is_unsigned && value <= neg_one) {
        if (padding_char == ' ' || width <= length + 1) {
            *(--dpos) = '-';
            ++length;
        } else {
            prepend_sign = 1;
        }
        ++ulength;
    }
    if (width > ulength) {
        ulength = width;
    }
    if (ulength == 1) {
        return PyUnicode_FromOrdinal(*dpos);
    }
    return __Pyx_PyUnicode_BuildFromAscii(ulength, dpos, (int) length, prepend_sign, padding_char);
}

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_SubtractObjC(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceSubtract : PyNumber_Subtract)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    long a, x;
#ifdef HAVE_LONG_LONG
    const PY_LONG_LONG llb = intval;
    PY_LONG_LONG lla, llx;
#endif
    if (unlikely(__Pyx_PyLong_IsZero(op1))) {
        return PyLong_FromLong(-intval);
    }
    if (likely(__Pyx_PyLong_IsCompact(op1))) {
        a = __Pyx_PyLong_CompactValue(op1);
    } else {
        const digit* digits = __Pyx_PyLong_Digits(op1);
        const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
        switch (size) {
            case -2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            default: return PyLong_Type.tp_as_number->nb_subtract(op1, op2);
        }
    }
            x = a - b;
        return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
    long_long:
            llx = lla - llb;
        return PyLong_FromLongLong(llx);
#endif
    return __Pyx_Fallback___Pyx_PyLong_SubtractObjC(op1, op2, inplace);
    
    
}
#endif
static PyObject* __Pyx_Float___Pyx_PyLong_SubtractObjC(PyObject *float_val, long intval, int zerodivision_check) {
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    double a = __Pyx_PyFloat_AS_DOUBLE(float_val);
        double result;
        
        result = ((double)a) - (double)b;
        return PyFloat_FromDouble(result);
}
static CYTHON_INLINE PyObject* __Pyx_PyLong_SubtractObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        return __Pyx_Unpacked___Pyx_PyLong_SubtractObjC(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        return __Pyx_Float___Pyx_PyLong_SubtractObjC(op1, intval, zerodivision_check);
    }
    return __Pyx_Fallback___Pyx_PyLong_SubtractObjC(op1, op2, inplace);
}
#endif

/* PyObjectFormat */
#if CYTHON_USE_UNICODE_WRITER
static PyObject* __Pyx_PyObject_Format(PyObject* obj, PyObject* format_spec) {
    int ret;
    _PyUnicodeWriter writer;
    if (likely(PyFloat_CheckExact(obj))) {
        _PyUnicodeWriter_Init(&writer);
        ret = _PyFloat_FormatAdvancedWriter(
            &writer,
            obj,
            format_spec, 0, PyUnicode_GET_LENGTH(format_spec));
    } else if (likely(PyLong_CheckExact(obj))) {
        _PyUnicodeWriter_Init(&writer);
        ret = _PyLong_FormatAdvancedWriter(
            &writer,
            obj,
            format_spec, 0, PyUnicode_GET_LENGTH(format_spec));
    } else {
        return PyObject_Format(obj, format_spec);
    }
    if (unlikely(ret == -1)) {
        _PyUnicodeWriter_Dealloc(&writer);
        return NULL;
    }
    return _PyUnicodeWriter_Finish(&writer);
}
#endif

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_AndObjC(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceAnd : PyNumber_And)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    long a, x;
#ifdef HAVE_LONG_LONG
    const PY_LONG_LONG llb = intval;
    PY_LONG_LONG lla, llx;
#endif
    if (unlikely(__Pyx_PyLong_IsZero(op1))) {
        return __Pyx_NewRef(op1);
    }
    if ((intval & PyLong_MASK) == intval) {
        long last_digit = (long) __Pyx_PyLong_Digits(op1)[0];
        long result = intval & (likely(__Pyx_PyLong_IsPos(op1)) ? last_digit : (PyLong_MASK - last_digit + 1));
        return PyLong_FromLong(result);
    }
    if (likely(__Pyx_PyLong_IsCompact(op1))) {
        a = __Pyx_PyLong_CompactValue(op1);
    } else {
        const digit* digits = __Pyx_PyLong_Digits(op1);
        const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
        switch (size) {
            case -2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            default: return PyLong_Type.tp_as_number->nb_and(op1, op2);
        }
    }
            x = a & b;
        return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
    long_long:
            llx = lla & llb;
        return PyLong_FromLongLong(llx);
#endif
    return __Pyx_Fallback___Pyx_PyLong_AndObjC(op1, op2, inplace);
    
    
}
#endif
static CYTHON_INLINE PyObject* __Pyx_PyLong_AndObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        return __Pyx_Unpacked___Pyx_PyLong_AndObjC(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    return __Pyx_Fallback___Pyx_PyLong_AndObjC(op1, op2, inplace);
}
#endif

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_RshiftObjC(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceRshift : PyNumber_Rshift)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_RshiftObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    long a, x;
#ifdef HAVE_LONG_LONG
    const PY_LONG_LONG llb = intval;
    PY_LONG_LONG lla, llx;
#endif
    if (unlikely(__Pyx_PyLong_IsZero(op1))) {
        return __Pyx_NewRef(op1);
    }
    if (likely(__Pyx_PyLong_IsCompact(op1))) {
        a = __Pyx_PyLong_CompactValue(op1);
    } else {
        const digit* digits = __Pyx_PyLong_Digits(op1);
        const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
        switch (size) {
            case -2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT) {
                    a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT) {
                    a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT) {
                    a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT) {
                    lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            default: return PyLong_Type.tp_as_number->nb_rshift(op1, op2);
        }
    }
            x = a >> b;
        return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
    long_long:
            llx = lla >> llb;
        return PyLong_FromLongLong(llx);
#endif
    return __Pyx_Fallback___Pyx_PyLong_RshiftObjC(op1, op2, inplace);
    
    
}
#endif
static CYTHON_INLINE PyObject* __Pyx_PyLong_RshiftObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        return __Pyx_Unpacked___Pyx_PyLong_RshiftObjC(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    return __Pyx_Fallback___Pyx_PyLong_RshiftObjC(op1, op2, inplace);
}
#endif

/* SetItemInt */
static int __Pyx_SetItemInt_Generic(PyObject *o, PyObject *j, PyObject *v) {
    int r;
    if (unlikely(!j)) return -1;
    r = PyObject_SetItem(o, j, v);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE int __Pyx_SetItemInt_Fast(PyObject *o, Py_ssize_t i, PyObject *v, int is_list,
                                               CYTHON_NCP_UNUSED int wraparound, CYTHON_NCP_UNUSED int boundscheck) {
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE && !CYTHON_AVOID_BORROWED_REFS && CYTHON_USE_TYPE_SLOTS
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = (!wraparound) ? i : ((likely(i >= 0)) ? i : i + PyList_GET_SIZE(o));
        if ((!boundscheck) || likely(__Pyx_is_valid_index(n, PyList_GET_SIZE(o)))) {
            Py_INCREF(v);
#if CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
            PyList_SetItem(o, n, v);
#else
            PyObject* old = PyList_GET_ITEM(o, n);
            PyList_SET_ITEM(o, n, v);
            Py_DECREF(old);
#endif
            return 1;
        }
    } else {
        PyMappingMethods *mm = Py_TYPE(o)->tp_as_mapping;
        PySequenceMethods *sm = Py_TYPE(o)->tp_as_sequence;
        if (mm && mm->mp_ass_subscript) {
            int r;
            PyObject *key = PyLong_FromSsize_t(i);
            if (unlikely(!key)) return -1;
            r = mm->mp_ass_subscript(o, key, v);
            Py_DECREF(key);
            return r;
        }
        if (likely(sm && sm->sq_ass_item)) {
            if (wraparound && unlikely(i < 0) && likely(sm->sq_length)) {
                Py_ssize_t l = sm->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (!PyErr_ExceptionMatches(PyExc_OverflowError))
                        return -1;
                    PyErr_Clear();
                }
            }
            return sm->sq_ass_item(o, i, v);
        }
    }
#else
    if (is_list || !PyMapping_Check(o))
    {
        return PySequence_SetItem(o, i, v);
    }
#endif
    return __Pyx_SetItemInt_Generic(o, PyLong_FromSsize_t(i), v);
}

/* UnicodeAsUCS4 */
static void __Pyx_PyUnicode_AsPy_UCS4_error(Py_ssize_t length) {
    if (likely(length >= 0)) {
        PyErr_Format(PyExc_ValueError,
                     "only single character unicode strings can be converted to Py_UCS4, "
                     "got length %" CYTHON_FORMAT_SSIZE_T "d", length);
    }
}
static CYTHON_INLINE Py_UCS4 __Pyx_PyUnicode_AsPy_UCS4(PyObject* x) {
    Py_ssize_t length = __Pyx_PyUnicode_GET_LENGTH(x);
    if (unlikely(length != 1)) {
        __Pyx_PyUnicode_AsPy_UCS4_error(length);
        return (Py_UCS4)-1;
    }
    return __Pyx_PyUnicode_READ_CHAR(x, 0);
}

/* object_ord */
static long __Pyx__PyObject_Ord(PyObject* c) {
    Py_ssize_t size;
    if (PyBytes_Check(c)) {
        size = __Pyx_PyBytes_GET_SIZE(c);
        if (likely(size == 1)) {
#if CYTHON_ASSUME_SAFE_MACROS
            return (unsigned char) PyBytes_AS_STRING(c)[0];
#else
            char *data = PyBytes_AsString(c);
            if (unlikely(!data)) return -1;
            return (unsigned char) data[0];
#endif
        }
#if !CYTHON_ASSUME_SAFE_SIZE
        else if (unlikely(size < 0)) return -1;
#endif
    } else if (PyByteArray_Check(c)) {
        size = __Pyx_PyByteArray_GET_SIZE(c);
        if (likely(size == 1)) {
#if CYTHON_ASSUME_SAFE_MACROS
            return (unsigned char) PyByteArray_AS_STRING(c)[0];
#else
            char *data = PyByteArray_AsString(c);
            if (unlikely(!data)) return -1;
            return (unsigned char) data[0];
#endif
        }
#if !CYTHON_ASSUME_SAFE_SIZE
        else if (unlikely(size < 0)) return -1;
#endif
    } else {
        __Pyx_TypeName c_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(c));
        PyErr_Format(PyExc_TypeError,
            "ord() expected string of length 1, but " __Pyx_FMT_TYPENAME " found",
            c_type_name);
        __Pyx_DECREF_TypeName(c_type_name);
        return (long)(Py_UCS4)-1;
    }
    PyErr_Format(PyExc_TypeError,
        "ord() expected a character, but string of length %zd found", size);
    return (long)(Py_UCS4)-1;
}

/* PyObjectCall2Args */
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call2Args(PyObject* function, PyObject* arg1, PyObject* arg2) {
    PyObject *args[3] = {NULL, arg1, arg2};
    return __Pyx_PyObject_FastCall(function, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* PyObjectGetMethod */
static int __Pyx_PyObject_GetMethod(PyObject *obj, PyObject *name, PyObject **method) {
    PyObject *attr;
#if CYTHON_UNPACK_METHODS && CYTHON_COMPILING_IN_CPYTHON && CYTHON_USE_PYTYPE_LOOKUP
    __Pyx_TypeName type_name;
    PyTypeObject *tp = Py_TYPE(obj);
    PyObject *descr;
    descrgetfunc f = NULL;
    PyObject **dictptr, *dict;
    int meth_found = 0;
    assert (*method == NULL);
    if (unlikely(tp->tp_getattro != PyObject_GenericGetAttr)) {
        attr = __Pyx_PyObject_GetAttrStr(obj, name);
        goto try_unpack;
    }
    if (unlikely(tp->tp_dict == NULL) && unlikely(PyType_Ready(tp) < 0)) {
        return 0;
    }
    descr = _PyType_Lookup(tp, name);
    if (likely(descr != NULL)) {
        Py_INCREF(descr);
#if defined(Py_TPFLAGS_METHOD_DESCRIPTOR) && Py_TPFLAGS_METHOD_DESCRIPTOR
        if (__Pyx_PyType_HasFeature(Py_TYPE(descr), Py_TPFLAGS_METHOD_DESCRIPTOR))
#else
        #ifdef __Pyx_CyFunction_USED
        if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type) || __Pyx_CyFunction_Check(descr)))
        #else
        if (likely(PyFunction_Check(descr) || __Pyx_IS_TYPE(descr, &PyMethodDescr_Type)))
        #endif
#endif
        {
            meth_found = 1;
        } else {
            f = Py_TYPE(descr)->tp_descr_get;
            if (f != NULL && PyDescr_IsData(descr)) {
                attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
                Py_DECREF(descr);
                goto try_unpack;
            }
        }
    }
    dictptr = _PyObject_GetDictPtr(obj);
    if (dictptr != NULL && (dict = *dictptr) != NULL) {
        Py_INCREF(dict);
        attr = __Pyx_PyDict_GetItemStr(dict, name);
        if (attr != NULL) {
            Py_INCREF(attr);
            Py_DECREF(dict);
            Py_XDECREF(descr);
            goto try_unpack;
        }
        Py_DECREF(dict);
    }
    if (meth_found) {
        *method = descr;
        return 1;
    }
    if (f != NULL) {
        attr = f(descr, obj, (PyObject *)Py_TYPE(obj));
        Py_DECREF(descr);
        goto try_unpack;
    }
    if (likely(descr != NULL)) {
        *method = descr;
        return 0;
    }
    type_name = __Pyx_PyType_GetFullyQualifiedName(tp);
    PyErr_Format(PyExc_AttributeError,
                 "'" __Pyx_FMT_TYPENAME "' object has no attribute '%U'",
                 type_name, name);
    __Pyx_DECREF_TypeName(type_name);
    return 0;
#else
    attr = __Pyx_PyObject_GetAttrStr(obj, name);
    goto try_unpack;
#endif
try_unpack:
#if CYTHON_UNPACK_METHODS
    if (likely(attr) && PyMethod_Check(attr) && likely(PyMethod_GET_SELF(attr) == obj)) {
        PyObject *function = PyMethod_GET_FUNCTION(attr);
        Py_INCREF(function);
        Py_DECREF(attr);
        *method = function;
        return 1;
    }
#endif
    *method = attr;
    return 0;
}

/* PyObjectCallMethod1 */
#if !(CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C0000)
static PyObject* __Pyx__PyObject_CallMethod1(PyObject* method, PyObject* arg) {
    PyObject *result = __Pyx_PyObject_CallOneArg(method, arg);
    Py_DECREF(method);
    return result;
}
#endif
static PyObject* __Pyx_PyObject_CallMethod1(PyObject* obj, PyObject* method_name, PyObject* arg) {
#if CYTHON_VECTORCALL && __PYX_LIMITED_VERSION_HEX >= 0x030C0000
    PyObject *args[2] = {obj, arg};
    (void) __Pyx_PyObject_GetMethod;
    (void) __Pyx_PyObject_CallOneArg;
    (void) __Pyx_PyObject_Call2Args;
    return PyObject_VectorcallMethod(method_name, args, 2 | PY_VECTORCALL_ARGUMENTS_OFFSET, NULL);
#else
    PyObject *method = NULL, *result;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_Call2Args(method, obj, arg);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) return NULL;
    return __Pyx__PyObject_CallMethod1(method, arg);
#endif
}

/* append */
static CYTHON_INLINE int __Pyx_PyObject_Append(PyObject* L, PyObject* x) {
    if (likely(PyList_CheckExact(L))) {
        if (unlikely(__Pyx_PyList_Append(L, x) < 0)) return -1;
    } else {
        PyObject* retval = __Pyx_PyObject_CallMethod1(L, __pyx_mstate_global->__pyx_n_u_append, x);
        if (unlikely(!retval))
            return -1;
        Py_DECREF(retval);
    }
    return 0;
}

/* GetTopmostException */
#if CYTHON_USE_EXC_INFO_STACK && CYTHON_FAST_THREAD_STATE
static _PyErr_StackItem *
__Pyx_PyErr_GetTopmostException(PyThreadState *tstate)
{
    _PyErr_StackItem *exc_info = tstate->exc_info;
    while ((exc_info->exc_value == NULL || exc_info->exc_value == Py_None) &&
           exc_info->previous_item != NULL)
    {
        exc_info = exc_info->previous_item;
    }
    return exc_info;
}
#endif

/* SaveResetException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    PyObject *exc_value = exc_info->exc_value;
    if (exc_value == NULL || exc_value == Py_None) {
        *value = NULL;
        *type = NULL;
        *tb = NULL;
    } else {
        *value = exc_value;
        Py_INCREF(*value);
        *type = (PyObject*) Py_TYPE(exc_value);
        Py_INCREF(*type);
        *tb = PyException_GetTraceback(exc_value);
    }
  #elif CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = __Pyx_PyErr_GetTopmostException(tstate);
    *type = exc_info->exc_type;
    *value = exc_info->exc_value;
    *tb = exc_info->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
  #else
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
  #endif
}
static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) {
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = tstate->exc_info;
    PyObject *tmp_value = exc_info->exc_value;
    exc_info->exc_value = value;
    Py_XDECREF(tmp_value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
  #else
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    #if CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = type;
    exc_info->exc_value = value;
    exc_info->exc_traceback = tb;
    #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    #endif
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
  #endif
}
#endif

/* SwapException */
#if CYTHON_FAST_THREAD_STATE
static CYTHON_INLINE void __Pyx__ExceptionSwap(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
  #if CYTHON_USE_EXC_INFO_STACK && PY_VERSION_HEX >= 0x030B00a4
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_value = exc_info->exc_value;
    exc_info->exc_value = *value;
    if (tmp_value == NULL || tmp_value == Py_None) {
        Py_XDECREF(tmp_value);
        tmp_value = NULL;
        tmp_type = NULL;
        tmp_tb = NULL;
    } else {
        tmp_type = (PyObject*) Py_TYPE(tmp_value);
        Py_INCREF(tmp_type);
        #if CYTHON_COMPILING_IN_CPYTHON
        tmp_tb = ((PyBaseExceptionObject*) tmp_value)->traceback;
        Py_XINCREF(tmp_tb);
        #else
        tmp_tb = PyException_GetTraceback(tmp_value);
        #endif
    }
  #elif CYTHON_USE_EXC_INFO_STACK
    _PyErr_StackItem *exc_info = tstate->exc_info;
    tmp_type = exc_info->exc_type;
    tmp_value = exc_info->exc_value;
    tmp_tb = exc_info->exc_traceback;
    exc_info->exc_type = *type;
    exc_info->exc_value = *value;
    exc_info->exc_traceback = *tb;
  #else
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = *type;
    tstate->exc_value = *value;
    tstate->exc_traceback = *tb;
  #endif
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#else
static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
    PyErr_SetExcInfo(*type, *value, *tb);
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}
#endif

/* pop_index */
static PyObject* __Pyx__PyObject_PopNewIndex(PyObject* L, PyObject* py_ix) {
    PyObject *r;
    if (unlikely(!py_ix)) return NULL;
    r = __Pyx__PyObject_PopIndex(L, py_ix);
    Py_DECREF(py_ix);
    return r;
}
static PyObject* __Pyx__PyObject_PopIndex(PyObject* L, PyObject* py_ix) {
    return __Pyx_PyObject_CallMethod1(L, __pyx_mstate_global->__pyx_n_u_pop, py_ix);
}
#if CYTHON_USE_PYLIST_INTERNALS && CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t ix) {
    Py_ssize_t size = PyList_GET_SIZE(L);
    if (likely(size > (((PyListObject*)L)->allocated >> 1))) {
        Py_ssize_t cix = ix;
        if (cix < 0) {
            cix += size;
        }
        if (likely(__Pyx_is_valid_index(cix, size))) {
            PyObject* v = PyList_GET_ITEM(L, cix);
            __Pyx_SET_SIZE(L, Py_SIZE(L) - 1);
            size -= 1;
            memmove(&PyList_GET_ITEM(L, cix), &PyList_GET_ITEM(L, cix+1), (size_t)(size-cix)*sizeof(PyObject*));
            return v;
        }
    }
    if (py_ix == Py_None) {
        return __Pyx__PyObject_PopNewIndex(L, PyLong_FromSsize_t(ix));
    } else {
        return __Pyx__PyObject_PopIndex(L, py_ix);
    }
}
#endif

/* WriteUnraisableException */
static void __Pyx_WriteUnraisable(const char *name, int clineno,
                                  int lineno, const char *filename,
                                  int full_traceback, int nogil) {
    PyObject *old_exc, *old_val, *old_tb;
    PyObject *ctx;
    __Pyx_PyThreadState_declare
    PyGILState_STATE state;
    if (nogil)
        state = PyGILState_Ensure();
    else state = (PyGILState_STATE)0;
    CYTHON_UNUSED_VAR(clineno);
    CYTHON_UNUSED_VAR(lineno);
    CYTHON_UNUSED_VAR(filename);
    CYTHON_MAYBE_UNUSED_VAR(nogil);
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&old_exc, &old_val, &old_tb);
    if (full_traceback) {
        Py_XINCREF(old_exc);
        Py_XINCREF(old_val);
        Py_XINCREF(old_tb);
        __Pyx_ErrRestore(old_exc, old_val, old_tb);
        PyErr_PrintEx(0);
    }
    ctx = PyUnicode_FromString(name);
    __Pyx_ErrRestore(old_exc, old_val, old_tb);
    if (!ctx) {
        PyErr_WriteUnraisable(Py_None);
    } else {
        PyErr_WriteUnraisable(ctx);
        Py_DECREF(ctx);
    }
    if (nogil)
        PyGILState_Release(state);
}

/* RaiseUnboundLocalError */
static void __Pyx_RaiseUnboundLocalError(const char *varname) {
    PyErr_Format(PyExc_UnboundLocalError, "local variable '%s' referenced before assignment", varname);
}

/* RaiseClosureNameError */
static void __Pyx_RaiseClosureNameError(const char *varname) {
    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
}

/* PyObjectCallNoArg */
static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
    PyObject *arg[2] = {NULL, NULL};
    return __Pyx_PyObject_FastCall(func, arg + 1, 0 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
}

/* PyObjectVectorCallMethodKwBuilder */
#if !CYTHON_VECTORCALL || PY_VERSION_HEX < 0x03090000
static PyObject *__Pyx_Object_VectorcallMethod_CallFromBuilder(PyObject *name, PyObject *const *args, size_t nargsf, PyObject *kwnames) {
    PyObject *result;
    PyObject *obj = PyObject_GetAttr(args[0], name);
    if (unlikely(!obj))
        return NULL;
    result = __Pyx_Object_Vectorcall_CallFromBuilder(obj, args+1, nargsf-1, kwnames);
    Py_DECREF(obj);
    return result;
}
#endif

/* PyLongBinop */
#if !CYTHON_COMPILING_IN_PYPY
static PyObject* __Pyx_Fallback___Pyx_PyLong_MultiplyObjC(PyObject *op1, PyObject *op2, int inplace) {
    return (inplace ? PyNumber_InPlaceMultiply : PyNumber_Multiply)(op1, op2);
}
#if CYTHON_USE_PYLONG_INTERNALS
static PyObject* __Pyx_Unpacked___Pyx_PyLong_MultiplyObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(inplace);
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    long a, x;
#ifdef HAVE_LONG_LONG
    const PY_LONG_LONG llb = intval;
    PY_LONG_LONG lla, llx;
#endif
    if (unlikely(__Pyx_PyLong_IsZero(op1))) {
        return __Pyx_NewRef(op1);
    }
    if (likely(__Pyx_PyLong_IsCompact(op1))) {
        a = __Pyx_PyLong_CompactValue(op1);
    } else {
        const digit* digits = __Pyx_PyLong_Digits(op1);
        const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(op1);
        switch (size) {
            case -2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) {
                    a = -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) {
                    lla = -(PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 2:
                if (8 * sizeof(long) - 1 > 2 * PyLong_SHIFT+30) {
                    a = (long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 2 * PyLong_SHIFT+30) {
                    lla = (PY_LONG_LONG) (((((unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) {
                    a = -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) {
                    lla = -(PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 3:
                if (8 * sizeof(long) - 1 > 3 * PyLong_SHIFT+30) {
                    a = (long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 3 * PyLong_SHIFT+30) {
                    lla = (PY_LONG_LONG) (((((((unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case -4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) {
                    a = -(long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) {
                    lla = -(PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            case 4:
                if (8 * sizeof(long) - 1 > 4 * PyLong_SHIFT+30) {
                    a = (long) (((((((((unsigned long)digits[3]) << PyLong_SHIFT) | (unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0]));
                    break;
                #ifdef HAVE_LONG_LONG
                } else if (8 * sizeof(PY_LONG_LONG) - 1 > 4 * PyLong_SHIFT+30) {
                    lla = (PY_LONG_LONG) (((((((((unsigned PY_LONG_LONG)digits[3]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[2]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[1]) << PyLong_SHIFT) | (unsigned PY_LONG_LONG)digits[0]));
                    goto long_long;
                #endif
                }
                CYTHON_FALLTHROUGH;
            default: return PyLong_Type.tp_as_number->nb_multiply(op1, op2);
        }
    }
            CYTHON_UNUSED_VAR(a);
            CYTHON_UNUSED_VAR(b);
            #ifdef HAVE_LONG_LONG
            lla = a;
            goto long_long;
            #else
            return PyLong_Type.tp_as_number->nb_multiply(op1, op2);
            #endif
        return PyLong_FromLong(x);
#ifdef HAVE_LONG_LONG
    long_long:
            llx = lla * llb;
        return PyLong_FromLongLong(llx);
#endif
    return __Pyx_Fallback___Pyx_PyLong_MultiplyObjC(op1, op2, inplace);
    
    
}
#endif
static PyObject* __Pyx_Float___Pyx_PyLong_MultiplyObjC(PyObject *float_val, long intval, int zerodivision_check) {
    CYTHON_UNUSED_VAR(zerodivision_check);
    const long b = intval;
    double a = __Pyx_PyFloat_AS_DOUBLE(float_val);
        double result;
        
        result = ((double)a) * (double)b;
        return PyFloat_FromDouble(result);
}
static CYTHON_INLINE PyObject* __Pyx_PyLong_MultiplyObjC(PyObject *op1, PyObject *op2, long intval, int inplace, int zerodivision_check) {
    CYTHON_MAYBE_UNUSED_VAR(intval);
    CYTHON_UNUSED_VAR(zerodivision_check);
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(PyLong_CheckExact(op1))) {
        return __Pyx_Unpacked___Pyx_PyLong_MultiplyObjC(op1, op2, intval, inplace, zerodivision_check);
    }
    #endif
    if (PyFloat_CheckExact(op1)) {
        return __Pyx_Float___Pyx_PyLong_MultiplyObjC(op1, intval, zerodivision_check);
    }
    return __Pyx_Fallback___Pyx_PyLong_MultiplyObjC(op1, op2, inplace);
}
#endif

/* ObjectGetItem */
#if CYTHON_USE_TYPE_SLOTS
static PyObject *__Pyx_PyObject_GetIndex(PyObject *obj, PyObject *index) {
    PyObject *runerr = NULL;
    Py_ssize_t key_value;
    key_value = __Pyx_PyIndex_AsSsize_t(index);
    if (likely(key_value != -1 || !(runerr = PyErr_Occurred()))) {
        return __Pyx_GetItemInt_Fast(obj, key_value, 0, 1, 1);
    }
    if (PyErr_GivenExceptionMatches(runerr, PyExc_OverflowError)) {
        __Pyx_TypeName index_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(index));
        PyErr_Clear();
        PyErr_Format(PyExc_IndexError,
            "cannot fit '" __Pyx_FMT_TYPENAME "' into an index-sized integer", index_type_name);
        __Pyx_DECREF_TypeName(index_type_name);
    }
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem_Slow(PyObject *obj, PyObject *key) {
    __Pyx_TypeName obj_type_name;
    if (likely(PyType_Check(obj))) {
        PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(obj, __pyx_mstate_global->__pyx_n_u_class_getitem);
        if (!meth) {
            PyErr_Clear();
        } else {
            PyObject *result = __Pyx_PyObject_CallOneArg(meth, key);
            Py_DECREF(meth);
            return result;
        }
    }
    obj_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(obj));
    PyErr_Format(PyExc_TypeError,
        "'" __Pyx_FMT_TYPENAME "' object is not subscriptable", obj_type_name);
    __Pyx_DECREF_TypeName(obj_type_name);
    return NULL;
}
static PyObject *__Pyx_PyObject_GetItem(PyObject *obj, PyObject *key) {
    PyTypeObject *tp = Py_TYPE(obj);
    PyMappingMethods *mm = tp->tp_as_mapping;
    PySequenceMethods *sm = tp->tp_as_sequence;
    if (likely(mm && mm->mp_subscript)) {
        return mm->mp_subscript(obj, key);
    }
    if (likely(sm && sm->sq_item)) {
        return __Pyx_PyObject_GetIndex(obj, key);
    }
    return __Pyx_PyObject_GetItem_Slow(obj, key);
}
#endif

/* pybytes_as_double */
static double __Pyx_SlowPyString_AsDouble(PyObject *obj) {
    PyObject *float_value = PyFloat_FromString(obj);
    if (likely(float_value)) {
        double value = __Pyx_PyFloat_AS_DOUBLE(float_value);
        Py_DECREF(float_value);
        return value;
    }
    return (double)-1;
}
static const char* __Pyx__PyBytes_AsDouble_Copy(const char* start, char* buffer, Py_ssize_t length) {
    int last_was_punctuation = 1;
    int parse_error_found = 0;
    Py_ssize_t i;
    for (i=0; i < length; i++) {
        char chr = start[i];
        int is_punctuation = (chr == '_') | (chr == '.') | (chr == 'e') | (chr == 'E');
        *buffer = chr;
        buffer += (chr != '_');
        parse_error_found |= last_was_punctuation & is_punctuation;
        last_was_punctuation = is_punctuation;
    }
    parse_error_found |= last_was_punctuation;
    *buffer = '\0';
    return unlikely(parse_error_found) ? NULL : buffer;
}
static double __Pyx__PyBytes_AsDouble_inf_nan(const char* start, Py_ssize_t length) {
    int matches = 1;
    char sign = start[0];
    int is_signed = (sign == '+') | (sign == '-');
    start += is_signed;
    length -= is_signed;
    switch (start[0]) {
        #ifdef Py_NAN
        case 'n':
        case 'N':
            if (unlikely(length != 3)) goto parse_failure;
            matches &= (start[1] == 'a' || start[1] == 'A');
            matches &= (start[2] == 'n' || start[2] == 'N');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_NAN : Py_NAN;
        #endif
        case 'i':
        case 'I':
            if (unlikely(length < 3)) goto parse_failure;
            matches &= (start[1] == 'n' || start[1] == 'N');
            matches &= (start[2] == 'f' || start[2] == 'F');
            if (likely(length == 3 && matches))
                return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
            if (unlikely(length != 8)) goto parse_failure;
            matches &= (start[3] == 'i' || start[3] == 'I');
            matches &= (start[4] == 'n' || start[4] == 'N');
            matches &= (start[5] == 'i' || start[5] == 'I');
            matches &= (start[6] == 't' || start[6] == 'T');
            matches &= (start[7] == 'y' || start[7] == 'Y');
            if (unlikely(!matches)) goto parse_failure;
            return (sign == '-') ? -Py_HUGE_VAL : Py_HUGE_VAL;
        case '.': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
            break;
        default:
            goto parse_failure;
    }
    return 0.0;
parse_failure:
    return -1.0;
}
static CYTHON_INLINE int __Pyx__PyBytes_AsDouble_IsSpace(char ch) {
    return (ch == 0x20) | !((ch < 0x9) | (ch > 0xd));
}
CYTHON_UNUSED static double __Pyx__PyBytes_AsDouble(PyObject *obj, const char* start, Py_ssize_t length) {
    double value;
    Py_ssize_t i, digits;
    const char *last = start + length;
    char *end;
    while (__Pyx__PyBytes_AsDouble_IsSpace(*start))
        start++;
    while (start < last - 1 && __Pyx__PyBytes_AsDouble_IsSpace(last[-1]))
        last--;
    length = last - start;
    if (unlikely(length <= 0)) goto fallback;
    value = __Pyx__PyBytes_AsDouble_inf_nan(start, length);
    if (unlikely(value == -1.0)) goto fallback;
    if (value != 0.0) return value;
    digits = 0;
    for (i=0; i < length; digits += start[i++] != '_');
    if (likely(digits == length)) {
        value = PyOS_string_to_double(start, &end, NULL);
    } else if (digits < 40) {
        char number[40];
        last = __Pyx__PyBytes_AsDouble_Copy(start, number, length);
        if (unlikely(!last)) goto fallback;
        value = PyOS_string_to_double(number, &end, NULL);
    } else {
        char *number = (char*) PyMem_Malloc((digits + 1) * sizeof(char));
        if (unlikely(!number)) goto fallback;
        last = __Pyx__PyBytes_AsDouble_Copy(start, number, length);
        if (unlikely(!last)) {
            PyMem_Free(number);
            goto fallback;
        }
        value = PyOS_string_to_double(number, &end, NULL);
        PyMem_Free(number);
    }
    if (likely(end == last) || (value == (double)-1 && PyErr_Occurred())) {
        return value;
    }
fallback:
    return __Pyx_SlowPyString_AsDouble(obj);
}

/* pynumber_float */
static CYTHON_INLINE PyObject* __Pyx__PyNumber_Float(PyObject* obj) {
    double val;
    if (PyLong_CheckExact(obj)) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (likely(__Pyx_PyLong_IsCompact(obj))) {
            val = (double) __Pyx_PyLong_CompactValue(obj);
            goto no_error;
        }
#endif
        val = PyLong_AsDouble(obj);
    } else if (PyUnicode_CheckExact(obj)) {
        val = __Pyx_PyUnicode_AsDouble(obj);
    } else if (PyBytes_CheckExact(obj)) {
        val = __Pyx_PyBytes_AsDouble(obj);
    } else if (PyByteArray_CheckExact(obj)) {
        val = __Pyx_PyByteArray_AsDouble(obj);
    } else {
        return PyNumber_Float(obj);
    }
    if (unlikely(val == -1 && PyErr_Occurred())) {
        return NULL;
    }
#if CYTHON_USE_PYLONG_INTERNALS
no_error:
#endif
    return PyFloat_FromDouble(val);
}

/* CallTypeTraverse */
#if !CYTHON_USE_TYPE_SPECS || (!CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x03090000)
#else
static int __Pyx_call_type_traverse(PyObject *o, int always_call, visitproc visit, void *arg) {
    #if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x03090000
    if (__Pyx_get_runtime_version() < 0x03090000) return 0;
    #endif
    if (!always_call) {
        PyTypeObject *base = __Pyx_PyObject_GetSlot(o, tp_base, PyTypeObject*);
        unsigned long flags = PyType_GetFlags(base);
        if (flags & Py_TPFLAGS_HEAPTYPE) {
            return 0;
        }
    }
    Py_VISIT((PyObject*)Py_TYPE(o));
    return 0;
}
#endif

/* LimitedApiGetTypeDict */
#if CYTHON_COMPILING_IN_LIMITED_API
static Py_ssize_t __Pyx_GetTypeDictOffset(void) {
    PyObject *tp_dictoffset_o;
    Py_ssize_t tp_dictoffset;
    tp_dictoffset_o = PyObject_GetAttrString((PyObject*)(&PyType_Type), "__dictoffset__");
    if (unlikely(!tp_dictoffset_o)) return -1;
    tp_dictoffset = PyLong_AsSsize_t(tp_dictoffset_o);
    Py_DECREF(tp_dictoffset_o);
    if (unlikely(tp_dictoffset == 0)) {
        PyErr_SetString(
            PyExc_TypeError,
            "'type' doesn't have a dictoffset");
        return -1;
    } else if (unlikely(tp_dictoffset < 0)) {
        PyErr_SetString(
            PyExc_TypeError,
            "'type' has an unexpected negative dictoffset. "
            "Please report this as Cython bug");
        return -1;
    }
    return tp_dictoffset;
}
static PyObject *__Pyx_GetTypeDict(PyTypeObject *tp) {
    static Py_ssize_t tp_dictoffset = 0;
    if (unlikely(tp_dictoffset == 0)) {
        tp_dictoffset = __Pyx_GetTypeDictOffset();
        if (unlikely(tp_dictoffset == -1 && PyErr_Occurred())) {
            tp_dictoffset = 0; // try again next time?
            return NULL;
        }
    }
    return *(PyObject**)((char*)tp + tp_dictoffset);
}
#endif

/* SetItemOnTypeDict */
static int __Pyx__SetItemOnTypeDict(PyTypeObject *tp, PyObject *k, PyObject *v) {
    int result;
    PyObject *tp_dict;
#if CYTHON_COMPILING_IN_LIMITED_API
    tp_dict = __Pyx_GetTypeDict(tp);
    if (unlikely(!tp_dict)) return -1;
#else
    tp_dict = tp->tp_dict;
#endif
    result = PyDict_SetItem(tp_dict, k, v);
    if (likely(!result)) {
        PyType_Modified(tp);
        if (unlikely(PyObject_HasAttr(v, __pyx_mstate_global->__pyx_n_u_set_name))) {
            PyObject *setNameResult = PyObject_CallMethodObjArgs(v, __pyx_mstate_global->__pyx_n_u_set_name,  (PyObject *) tp, k, NULL);
            if (!setNameResult) return -1;
            Py_DECREF(setNameResult);
        }
    }
    return result;
}

/* FixUpExtensionType */
static int __Pyx_fix_up_extension_type_from_spec(PyType_Spec *spec, PyTypeObject *type) {
#if __PYX_LIMITED_VERSION_HEX > 0x030900B1
    CYTHON_UNUSED_VAR(spec);
    CYTHON_UNUSED_VAR(type);
    CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict);
#else
    const PyType_Slot *slot = spec->slots;
    int changed = 0;
#if !CYTHON_COMPILING_IN_LIMITED_API
    while (slot && slot->slot && slot->slot != Py_tp_members)
        slot++;
    if (slot && slot->slot == Py_tp_members) {
#if !CYTHON_COMPILING_IN_CPYTHON
        const
#endif  // !CYTHON_COMPILING_IN_CPYTHON)
            PyMemberDef *memb = (PyMemberDef*) slot->pfunc;
        while (memb && memb->name) {
            if (memb->name[0] == '_' && memb->name[1] == '_') {
                if (strcmp(memb->name, "__weaklistoffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_weaklistoffset = memb->offset;
                    changed = 1;
                }
                else if (strcmp(memb->name, "__dictoffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
                    type->tp_dictoffset = memb->offset;
                    changed = 1;
                }
#if CYTHON_METH_FASTCALL
                else if (strcmp(memb->name, "__vectorcalloffset__") == 0) {
                    assert(memb->type == T_PYSSIZET);
                    assert(memb->flags == READONLY);
#if PY_VERSION_HEX >= 0x030800b4
                    type->tp_vectorcall_offset = memb->offset;
#else
                    type->tp_print = (printfunc) memb->offset;
#endif
                    changed = 1;
                }
#endif  // CYTHON_METH_FASTCALL
                else if (strcmp(memb->name, "__module__") == 0) {
                    PyObject *descr;
                    assert(memb->type == T_OBJECT);
                    assert(memb->flags == 0 || memb->flags == READONLY);
                    descr = PyDescr_NewMember(type, memb);
                    if (unlikely(!descr))
                        return -1;
                    int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr);
                    Py_DECREF(descr);
                    if (unlikely(set_item_result < 0)) {
                        return -1;
                    }
                    changed = 1;
                }
            }
            memb++;
        }
    }
#endif  // !CYTHON_COMPILING_IN_LIMITED_API
    slot = spec->slots;
    while (slot && slot->slot && slot->slot != Py_tp_getset)
        slot++;
    if (slot && slot->slot == Py_tp_getset) {
        PyGetSetDef *getset = (PyGetSetDef*) slot->pfunc;
        while (getset && getset->name) {
            if (getset->name[0] == '_' && getset->name[1] == '_' && strcmp(getset->name, "__module__") == 0) {
                PyObject *descr = PyDescr_NewGetSet(type, getset);
                if (unlikely(!descr))
                    return -1;
                #if CYTHON_COMPILING_IN_LIMITED_API
                PyObject *pyname = PyUnicode_FromString(getset->name);
                if (unlikely(!pyname)) {
                    Py_DECREF(descr);
                    return -1;
                }
                int set_item_result = __Pyx_SetItemOnTypeDict(type, pyname, descr);
                Py_DECREF(pyname);
                #else
                CYTHON_UNUSED_VAR(__Pyx__SetItemOnTypeDict);
                int set_item_result = PyDict_SetItem(type->tp_dict, PyDescr_NAME(descr), descr);
                #endif
                Py_DECREF(descr);
                if (unlikely(set_item_result < 0)) {
                    return -1;
                }
                changed = 1;
            }
            ++getset;
        }
    }
    if (changed)
        PyType_Modified(type);
#endif  // PY_VERSION_HEX > 0x030900B1
    return 0;
}

/* PyObjectCallMethod0 */
static PyObject* __Pyx_PyObject_CallMethod0(PyObject* obj, PyObject* method_name) {
    PyObject *method = NULL, *result = NULL;
    int is_method = __Pyx_PyObject_GetMethod(obj, method_name, &method);
    if (likely(is_method)) {
        result = __Pyx_PyObject_CallOneArg(method, obj);
        Py_DECREF(method);
        return result;
    }
    if (unlikely(!method)) goto bad;
    result = __Pyx_PyObject_CallNoArg(method);
    Py_DECREF(method);
bad:
    return result;
}

/* ValidateBasesTuple */
#if CYTHON_COMPILING_IN_CPYTHON || CYTHON_COMPILING_IN_LIMITED_API || CYTHON_USE_TYPE_SPECS
static int __Pyx_validate_bases_tuple(const char *type_name, Py_ssize_t dictoffset, PyObject *bases) {
    Py_ssize_t i, n;
#if CYTHON_ASSUME_SAFE_SIZE
    n = PyTuple_GET_SIZE(bases);
#else
    n = PyTuple_Size(bases);
    if (unlikely(n < 0)) return -1;
#endif
    for (i = 1; i < n; i++)
    {
        PyTypeObject *b;
#if CYTHON_AVOID_BORROWED_REFS
        PyObject *b0 = PySequence_GetItem(bases, i);
        if (!b0) return -1;
#elif CYTHON_ASSUME_SAFE_MACROS
        PyObject *b0 = PyTuple_GET_ITEM(bases, i);
#else
        PyObject *b0 = PyTuple_GetItem(bases, i);
        if (!b0) return -1;
#endif
        b = (PyTypeObject*) b0;
        if (!__Pyx_PyType_HasFeature(b, Py_TPFLAGS_HEAPTYPE))
        {
            __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b);
            PyErr_Format(PyExc_TypeError,
                "base class '" __Pyx_FMT_TYPENAME "' is not a heap type", b_name);
            __Pyx_DECREF_TypeName(b_name);
#if CYTHON_AVOID_BORROWED_REFS
            Py_DECREF(b0);
#endif
            return -1;
        }
        if (dictoffset == 0)
        {
            Py_ssize_t b_dictoffset = 0;
#if CYTHON_USE_TYPE_SLOTS
            b_dictoffset = b->tp_dictoffset;
#else
            PyObject *py_b_dictoffset = PyObject_GetAttrString((PyObject*)b, "__dictoffset__");
            if (!py_b_dictoffset) goto dictoffset_return;
            b_dictoffset = PyLong_AsSsize_t(py_b_dictoffset);
            Py_DECREF(py_b_dictoffset);
            if (b_dictoffset == -1 && PyErr_Occurred()) goto dictoffset_return;
#endif
            if (b_dictoffset) {
                {
                    __Pyx_TypeName b_name = __Pyx_PyType_GetFullyQualifiedName(b);
                    PyErr_Format(PyExc_TypeError,
                        "extension type '%.200s' has no __dict__ slot, "
                        "but base type '" __Pyx_FMT_TYPENAME "' has: "
                        "either add 'cdef dict __dict__' to the extension type "
                        "or add '__slots__ = [...]' to the base type",
                        type_name, b_name);
                    __Pyx_DECREF_TypeName(b_name);
                }
#if !CYTHON_USE_TYPE_SLOTS
              dictoffset_return:
#endif
#if CYTHON_AVOID_BORROWED_REFS
                Py_DECREF(b0);
#endif
                return -1;
            }
        }
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(b0);
#endif
    }
    return 0;
}
#endif

/* PyType_Ready */
CYTHON_UNUSED static int __Pyx_PyType_HasMultipleInheritance(PyTypeObject *t) {
    while (t) {
        PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
        if (bases) {
            return 1;
        }
        t = __Pyx_PyType_GetSlot(t, tp_base, PyTypeObject*);
    }
    return 0;
}
static int __Pyx_PyType_Ready(PyTypeObject *t) {
#if CYTHON_USE_TYPE_SPECS || !CYTHON_COMPILING_IN_CPYTHON || defined(PYSTON_MAJOR_VERSION)
    (void)__Pyx_PyObject_CallMethod0;
#if CYTHON_USE_TYPE_SPECS
    (void)__Pyx_validate_bases_tuple;
#endif
    return PyType_Ready(t);
#else
    int r;
    if (!__Pyx_PyType_HasMultipleInheritance(t)) {
        return PyType_Ready(t);
    }
    PyObject *bases = __Pyx_PyType_GetSlot(t, tp_bases, PyObject*);
    if (bases && unlikely(__Pyx_validate_bases_tuple(t->tp_name, t->tp_dictoffset, bases) == -1))
        return -1;
#if !defined(PYSTON_MAJOR_VERSION)
    {
        int gc_was_enabled;
    #if PY_VERSION_HEX >= 0x030A00b1
        gc_was_enabled = PyGC_Disable();
        (void)__Pyx_PyObject_CallMethod0;
    #else
        PyObject *ret, *py_status;
        PyObject *gc = NULL;
        #if (!CYTHON_COMPILING_IN_PYPY || PYPY_VERSION_NUM+0 >= 0x07030400) &&\
                !CYTHON_COMPILING_IN_GRAAL
        gc = PyImport_GetModule(__pyx_mstate_global->__pyx_kp_u_gc);
        #endif
        if (unlikely(!gc)) gc = PyImport_Import(__pyx_mstate_global->__pyx_kp_u_gc);
        if (unlikely(!gc)) return -1;
        py_status = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_isenabled);
        if (unlikely(!py_status)) {
            Py_DECREF(gc);
            return -1;
        }
        gc_was_enabled = __Pyx_PyObject_IsTrue(py_status);
        Py_DECREF(py_status);
        if (gc_was_enabled > 0) {
            ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_disable);
            if (unlikely(!ret)) {
                Py_DECREF(gc);
                return -1;
            }
            Py_DECREF(ret);
        } else if (unlikely(gc_was_enabled == -1)) {
            Py_DECREF(gc);
            return -1;
        }
    #endif
        t->tp_flags |= Py_TPFLAGS_HEAPTYPE;
#if PY_VERSION_HEX >= 0x030A0000
        t->tp_flags |= Py_TPFLAGS_IMMUTABLETYPE;
#endif
#else
        (void)__Pyx_PyObject_CallMethod0;
#endif
    r = PyType_Ready(t);
#if !defined(PYSTON_MAJOR_VERSION)
        t->tp_flags &= ~Py_TPFLAGS_HEAPTYPE;
    #if PY_VERSION_HEX >= 0x030A00b1
        if (gc_was_enabled)
            PyGC_Enable();
    #else
        if (gc_was_enabled) {
            PyObject *tp, *v, *tb;
            PyErr_Fetch(&tp, &v, &tb);
            ret = __Pyx_PyObject_CallMethod0(gc, __pyx_mstate_global->__pyx_kp_u_enable);
            if (likely(ret || r == -1)) {
                Py_XDECREF(ret);
                PyErr_Restore(tp, v, tb);
            } else {
                Py_XDECREF(tp);
                Py_XDECREF(v);
                Py_XDECREF(tb);
                r = -1;
            }
        }
        Py_DECREF(gc);
    #endif
    }
#endif
    return r;
#endif
}

/* SetVTable */
static int __Pyx_SetVtable(PyTypeObject *type, void *vtable) {
    PyObject *ob = PyCapsule_New(vtable, 0, 0);
    if (unlikely(!ob))
        goto bad;
#if CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(PyObject_SetAttr((PyObject *) type, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0))
#else
    if (unlikely(PyDict_SetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable, ob) < 0))
#endif
        goto bad;
    Py_DECREF(ob);
    return 0;
bad:
    Py_XDECREF(ob);
    return -1;
}

/* GetVTable */
static void* __Pyx_GetVtable(PyTypeObject *type) {
    void* ptr;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *ob = PyObject_GetAttr((PyObject *)type, __pyx_mstate_global->__pyx_n_u_pyx_vtable);
#else
    PyObject *ob = PyObject_GetItem(type->tp_dict, __pyx_mstate_global->__pyx_n_u_pyx_vtable);
#endif
    if (!ob)
        goto bad;
    ptr = PyCapsule_GetPointer(ob, 0);
    if (!ptr && !PyErr_Occurred())
        PyErr_SetString(PyExc_RuntimeError, "invalid vtable found for imported type");
    Py_DECREF(ob);
    return ptr;
bad:
    Py_XDECREF(ob);
    return NULL;
}

/* MergeVTables */
static int __Pyx_MergeVtables(PyTypeObject *type) {
    int i=0;
    Py_ssize_t size;
    void** base_vtables;
    __Pyx_TypeName tp_base_name = NULL;
    __Pyx_TypeName base_name = NULL;
    void* unknown = (void*)-1;
    PyObject* bases = __Pyx_PyType_GetSlot(type, tp_bases, PyObject*);
    int base_depth = 0;
    {
        PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
        while (base) {
            base_depth += 1;
            base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*);
        }
    }
    base_vtables = (void**) PyMem_Malloc(sizeof(void*) * (size_t)(base_depth + 1));
    base_vtables[0] = unknown;
#if CYTHON_COMPILING_IN_LIMITED_API
    size = PyTuple_Size(bases);
    if (size < 0) goto other_failure;
#else
    size = PyTuple_GET_SIZE(bases);
#endif
    for (i = 1; i < size; i++) {
        PyObject *basei;
        void* base_vtable;
#if CYTHON_AVOID_BORROWED_REFS
        basei = PySequence_GetItem(bases, i);
        if (unlikely(!basei)) goto other_failure;
#elif !CYTHON_ASSUME_SAFE_MACROS
        basei = PyTuple_GetItem(bases, i);
        if (unlikely(!basei)) goto other_failure;
#else
        basei = PyTuple_GET_ITEM(bases, i);
#endif
        base_vtable = __Pyx_GetVtable((PyTypeObject*)basei);
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(basei);
#endif
        if (base_vtable != NULL) {
            int j;
            PyTypeObject* base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
            for (j = 0; j < base_depth; j++) {
                if (base_vtables[j] == unknown) {
                    base_vtables[j] = __Pyx_GetVtable(base);
                    base_vtables[j + 1] = unknown;
                }
                if (base_vtables[j] == base_vtable) {
                    break;
                } else if (base_vtables[j] == NULL) {
                    goto bad;
                }
                base = __Pyx_PyType_GetSlot(base, tp_base, PyTypeObject*);
            }
        }
    }
    PyErr_Clear();
    PyMem_Free(base_vtables);
    return 0;
bad:
    {
        PyTypeObject* basei = NULL;
        PyTypeObject* tp_base = __Pyx_PyType_GetSlot(type, tp_base, PyTypeObject*);
        tp_base_name = __Pyx_PyType_GetFullyQualifiedName(tp_base);
#if CYTHON_AVOID_BORROWED_REFS
        basei = (PyTypeObject*)PySequence_GetItem(bases, i);
        if (unlikely(!basei)) goto really_bad;
#elif !CYTHON_ASSUME_SAFE_MACROS
        basei = (PyTypeObject*)PyTuple_GetItem(bases, i);
        if (unlikely(!basei)) goto really_bad;
#else
        basei = (PyTypeObject*)PyTuple_GET_ITEM(bases, i);
#endif
        base_name = __Pyx_PyType_GetFullyQualifiedName(basei);
#if CYTHON_AVOID_BORROWED_REFS
        Py_DECREF(basei);
#endif
    }
    PyErr_Format(PyExc_TypeError,
        "multiple bases have vtable conflict: '" __Pyx_FMT_TYPENAME "' and '" __Pyx_FMT_TYPENAME "'", tp_base_name, base_name);
#if CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
really_bad: // bad has failed!
#endif
    __Pyx_DECREF_TypeName(tp_base_name);
    __Pyx_DECREF_TypeName(base_name);
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_AVOID_BORROWED_REFS || !CYTHON_ASSUME_SAFE_MACROS
other_failure:
#endif
    PyMem_Free(base_vtables);
    return -1;
}

/* DelItemOnTypeDict */
static int __Pyx__DelItemOnTypeDict(PyTypeObject *tp, PyObject *k) {
    int result;
    PyObject *tp_dict;
#if CYTHON_COMPILING_IN_LIMITED_API
    tp_dict = __Pyx_GetTypeDict(tp);
    if (unlikely(!tp_dict)) return -1;
#else
    tp_dict = tp->tp_dict;
#endif
    result = PyDict_DelItem(tp_dict, k);
    if (likely(!result)) PyType_Modified(tp);
    return result;
}

/* SetupReduce */
static int __Pyx_setup_reduce_is_named(PyObject* meth, PyObject* name) {
  int ret;
  PyObject *name_attr;
  name_attr = __Pyx_PyObject_GetAttrStrNoError(meth, __pyx_mstate_global->__pyx_n_u_name_2);
  if (likely(name_attr)) {
      ret = PyObject_RichCompareBool(name_attr, name, Py_EQ);
  } else {
      ret = -1;
  }
  if (unlikely(ret < 0)) {
      PyErr_Clear();
      ret = 0;
  }
  Py_XDECREF(name_attr);
  return ret;
}
static int __Pyx_setup_reduce(PyObject* type_obj) {
    int ret = 0;
    PyObject *object_reduce = NULL;
    PyObject *object_getstate = NULL;
    PyObject *object_reduce_ex = NULL;
    PyObject *reduce = NULL;
    PyObject *reduce_ex = NULL;
    PyObject *reduce_cython = NULL;
    PyObject *setstate = NULL;
    PyObject *setstate_cython = NULL;
    PyObject *getstate = NULL;
#if CYTHON_USE_PYTYPE_LOOKUP
    getstate = _PyType_Lookup((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_getstate);
#else
    getstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_getstate);
    if (!getstate && PyErr_Occurred()) {
        goto __PYX_BAD;
    }
#endif
    if (getstate) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_getstate = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate);
#else
        object_getstate = __Pyx_PyObject_GetAttrStrNoError((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_getstate);
        if (!object_getstate && PyErr_Occurred()) {
            goto __PYX_BAD;
        }
#endif
        if (object_getstate != getstate) {
            goto __PYX_GOOD;
        }
    }
#if CYTHON_USE_PYTYPE_LOOKUP
    object_reduce_ex = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#else
    object_reduce_ex = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (!object_reduce_ex) goto __PYX_BAD;
#endif
    reduce_ex = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_ex); if (unlikely(!reduce_ex)) goto __PYX_BAD;
    if (reduce_ex == object_reduce_ex) {
#if CYTHON_USE_PYTYPE_LOOKUP
        object_reduce = _PyType_Lookup(&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD;
#else
        object_reduce = __Pyx_PyObject_GetAttrStr((PyObject*)&PyBaseObject_Type, __pyx_mstate_global->__pyx_n_u_reduce); if (!object_reduce) goto __PYX_BAD;
#endif
        reduce = __Pyx_PyObject_GetAttrStr(type_obj, __pyx_mstate_global->__pyx_n_u_reduce); if (unlikely(!reduce)) goto __PYX_BAD;
        if (reduce == object_reduce || __Pyx_setup_reduce_is_named(reduce, __pyx_mstate_global->__pyx_n_u_reduce_cython)) {
            reduce_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython);
            if (likely(reduce_cython)) {
                ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce, reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_reduce_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
            } else if (reduce == object_reduce || PyErr_Occurred()) {
                goto __PYX_BAD;
            }
            setstate = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate);
            if (!setstate) PyErr_Clear();
            if (!setstate || __Pyx_setup_reduce_is_named(setstate, __pyx_mstate_global->__pyx_n_u_setstate_cython)) {
                setstate_cython = __Pyx_PyObject_GetAttrStrNoError(type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython);
                if (likely(setstate_cython)) {
                    ret = __Pyx_SetItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate, setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                    ret = __Pyx_DelItemOnTypeDict((PyTypeObject*)type_obj, __pyx_mstate_global->__pyx_n_u_setstate_cython); if (unlikely(ret < 0)) goto __PYX_BAD;
                } else if (!setstate || PyErr_Occurred()) {
                    goto __PYX_BAD;
                }
            }
            PyType_Modified((PyTypeObject*)type_obj);
        }
    }
    goto __PYX_GOOD;
__PYX_BAD:
    if (!PyErr_Occurred()) {
        __Pyx_TypeName type_obj_name =
            __Pyx_PyType_GetFullyQualifiedName((PyTypeObject*)type_obj);
        PyErr_Format(PyExc_RuntimeError,
            "Unable to initialize pickling for " __Pyx_FMT_TYPENAME, type_obj_name);
        __Pyx_DECREF_TypeName(type_obj_name);
    }
    ret = -1;
__PYX_GOOD:
#if !CYTHON_USE_PYTYPE_LOOKUP
    Py_XDECREF(object_reduce);
    Py_XDECREF(object_reduce_ex);
    Py_XDECREF(object_getstate);
    Py_XDECREF(getstate);
#endif
    Py_XDECREF(reduce);
    Py_XDECREF(reduce_ex);
    Py_XDECREF(reduce_cython);
    Py_XDECREF(setstate);
    Py_XDECREF(setstate_cython);
    return ret;
}

/* TypeImport */
#ifndef __PYX_HAVE_RT_ImportType_3_1_2
#define __PYX_HAVE_RT_ImportType_3_1_2
static PyTypeObject *__Pyx_ImportType_3_1_2(PyObject *module, const char *module_name, const char *class_name,
    size_t size, size_t alignment, enum __Pyx_ImportType_CheckSize_3_1_2 check_size)
{
    PyObject *result = 0;
    Py_ssize_t basicsize;
    Py_ssize_t itemsize;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_basicsize;
    PyObject *py_itemsize;
#endif
    result = PyObject_GetAttrString(module, class_name);
    if (!result)
        goto bad;
    if (!PyType_Check(result)) {
        PyErr_Format(PyExc_TypeError,
            "%.200s.%.200s is not a type object",
            module_name, class_name);
        goto bad;
    }
#if !CYTHON_COMPILING_IN_LIMITED_API
    basicsize = ((PyTypeObject *)result)->tp_basicsize;
    itemsize = ((PyTypeObject *)result)->tp_itemsize;
#else
    if (size == 0) {
        return (PyTypeObject *)result;
    }
    py_basicsize = PyObject_GetAttrString(result, "__basicsize__");
    if (!py_basicsize)
        goto bad;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = 0;
    if (basicsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
    py_itemsize = PyObject_GetAttrString(result, "__itemsize__");
    if (!py_itemsize)
        goto bad;
    itemsize = PyLong_AsSsize_t(py_itemsize);
    Py_DECREF(py_itemsize);
    py_itemsize = 0;
    if (itemsize == (Py_ssize_t)-1 && PyErr_Occurred())
        goto bad;
#endif
    if (itemsize) {
        if (size % alignment) {
            alignment = size % alignment;
        }
        if (itemsize < (Py_ssize_t)alignment)
            itemsize = (Py_ssize_t)alignment;
    }
    if ((size_t)(basicsize + itemsize) < size) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd from PyObject",
            module_name, class_name, size, basicsize+itemsize);
        goto bad;
    }
    if (check_size == __Pyx_ImportType_CheckSize_Error_3_1_2 &&
            ((size_t)basicsize > size || (size_t)(basicsize + itemsize) < size)) {
        PyErr_Format(PyExc_ValueError,
            "%.200s.%.200s size changed, may indicate binary incompatibility. "
            "Expected %zd from C header, got %zd-%zd from PyObject",
            module_name, class_name, size, basicsize, basicsize+itemsize);
        goto bad;
    }
    else if (check_size == __Pyx_ImportType_CheckSize_Warn_3_1_2 && (size_t)basicsize > size) {
        if (PyErr_WarnFormat(NULL, 0,
                "%.200s.%.200s size changed, may indicate binary incompatibility. "
                "Expected %zd from C header, got %zd from PyObject",
                module_name, class_name, size, basicsize) < 0) {
            goto bad;
        }
    }
    return (PyTypeObject *)result;
bad:
    Py_XDECREF(result);
    return NULL;
}
#endif

/* Import */
static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
    PyObject *module = 0;
    PyObject *empty_dict = 0;
    PyObject *empty_list = 0;
    empty_dict = PyDict_New();
    if (unlikely(!empty_dict))
        goto bad;
    if (level == -1) {
        const char* package_sep = strchr(__Pyx_MODULE_NAME, '.');
        if (package_sep != (0)) {
            module = PyImport_ImportModuleLevelObject(
                name, __pyx_mstate_global->__pyx_d, empty_dict, from_list, 1);
            if (unlikely(!module)) {
                if (unlikely(!PyErr_ExceptionMatches(PyExc_ImportError)))
                    goto bad;
                PyErr_Clear();
            }
        }
        level = 0;
    }
    if (!module) {
        module = PyImport_ImportModuleLevelObject(
            name, __pyx_mstate_global->__pyx_d, empty_dict, from_list, level);
    }
bad:
    Py_XDECREF(empty_dict);
    Py_XDECREF(empty_list);
    return module;
}

/* ImportDottedModule */
static PyObject *__Pyx__ImportDottedModule_Error(PyObject *name, PyObject *parts_tuple, Py_ssize_t count) {
    PyObject *partial_name = NULL, *slice = NULL, *sep = NULL;
    Py_ssize_t size;
    if (unlikely(PyErr_Occurred())) {
        PyErr_Clear();
    }
#if CYTHON_ASSUME_SAFE_SIZE
    size = PyTuple_GET_SIZE(parts_tuple);
#else
    size = PyTuple_Size(parts_tuple);
    if (size < 0) goto bad;
#endif
    if (likely(size == count)) {
        partial_name = name;
    } else {
        slice = PySequence_GetSlice(parts_tuple, 0, count);
        if (unlikely(!slice))
            goto bad;
        sep = PyUnicode_FromStringAndSize(".", 1);
        if (unlikely(!sep))
            goto bad;
        partial_name = PyUnicode_Join(sep, slice);
    }
    PyErr_Format(
        PyExc_ModuleNotFoundError,
        "No module named '%U'", partial_name);
bad:
    Py_XDECREF(sep);
    Py_XDECREF(slice);
    Py_XDECREF(partial_name);
    return NULL;
}
static PyObject *__Pyx__ImportDottedModule_Lookup(PyObject *name) {
    PyObject *imported_module;
#if (CYTHON_COMPILING_IN_PYPY && PYPY_VERSION_NUM  < 0x07030400) ||\
        CYTHON_COMPILING_IN_GRAAL
    PyObject *modules = PyImport_GetModuleDict();
    if (unlikely(!modules))
        return NULL;
    imported_module = __Pyx_PyDict_GetItemStr(modules, name);
    Py_XINCREF(imported_module);
#else
    imported_module = PyImport_GetModule(name);
#endif
    return imported_module;
}
static PyObject *__Pyx_ImportDottedModule_WalkParts(PyObject *module, PyObject *name, PyObject *parts_tuple) {
    Py_ssize_t i, nparts;
#if CYTHON_ASSUME_SAFE_SIZE
    nparts = PyTuple_GET_SIZE(parts_tuple);
#else
    nparts = PyTuple_Size(parts_tuple);
    if (nparts < 0) return NULL;
#endif
    for (i=1; i < nparts && module; i++) {
        PyObject *part, *submodule;
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
        part = PyTuple_GET_ITEM(parts_tuple, i);
#else
        part = __Pyx_PySequence_ITEM(parts_tuple, i);
        if (!part) return NULL;
#endif
        submodule = __Pyx_PyObject_GetAttrStrNoError(module, part);
#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
        Py_DECREF(part);
#endif
        Py_DECREF(module);
        module = submodule;
    }
    if (unlikely(!module)) {
        return __Pyx__ImportDottedModule_Error(name, parts_tuple, i);
    }
    return module;
}
static PyObject *__Pyx__ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
    PyObject *imported_module;
    PyObject *module = __Pyx_Import(name, NULL, 0);
    if (!parts_tuple || unlikely(!module))
        return module;
    imported_module = __Pyx__ImportDottedModule_Lookup(name);
    if (likely(imported_module)) {
        Py_DECREF(module);
        return imported_module;
    }
    PyErr_Clear();
    return __Pyx_ImportDottedModule_WalkParts(module, name, parts_tuple);
}
static PyObject *__Pyx_ImportDottedModule(PyObject *name, PyObject *parts_tuple) {
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject *module = __Pyx__ImportDottedModule_Lookup(name);
    if (likely(module)) {
        PyObject *spec = __Pyx_PyObject_GetAttrStrNoError(module, __pyx_mstate_global->__pyx_n_u_spec);
        if (likely(spec)) {
            PyObject *unsafe = __Pyx_PyObject_GetAttrStrNoError(spec, __pyx_mstate_global->__pyx_n_u_initializing);
            if (likely(!unsafe || !__Pyx_PyObject_IsTrue(unsafe))) {
                Py_DECREF(spec);
                spec = NULL;
            }
            Py_XDECREF(unsafe);
        }
        if (likely(!spec)) {
            PyErr_Clear();
            return module;
        }
        Py_DECREF(spec);
        Py_DECREF(module);
    } else if (PyErr_Occurred()) {
        PyErr_Clear();
    }
#endif
    return __Pyx__ImportDottedModule(name, parts_tuple);
}

/* Py3UpdateBases */
static PyObject*
__Pyx_PEP560_update_bases(PyObject *bases)
{
    Py_ssize_t i, j, size_bases;
    PyObject *base = NULL, *meth, *new_base, *result, *new_bases = NULL;
#if CYTHON_ASSUME_SAFE_SIZE
    size_bases = PyTuple_GET_SIZE(bases);
#else
    size_bases = PyTuple_Size(bases);
    if (size_bases < 0) return NULL;
#endif
    for (i = 0; i < size_bases; i++) {
#if CYTHON_AVOID_BORROWED_REFS
        Py_CLEAR(base);
#endif
#if CYTHON_ASSUME_SAFE_MACROS
        base = PyTuple_GET_ITEM(bases, i);
#else
        base = PyTuple_GetItem(bases, i);
        if (!base) goto error;
#endif
#if CYTHON_AVOID_BORROWED_REFS
        Py_INCREF(base);
#endif
        if (PyType_Check(base)) {
            if (new_bases) {
                if (PyList_Append(new_bases, base) < 0) {
                    goto error;
                }
            }
            continue;
        }
        meth = __Pyx_PyObject_GetAttrStrNoError(base, __pyx_mstate_global->__pyx_n_u_mro_entries);
        if (!meth && PyErr_Occurred()) {
            goto error;
        }
        if (!meth) {
            if (new_bases) {
                if (PyList_Append(new_bases, base) < 0) {
                    goto error;
                }
            }
            continue;
        }
        new_base = __Pyx_PyObject_CallOneArg(meth, bases);
        Py_DECREF(meth);
        if (!new_base) {
            goto error;
        }
        if (!PyTuple_Check(new_base)) {
            PyErr_SetString(PyExc_TypeError,
                            "__mro_entries__ must return a tuple");
            Py_DECREF(new_base);
            goto error;
        }
        if (!new_bases) {
            if (!(new_bases = PyList_New(i))) {
                goto error;
            }
            for (j = 0; j < i; j++) {
                PyObject *base_from_list;
#if CYTHON_ASSUME_SAFE_MACROS
                base_from_list = PyTuple_GET_ITEM(bases, j);
                PyList_SET_ITEM(new_bases, j, base_from_list);
                Py_INCREF(base_from_list);
#else
                base_from_list = PyTuple_GetItem(bases, j);
                if (!base_from_list) goto error;
                Py_INCREF(base_from_list);
                if (PyList_SetItem(new_bases, j, base_from_list) < 0) goto error;
#endif
            }
        }
#if CYTHON_ASSUME_SAFE_SIZE
        j = PyList_GET_SIZE(new_bases);
#else
        j = PyList_Size(new_bases);
        if (j < 0) goto error;
#endif
        if (PyList_SetSlice(new_bases, j, j, new_base) < 0) {
            goto error;
        }
        Py_DECREF(new_base);
    }
    if (!new_bases) {
        Py_INCREF(bases);
        return bases;
    }
    result = PyList_AsTuple(new_bases);
    Py_DECREF(new_bases);
#if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(base);
#endif
    return result;
error:
    Py_XDECREF(new_bases);
#if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(base);
#endif
    return NULL;
}

/* CalculateMetaclass */
static PyObject *__Pyx_CalculateMetaclass(PyTypeObject *metaclass, PyObject *bases) {
    Py_ssize_t i, nbases;
#if CYTHON_ASSUME_SAFE_SIZE
    nbases = PyTuple_GET_SIZE(bases);
#else
    nbases = PyTuple_Size(bases);
    if (nbases < 0) return NULL;
#endif
    for (i=0; i < nbases; i++) {
        PyTypeObject *tmptype;
#if CYTHON_ASSUME_SAFE_MACROS
        PyObject *tmp = PyTuple_GET_ITEM(bases, i);
#else
        PyObject *tmp = PyTuple_GetItem(bases, i);
        if (!tmp) return NULL;
#endif
        tmptype = Py_TYPE(tmp);
        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) {
        metaclass = &PyType_Type;
    }
    Py_INCREF((PyObject*) metaclass);
    return (PyObject*) metaclass;
}

/* PyObjectLookupSpecial */
#if CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
static CYTHON_INLINE PyObject* __Pyx__PyObject_LookupSpecial(PyObject* obj, PyObject* attr_name, int with_error) {
    PyObject *res;
    PyTypeObject *tp = Py_TYPE(obj);
    res = _PyType_Lookup(tp, attr_name);
    if (likely(res)) {
        descrgetfunc f = Py_TYPE(res)->tp_descr_get;
        if (!f) {
            Py_INCREF(res);
        } else {
            res = f(res, obj, (PyObject *)tp);
        }
    } else if (with_error) {
        PyErr_SetObject(PyExc_AttributeError, attr_name);
    }
    return res;
}
#endif

/* Py3ClassCreate */
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_GetAttrStrNoError(metaclass, __pyx_mstate_global->__pyx_n_u_prepare);
        if (prep) {
            PyObject *pargs[3] = {NULL, name, bases};
            ns = __Pyx_PyObject_FastCallDict(prep, pargs+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw);
            Py_DECREF(prep);
        } else {
            if (unlikely(PyErr_Occurred()))
                return NULL;
            ns = PyDict_New();
        }
    } else {
        ns = PyDict_New();
    }
    if (unlikely(!ns))
        return NULL;
    if (unlikely(PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_module, modname) < 0)) goto bad;
    if (unlikely(PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_qualname, qualname) < 0)) goto bad;
    if (unlikely(doc && PyObject_SetItem(ns, __pyx_mstate_global->__pyx_n_u_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;
    PyObject *owned_metaclass = NULL;
    PyObject *margs[4] = {NULL, name, bases, dict};
    if (allow_py2_metaclass) {
        owned_metaclass = PyObject_GetItem(dict, __pyx_mstate_global->__pyx_n_u_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;
    }
    result = __Pyx_PyObject_FastCallDict(metaclass, margs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, mkw);
    Py_XDECREF(owned_metaclass);
    return result;
}

/* FetchSharedCythonModule */
static PyObject *__Pyx_FetchSharedCythonABIModule(void) {
    return __Pyx_PyImport_AddModuleRef(__PYX_ABI_MODULE_NAME);
}

/* dict_setdefault */
static CYTHON_INLINE PyObject *__Pyx_PyDict_SetDefault(PyObject *d, PyObject *key, PyObject *default_value,
                                                       int is_safe_type) {
    PyObject* value;
    CYTHON_MAYBE_UNUSED_VAR(is_safe_type);
#if CYTHON_COMPILING_IN_LIMITED_API
    value = PyObject_CallMethod(d, "setdefault", "OO", key, default_value);
#elif PY_VERSION_HEX >= 0x030d0000
    PyDict_SetDefaultRef(d, key, default_value, &value);
#else
    value = PyDict_SetDefault(d, key, default_value);
    if (unlikely(!value)) return NULL;
    Py_INCREF(value);
#endif
    return value;
}

/* FetchCommonType */
#if __PYX_LIMITED_VERSION_HEX < 0x030C0000
static PyObject* __Pyx_PyType_FromMetaclass(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) {
    PyObject *result = __Pyx_PyType_FromModuleAndSpec(module, spec, bases);
    if (result && metaclass) {
        PyObject *old_tp = (PyObject*)Py_TYPE(result);
    Py_INCREF((PyObject*)metaclass);
#if __PYX_LIMITED_VERSION_HEX >= 0x03090000
        Py_SET_TYPE(result, metaclass);
#else
        result->ob_type = metaclass;
#endif
        Py_DECREF(old_tp);
    }
    return result;
}
#else
#define __Pyx_PyType_FromMetaclass(me, mo, s, b) PyType_FromMetaclass(me, mo, s, b)
#endif
static int __Pyx_VerifyCachedType(PyObject *cached_type,
                               const char *name,
                               Py_ssize_t expected_basicsize) {
    Py_ssize_t basicsize;
    if (!PyType_Check(cached_type)) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s is not a type object", name);
        return -1;
    }
    if (expected_basicsize == 0) {
        return 0; // size is inherited, nothing useful to check
    }
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_basicsize;
    py_basicsize = PyObject_GetAttrString(cached_type, "__basicsize__");
    if (unlikely(!py_basicsize)) return -1;
    basicsize = PyLong_AsSsize_t(py_basicsize);
    Py_DECREF(py_basicsize);
    py_basicsize = NULL;
    if (unlikely(basicsize == (Py_ssize_t)-1) && PyErr_Occurred()) return -1;
#else
    basicsize = ((PyTypeObject*) cached_type)->tp_basicsize;
#endif
    if (basicsize != expected_basicsize) {
        PyErr_Format(PyExc_TypeError,
            "Shared Cython type %.200s has the wrong size, try recompiling",
            name);
        return -1;
    }
    return 0;
}
static PyTypeObject *__Pyx_FetchCommonTypeFromSpec(PyTypeObject *metaclass, PyObject *module, PyType_Spec *spec, PyObject *bases) {
    PyObject *abi_module = NULL, *cached_type = NULL, *abi_module_dict, *new_cached_type, *py_object_name;
    int get_item_ref_result;
    const char* object_name = strrchr(spec->name, '.');
    object_name = object_name ? object_name+1 : spec->name;
    py_object_name = PyUnicode_FromString(object_name);
    if (!py_object_name) return NULL;
    abi_module = __Pyx_FetchSharedCythonABIModule();
    if (!abi_module) goto done;
    abi_module_dict = PyModule_GetDict(abi_module);
    if (!abi_module_dict) goto done;
    get_item_ref_result = __Pyx_PyDict_GetItemRef(abi_module_dict, py_object_name, &cached_type);
    if (get_item_ref_result == 1) {
        if (__Pyx_VerifyCachedType(
              cached_type,
              object_name,
              spec->basicsize) < 0) {
            goto bad;
        }
        goto done;
    } else if (unlikely(get_item_ref_result == -1)) {
        goto bad;
    }
    CYTHON_UNUSED_VAR(module);
    cached_type = __Pyx_PyType_FromMetaclass(metaclass, abi_module, spec, bases);
    if (unlikely(!cached_type)) goto bad;
    if (unlikely(__Pyx_fix_up_extension_type_from_spec(spec, (PyTypeObject *) cached_type) < 0)) goto bad;
    new_cached_type = __Pyx_PyDict_SetDefault(abi_module_dict, py_object_name, cached_type, 1);
    if (unlikely(new_cached_type != cached_type)) {
        if (unlikely(!new_cached_type)) goto bad;
        Py_DECREF(cached_type);
        cached_type = new_cached_type;
        if (__Pyx_VerifyCachedType(
                cached_type,
                object_name,
                spec->basicsize) < 0) {
            goto bad;
        }
        goto done;
    } else {
        Py_DECREF(new_cached_type);
    }
done:
    Py_XDECREF(abi_module);
    Py_DECREF(py_object_name);
    assert(cached_type == NULL || PyType_Check(cached_type));
    return (PyTypeObject *) cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}

/* CommonTypesMetaclass */
PyObject* __pyx_CommonTypesMetaclass_get_module(CYTHON_UNUSED PyObject *self, CYTHON_UNUSED void* context) {
    return PyUnicode_FromString(__PYX_ABI_MODULE_NAME);
}
static PyGetSetDef __pyx_CommonTypesMetaclass_getset[] = {
    {"__module__", __pyx_CommonTypesMetaclass_get_module, NULL, NULL, NULL},
    {0, 0, 0, 0, 0}
};
static PyType_Slot __pyx_CommonTypesMetaclass_slots[] = {
    {Py_tp_getset, (void *)__pyx_CommonTypesMetaclass_getset},
    {0, 0}
};
static PyType_Spec __pyx_CommonTypesMetaclass_spec = {
    __PYX_TYPE_MODULE_PREFIX "_common_types_metatype",
    0,
    0,
#if PY_VERSION_HEX >= 0x030A0000
    Py_TPFLAGS_IMMUTABLETYPE |
    Py_TPFLAGS_DISALLOW_INSTANTIATION |
#endif
    Py_TPFLAGS_DEFAULT,
    __pyx_CommonTypesMetaclass_slots
};
static int __pyx_CommonTypesMetaclass_init(PyObject *module) {
    __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
    PyObject *bases = PyTuple_Pack(1, &PyType_Type);
    if (unlikely(!bases)) {
        return -1;
    }
    mstate->__pyx_CommonTypesMetaclassType = __Pyx_FetchCommonTypeFromSpec(NULL, module, &__pyx_CommonTypesMetaclass_spec, bases);
    if (unlikely(mstate->__pyx_CommonTypesMetaclassType == NULL)) {
        return -1;
    }
    return 0;
}

/* PyMethodNew */
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    PyObject *result;
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    #if __PYX_LIMITED_VERSION_HEX >= 0x030C0000
    {
        PyObject *args[] = {func, self};
        result = PyObject_Vectorcall(__pyx_mstate_global->__Pyx_CachedMethodType, args, 2, NULL);
    }
    #else
    result = PyObject_CallFunctionObjArgs(__pyx_mstate_global->__Pyx_CachedMethodType, func, self, NULL);
    #endif
    return result;
}
#else
static PyObject *__Pyx_PyMethod_New(PyObject *func, PyObject *self, PyObject *typ) {
    CYTHON_UNUSED_VAR(typ);
    if (!self)
        return __Pyx_NewRef(func);
    return PyMethod_New(func, self);
}
#endif

/* PyVectorcallFastCallDict */
#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL)
static PyObject *__Pyx_PyVectorcall_FastCallDict_kw(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
{
    PyObject *res = NULL;
    PyObject *kwnames;
    PyObject **newargs;
    PyObject **kwvalues;
    Py_ssize_t i, pos;
    size_t j;
    PyObject *key, *value;
    unsigned long keys_are_strings;
    #if !CYTHON_ASSUME_SAFE_SIZE
    Py_ssize_t nkw = PyDict_Size(kw);
    if (unlikely(nkw == -1)) return NULL;
    #else
    Py_ssize_t nkw = PyDict_GET_SIZE(kw);
    #endif
    newargs = (PyObject **)PyMem_Malloc((nargs + (size_t)nkw) * sizeof(args[0]));
    if (unlikely(newargs == NULL)) {
        PyErr_NoMemory();
        return NULL;
    }
    for (j = 0; j < nargs; j++) newargs[j] = args[j];
    kwnames = PyTuple_New(nkw);
    if (unlikely(kwnames == NULL)) {
        PyMem_Free(newargs);
        return NULL;
    }
    kwvalues = newargs + nargs;
    pos = i = 0;
    keys_are_strings = Py_TPFLAGS_UNICODE_SUBCLASS;
    while (PyDict_Next(kw, &pos, &key, &value)) {
        keys_are_strings &=
        #if CYTHON_COMPILING_IN_LIMITED_API
            PyType_GetFlags(Py_TYPE(key));
        #else
            Py_TYPE(key)->tp_flags;
        #endif
        Py_INCREF(key);
        Py_INCREF(value);
        #if !CYTHON_ASSUME_SAFE_MACROS
        if (unlikely(PyTuple_SetItem(kwnames, i, key) < 0)) goto cleanup;
        #else
        PyTuple_SET_ITEM(kwnames, i, key);
        #endif
        kwvalues[i] = value;
        i++;
    }
    if (unlikely(!keys_are_strings)) {
        PyErr_SetString(PyExc_TypeError, "keywords must be strings");
        goto cleanup;
    }
    res = vc(func, newargs, nargs, kwnames);
cleanup:
    Py_DECREF(kwnames);
    for (i = 0; i < nkw; i++)
        Py_DECREF(kwvalues[i]);
    PyMem_Free(newargs);
    return res;
}
static CYTHON_INLINE PyObject *__Pyx_PyVectorcall_FastCallDict(PyObject *func, __pyx_vectorcallfunc vc, PyObject *const *args, size_t nargs, PyObject *kw)
{
    Py_ssize_t kw_size =
        likely(kw == NULL) ?
        0 :
#if !CYTHON_ASSUME_SAFE_SIZE
        PyDict_Size(kw);
#else
        PyDict_GET_SIZE(kw);
#endif
    if (kw_size == 0) {
        return vc(func, args, nargs, NULL);
    }
#if !CYTHON_ASSUME_SAFE_SIZE
    else if (unlikely(kw_size == -1)) {
        return NULL;
    }
#endif
    return __Pyx_PyVectorcall_FastCallDict_kw(func, vc, args, nargs, kw);
}
#endif

/* CythonFunctionShared */
#if CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunctionNoMethod(PyObject *func, void (*cfunc)(void)) {
    if (__Pyx_CyFunction_Check(func)) {
        return PyCFunction_GetFunction(((__pyx_CyFunctionObject*)func)->func) == (PyCFunction) cfunc;
    } else if (PyCFunction_Check(func)) {
        return PyCFunction_GetFunction(func) == (PyCFunction) cfunc;
    }
    return 0;
}
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) {
    if ((PyObject*)Py_TYPE(func) == __pyx_mstate_global->__Pyx_CachedMethodType) {
        int result;
        PyObject *newFunc = PyObject_GetAttr(func, __pyx_mstate_global->__pyx_n_u_func);
        if (unlikely(!newFunc)) {
            PyErr_Clear(); // It's only an optimization, so don't throw an error
            return 0;
        }
        result = __Pyx__IsSameCyOrCFunctionNoMethod(newFunc, cfunc);
        Py_DECREF(newFunc);
        return result;
    }
    return __Pyx__IsSameCyOrCFunctionNoMethod(func, cfunc);
}
#else
static CYTHON_INLINE int __Pyx__IsSameCyOrCFunction(PyObject *func, void (*cfunc)(void)) {
    if (PyMethod_Check(func)) {
        func = PyMethod_GET_FUNCTION(func);
    }
    return __Pyx_CyOrPyCFunction_Check(func) && __Pyx_CyOrPyCFunction_GET_FUNCTION(func) == (PyCFunction) cfunc;
}
#endif
static CYTHON_INLINE void __Pyx__CyFunction_SetClassObj(__pyx_CyFunctionObject* f, PyObject* classobj) {
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    __Pyx_Py_XDECREF_SET(
        __Pyx_CyFunction_GetClassObj(f),
            ((classobj) ? __Pyx_NewRef(classobj) : NULL));
#else
    __Pyx_Py_XDECREF_SET(
        ((PyCMethodObject *) (f))->mm_class,
        (PyTypeObject*)((classobj) ? __Pyx_NewRef(classobj) : NULL));
#endif
}
static PyObject *
__Pyx_CyFunction_get_doc_locked(__pyx_CyFunctionObject *op)
{
    if (unlikely(op->func_doc == NULL)) {
#if CYTHON_COMPILING_IN_LIMITED_API
        op->func_doc = PyObject_GetAttrString(op->func, "__doc__");
        if (unlikely(!op->func_doc)) return NULL;
#else
        if (((PyCFunctionObject*)op)->m_ml->ml_doc) {
            op->func_doc = PyUnicode_FromString(((PyCFunctionObject*)op)->m_ml->ml_doc);
            if (unlikely(op->func_doc == NULL))
                return NULL;
        } else {
            Py_INCREF(Py_None);
            return Py_None;
        }
#endif
    }
    Py_INCREF(op->func_doc);
    return op->func_doc;
}
static PyObject *
__Pyx_CyFunction_get_doc(__pyx_CyFunctionObject *op, void *closure) {
    PyObject *result;
    CYTHON_UNUSED_VAR(closure);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_doc_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_doc(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (value == NULL) {
        value = Py_None;
    }
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_doc, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_name_locked(__pyx_CyFunctionObject *op)
{
    if (unlikely(op->func_name == NULL)) {
#if CYTHON_COMPILING_IN_LIMITED_API
        op->func_name = PyObject_GetAttrString(op->func, "__name__");
#else
        op->func_name = PyUnicode_InternFromString(((PyCFunctionObject*)op)->m_ml->ml_name);
#endif
        if (unlikely(op->func_name == NULL))
            return NULL;
    }
    Py_INCREF(op->func_name);
    return op->func_name;
}
static PyObject *
__Pyx_CyFunction_get_name(__pyx_CyFunctionObject *op, void *context)
{
    PyObject *result = NULL;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_name_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_name(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_name, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_qualname(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    PyObject *result;
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    Py_INCREF(op->func_qualname);
    result = op->func_qualname;
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_qualname(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_qualname, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_dict_locked(__pyx_CyFunctionObject *op)
{
    if (unlikely(op->func_dict == NULL)) {
        op->func_dict = PyDict_New();
        if (unlikely(op->func_dict == NULL))
            return NULL;
    }
    Py_INCREF(op->func_dict);
    return op->func_dict;
}
static PyObject *
__Pyx_CyFunction_get_dict(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    PyObject *result;
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_dict_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_dict(__pyx_CyFunctionObject *op, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL)) {
        PyErr_SetString(PyExc_TypeError,
               "function's dictionary may not be deleted");
        return -1;
    }
    if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
               "setting function's dictionary to a non-dict");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_dict, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_globals(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(op->func_globals);
    return op->func_globals;
}
static PyObject *
__Pyx_CyFunction_get_closure(__pyx_CyFunctionObject *op, void *context)
{
    CYTHON_UNUSED_VAR(op);
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(Py_None);
    return Py_None;
}
static PyObject *
__Pyx_CyFunction_get_code(__pyx_CyFunctionObject *op, void *context)
{
    PyObject* result = (op->func_code) ? op->func_code : Py_None;
    CYTHON_UNUSED_VAR(context);
    Py_INCREF(result);
    return result;
}
static int
__Pyx_CyFunction_init_defaults(__pyx_CyFunctionObject *op) {
    int result = 0;
    PyObject *res = op->defaults_getter((PyObject *) op);
    if (unlikely(!res))
        return -1;
    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
    op->defaults_tuple = PyTuple_GET_ITEM(res, 0);
    Py_INCREF(op->defaults_tuple);
    op->defaults_kwdict = PyTuple_GET_ITEM(res, 1);
    Py_INCREF(op->defaults_kwdict);
    #else
    op->defaults_tuple = __Pyx_PySequence_ITEM(res, 0);
    if (unlikely(!op->defaults_tuple)) result = -1;
    else {
        op->defaults_kwdict = __Pyx_PySequence_ITEM(res, 1);
        if (unlikely(!op->defaults_kwdict)) result = -1;
    }
    #endif
    Py_DECREF(res);
    return result;
}
static int
__Pyx_CyFunction_set_defaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value) {
        value = Py_None;
    } else if (unlikely(value != Py_None && !PyTuple_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__defaults__ must be set to a tuple object");
        return -1;
    }
    PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__defaults__ will not "
                 "currently affect the values used in function calls", 1);
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->defaults_tuple, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_defaults_locked(__pyx_CyFunctionObject *op) {
    PyObject* result = op->defaults_tuple;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
            result = op->defaults_tuple;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static PyObject *
__Pyx_CyFunction_get_defaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result = NULL;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_defaults_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_kwdefaults(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value) {
        value = Py_None;
    } else if (unlikely(value != Py_None && !PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__kwdefaults__ must be set to a dict object");
        return -1;
    }
    PyErr_WarnEx(PyExc_RuntimeWarning, "changes to cyfunction.__kwdefaults__ will not "
                 "currently affect the values used in function calls", 1);
    Py_INCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->defaults_kwdict, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults_locked(__pyx_CyFunctionObject *op) {
    PyObject* result = op->defaults_kwdict;
    if (unlikely(!result)) {
        if (op->defaults_getter) {
            if (unlikely(__Pyx_CyFunction_init_defaults(op) < 0)) return NULL;
            result = op->defaults_kwdict;
        } else {
            result = Py_None;
        }
    }
    Py_INCREF(result);
    return result;
}
static PyObject *
__Pyx_CyFunction_get_kwdefaults(__pyx_CyFunctionObject *op, void *context) {
    PyObject* result;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_kwdefaults_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static int
__Pyx_CyFunction_set_annotations(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    if (!value || value == Py_None) {
        value = NULL;
    } else if (unlikely(!PyDict_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__annotations__ must be set to a dict object");
        return -1;
    }
    Py_XINCREF(value);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    __Pyx_Py_XDECREF_SET(op->func_annotations, value);
    __Pyx_END_CRITICAL_SECTION();
    return 0;
}
static PyObject *
__Pyx_CyFunction_get_annotations_locked(__pyx_CyFunctionObject *op) {
    PyObject* result = op->func_annotations;
    if (unlikely(!result)) {
        result = PyDict_New();
        if (unlikely(!result)) return NULL;
        op->func_annotations = result;
    }
    Py_INCREF(result);
    return result;
}
static PyObject *
__Pyx_CyFunction_get_annotations(__pyx_CyFunctionObject *op, void *context) {
    PyObject *result;
    CYTHON_UNUSED_VAR(context);
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    result = __Pyx_CyFunction_get_annotations_locked(op);
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static PyObject *
__Pyx_CyFunction_get_is_coroutine_value(__pyx_CyFunctionObject *op) {
    int is_coroutine = op->flags & __Pyx_CYFUNCTION_COROUTINE;
    if (is_coroutine) {
        PyObject *is_coroutine_value, *module, *fromlist, *marker = __pyx_mstate_global->__pyx_n_u_is_coroutine;
        fromlist = PyList_New(1);
        if (unlikely(!fromlist)) return NULL;
        Py_INCREF(marker);
#if CYTHON_ASSUME_SAFE_MACROS
        PyList_SET_ITEM(fromlist, 0, marker);
#else
        if (unlikely(PyList_SetItem(fromlist, 0, marker) < 0)) {
            Py_DECREF(marker);
            Py_DECREF(fromlist);
            return NULL;
        }
#endif
        module = PyImport_ImportModuleLevelObject(__pyx_mstate_global->__pyx_n_u_asyncio_coroutines, NULL, NULL, fromlist, 0);
        Py_DECREF(fromlist);
        if (unlikely(!module)) goto ignore;
        is_coroutine_value = __Pyx_PyObject_GetAttrStr(module, marker);
        Py_DECREF(module);
        if (likely(is_coroutine_value)) {
            return is_coroutine_value;
        }
ignore:
        PyErr_Clear();
    }
    return __Pyx_PyBool_FromLong(is_coroutine);
}
static PyObject *
__Pyx_CyFunction_get_is_coroutine(__pyx_CyFunctionObject *op, void *context) {
    PyObject *result;
    CYTHON_UNUSED_VAR(context);
    if (op->func_is_coroutine) {
        return __Pyx_NewRef(op->func_is_coroutine);
    }
    result = __Pyx_CyFunction_get_is_coroutine_value(op);
    if (unlikely(!result))
        return NULL;
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    if (op->func_is_coroutine) {
        Py_DECREF(result);
        result = __Pyx_NewRef(op->func_is_coroutine);
    } else {
        op->func_is_coroutine = __Pyx_NewRef(result);
    }
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static void __Pyx_CyFunction_raise_argument_count_error(__pyx_CyFunctionObject *func, const char* message, Py_ssize_t size) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL);
    if (!py_name) return;
    PyErr_Format(PyExc_TypeError,
        "%.200S() %s (%" CYTHON_FORMAT_SSIZE_T "d given)",
        py_name, message, size);
    Py_DECREF(py_name);
#else
    const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name;
    PyErr_Format(PyExc_TypeError,
        "%.200s() %s (%" CYTHON_FORMAT_SSIZE_T "d given)",
        name, message, size);
#endif
}
static void __Pyx_CyFunction_raise_type_error(__pyx_CyFunctionObject *func, const char* message) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *py_name = __Pyx_CyFunction_get_name(func, NULL);
    if (!py_name) return;
    PyErr_Format(PyExc_TypeError,
        "%.200S() %s",
        py_name, message);
    Py_DECREF(py_name);
#else
    const char* name = ((PyCFunctionObject*)func)->m_ml->ml_name;
    PyErr_Format(PyExc_TypeError,
        "%.200s() %s",
        name, message);
#endif
}
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *
__Pyx_CyFunction_get_module(__pyx_CyFunctionObject *op, void *context) {
    CYTHON_UNUSED_VAR(context);
    return PyObject_GetAttrString(op->func, "__module__");
}
static int
__Pyx_CyFunction_set_module(__pyx_CyFunctionObject *op, PyObject* value, void *context) {
    CYTHON_UNUSED_VAR(context);
    return PyObject_SetAttrString(op->func, "__module__", value);
}
#endif
static PyGetSetDef __pyx_CyFunction_getsets[] = {
    {"func_doc", (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {"__doc__",  (getter)__Pyx_CyFunction_get_doc, (setter)__Pyx_CyFunction_set_doc, 0, 0},
    {"func_name", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {"__name__", (getter)__Pyx_CyFunction_get_name, (setter)__Pyx_CyFunction_set_name, 0, 0},
    {"__qualname__", (getter)__Pyx_CyFunction_get_qualname, (setter)__Pyx_CyFunction_set_qualname, 0, 0},
    {"func_dict", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {"__dict__", (getter)__Pyx_CyFunction_get_dict, (setter)__Pyx_CyFunction_set_dict, 0, 0},
    {"func_globals", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {"__globals__", (getter)__Pyx_CyFunction_get_globals, 0, 0, 0},
    {"func_closure", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {"__closure__", (getter)__Pyx_CyFunction_get_closure, 0, 0, 0},
    {"func_code", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {"__code__", (getter)__Pyx_CyFunction_get_code, 0, 0, 0},
    {"func_defaults", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {"__defaults__", (getter)__Pyx_CyFunction_get_defaults, (setter)__Pyx_CyFunction_set_defaults, 0, 0},
    {"__kwdefaults__", (getter)__Pyx_CyFunction_get_kwdefaults, (setter)__Pyx_CyFunction_set_kwdefaults, 0, 0},
    {"__annotations__", (getter)__Pyx_CyFunction_get_annotations, (setter)__Pyx_CyFunction_set_annotations, 0, 0},
    {"_is_coroutine", (getter)__Pyx_CyFunction_get_is_coroutine, 0, 0, 0},
#if CYTHON_COMPILING_IN_LIMITED_API
    {"__module__", (getter)__Pyx_CyFunction_get_module, (setter)__Pyx_CyFunction_set_module, 0, 0},
#endif
    {0, 0, 0, 0, 0}
};
static PyMemberDef __pyx_CyFunction_members[] = {
#if !CYTHON_COMPILING_IN_LIMITED_API
    {"__module__", T_OBJECT, offsetof(PyCFunctionObject, m_module), 0, 0},
#endif
    {"__dictoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_dict), READONLY, 0},
#if CYTHON_METH_FASTCALL
#if CYTHON_BACKPORT_VECTORCALL || CYTHON_COMPILING_IN_LIMITED_API
    {"__vectorcalloffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_vectorcall), READONLY, 0},
#else
    {"__vectorcalloffset__", T_PYSSIZET, offsetof(PyCFunctionObject, vectorcall), READONLY, 0},
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
    {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CyFunctionObject, func_weakreflist), READONLY, 0},
#else
    {"__weaklistoffset__", T_PYSSIZET, offsetof(PyCFunctionObject, m_weakreflist), READONLY, 0},
#endif
#endif
    {0, 0, 0,  0, 0}
};
static PyObject *
__Pyx_CyFunction_reduce(__pyx_CyFunctionObject *m, PyObject *args)
{
    PyObject *result = NULL;
    CYTHON_UNUSED_VAR(args);
    __Pyx_BEGIN_CRITICAL_SECTION(m);
    Py_INCREF(m->func_qualname);
    result = m->func_qualname;
    __Pyx_END_CRITICAL_SECTION();
    return result;
}
static PyMethodDef __pyx_CyFunction_methods[] = {
    {"__reduce__", (PyCFunction)__Pyx_CyFunction_reduce, METH_VARARGS, 0},
    {0, 0, 0, 0}
};
#if CYTHON_COMPILING_IN_LIMITED_API
#define __Pyx_CyFunction_weakreflist(cyfunc) ((cyfunc)->func_weakreflist)
#else
#define __Pyx_CyFunction_weakreflist(cyfunc) (((PyCFunctionObject*)cyfunc)->m_weakreflist)
#endif
static PyObject *__Pyx_CyFunction_Init(__pyx_CyFunctionObject *op, PyMethodDef *ml, int flags, PyObject* qualname,
                                       PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
#if !CYTHON_COMPILING_IN_LIMITED_API
    PyCFunctionObject *cf = (PyCFunctionObject*) op;
#endif
    if (unlikely(op == NULL))
        return NULL;
#if CYTHON_COMPILING_IN_LIMITED_API
    op->func = PyCFunction_NewEx(ml, (PyObject*)op, module);
    if (unlikely(!op->func)) return NULL;
#endif
    op->flags = flags;
    __Pyx_CyFunction_weakreflist(op) = NULL;
#if !CYTHON_COMPILING_IN_LIMITED_API
    cf->m_ml = ml;
    cf->m_self = (PyObject *) op;
#endif
    Py_XINCREF(closure);
    op->func_closure = closure;
#if !CYTHON_COMPILING_IN_LIMITED_API
    Py_XINCREF(module);
    cf->m_module = module;
#endif
    op->func_dict = NULL;
    op->func_name = NULL;
    Py_INCREF(qualname);
    op->func_qualname = qualname;
    op->func_doc = NULL;
#if PY_VERSION_HEX < 0x030900B1 || CYTHON_COMPILING_IN_LIMITED_API
    op->func_classobj = NULL;
#else
    ((PyCMethodObject*)op)->mm_class = NULL;
#endif
    op->func_globals = globals;
    Py_INCREF(op->func_globals);
    Py_XINCREF(code);
    op->func_code = code;
    op->defaults = NULL;
    op->defaults_tuple = NULL;
    op->defaults_kwdict = NULL;
    op->defaults_getter = NULL;
    op->func_annotations = NULL;
    op->func_is_coroutine = NULL;
#if CYTHON_METH_FASTCALL
    switch (ml->ml_flags & (METH_VARARGS | METH_FASTCALL | METH_NOARGS | METH_O | METH_KEYWORDS | METH_METHOD)) {
    case METH_NOARGS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_NOARGS;
        break;
    case METH_O:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_O;
        break;
    case METH_METHOD | METH_FASTCALL | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD;
        break;
    case METH_FASTCALL | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS;
        break;
    case METH_VARARGS | METH_KEYWORDS:
        __Pyx_CyFunction_func_vectorcall(op) = NULL;
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        Py_DECREF(op);
        return NULL;
    }
#endif
    return (PyObject *) op;
}
static int
__Pyx_CyFunction_clear(__pyx_CyFunctionObject *m)
{
    Py_CLEAR(m->func_closure);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_CLEAR(m->func);
#else
    Py_CLEAR(((PyCFunctionObject*)m)->m_module);
#endif
    Py_CLEAR(m->func_dict);
    Py_CLEAR(m->func_name);
    Py_CLEAR(m->func_qualname);
    Py_CLEAR(m->func_doc);
    Py_CLEAR(m->func_globals);
    Py_CLEAR(m->func_code);
#if !CYTHON_COMPILING_IN_LIMITED_API
#if PY_VERSION_HEX < 0x030900B1
    Py_CLEAR(__Pyx_CyFunction_GetClassObj(m));
#else
    {
        PyObject *cls = (PyObject*) ((PyCMethodObject *) (m))->mm_class;
        ((PyCMethodObject *) (m))->mm_class = NULL;
        Py_XDECREF(cls);
    }
#endif
#endif
    Py_CLEAR(m->defaults_tuple);
    Py_CLEAR(m->defaults_kwdict);
    Py_CLEAR(m->func_annotations);
    Py_CLEAR(m->func_is_coroutine);
    Py_CLEAR(m->defaults);
    return 0;
}
static void __Pyx__CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    if (__Pyx_CyFunction_weakreflist(m) != NULL)
        PyObject_ClearWeakRefs((PyObject *) m);
    __Pyx_CyFunction_clear(m);
    __Pyx_PyHeapTypeObject_GC_Del(m);
}
static void __Pyx_CyFunction_dealloc(__pyx_CyFunctionObject *m)
{
    PyObject_GC_UnTrack(m);
    __Pyx__CyFunction_dealloc(m);
}
static int __Pyx_CyFunction_traverse(__pyx_CyFunctionObject *m, visitproc visit, void *arg)
{
    {
        int e = __Pyx_call_type_traverse((PyObject*)m, 1, visit, arg);
        if (e) return e;
    }
    Py_VISIT(m->func_closure);
#if CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(m->func);
#else
    Py_VISIT(((PyCFunctionObject*)m)->m_module);
#endif
    Py_VISIT(m->func_dict);
    __Pyx_VISIT_CONST(m->func_name);
    __Pyx_VISIT_CONST(m->func_qualname);
    Py_VISIT(m->func_doc);
    Py_VISIT(m->func_globals);
    __Pyx_VISIT_CONST(m->func_code);
#if !CYTHON_COMPILING_IN_LIMITED_API
    Py_VISIT(__Pyx_CyFunction_GetClassObj(m));
#endif
    Py_VISIT(m->defaults_tuple);
    Py_VISIT(m->defaults_kwdict);
    Py_VISIT(m->func_is_coroutine);
    Py_VISIT(m->defaults);
    return 0;
}
static PyObject*
__Pyx_CyFunction_repr(__pyx_CyFunctionObject *op)
{
    PyObject *repr;
    __Pyx_BEGIN_CRITICAL_SECTION(op);
    repr = PyUnicode_FromFormat("<cyfunction %U at %p>",
                                op->func_qualname, (void *)op);
    __Pyx_END_CRITICAL_SECTION();
    return repr;
}
static PyObject * __Pyx_CyFunction_CallMethod(PyObject *func, PyObject *self, PyObject *arg, PyObject *kw) {
#if CYTHON_COMPILING_IN_LIMITED_API
    PyObject *f = ((__pyx_CyFunctionObject*)func)->func;
    PyCFunction meth;
    int flags;
    meth = PyCFunction_GetFunction(f);
    if (unlikely(!meth)) return NULL;
    flags = PyCFunction_GetFlags(f);
    if (unlikely(flags < 0)) return NULL;
#else
    PyCFunctionObject* f = (PyCFunctionObject*)func;
    PyCFunction meth = f->m_ml->ml_meth;
    int flags = f->m_ml->ml_flags;
#endif
    Py_ssize_t size;
    switch (flags & (METH_VARARGS | METH_KEYWORDS | METH_NOARGS | METH_O)) {
    case METH_VARARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0))
            return (*meth)(self, arg);
        break;
    case METH_VARARGS | METH_KEYWORDS:
        return (*(PyCFunctionWithKeywords)(void(*)(void))meth)(self, arg, kw);
    case METH_NOARGS:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_SIZE
            size = PyTuple_GET_SIZE(arg);
#else
            size = PyTuple_Size(arg);
            if (unlikely(size < 0)) return NULL;
#endif
            if (likely(size == 0))
                return (*meth)(self, NULL);
            __Pyx_CyFunction_raise_argument_count_error(
                (__pyx_CyFunctionObject*)func,
                "takes no arguments", size);
            return NULL;
        }
        break;
    case METH_O:
        if (likely(kw == NULL || PyDict_Size(kw) == 0)) {
#if CYTHON_ASSUME_SAFE_SIZE
            size = PyTuple_GET_SIZE(arg);
#else
            size = PyTuple_Size(arg);
            if (unlikely(size < 0)) return NULL;
#endif
            if (likely(size == 1)) {
                PyObject *result, *arg0;
                #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                arg0 = PyTuple_GET_ITEM(arg, 0);
                #else
                arg0 = __Pyx_PySequence_ITEM(arg, 0); if (unlikely(!arg0)) return NULL;
                #endif
                result = (*meth)(self, arg0);
                #if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS)
                Py_DECREF(arg0);
                #endif
                return result;
            }
            __Pyx_CyFunction_raise_argument_count_error(
                (__pyx_CyFunctionObject*)func,
                "takes exactly one argument", size);
            return NULL;
        }
        break;
    default:
        PyErr_SetString(PyExc_SystemError, "Bad call flags for CyFunction");
        return NULL;
    }
    __Pyx_CyFunction_raise_type_error(
        (__pyx_CyFunctionObject*)func, "takes no keyword arguments");
    return NULL;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *self, *result;
#if CYTHON_COMPILING_IN_LIMITED_API
    self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)func)->func);
    if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
    self = ((PyCFunctionObject*)func)->m_self;
#endif
    result = __Pyx_CyFunction_CallMethod(func, self, arg, kw);
    return result;
}
static PyObject *__Pyx_CyFunction_CallAsMethod(PyObject *func, PyObject *args, PyObject *kw) {
    PyObject *result;
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *) func;
#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL)
     __pyx_vectorcallfunc vc = __Pyx_CyFunction_func_vectorcall(cyfunc);
    if (vc) {
#if CYTHON_ASSUME_SAFE_MACROS && CYTHON_ASSUME_SAFE_SIZE
        return __Pyx_PyVectorcall_FastCallDict(func, vc, &PyTuple_GET_ITEM(args, 0), (size_t)PyTuple_GET_SIZE(args), kw);
#else
        (void) &__Pyx_PyVectorcall_FastCallDict;
        return PyVectorcall_Call(func, args, kw);
#endif
    }
#endif
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        Py_ssize_t argc;
        PyObject *new_args;
        PyObject *self;
#if CYTHON_ASSUME_SAFE_SIZE
        argc = PyTuple_GET_SIZE(args);
#else
        argc = PyTuple_Size(args);
        if (unlikely(argc < 0)) return NULL;
#endif
        new_args = PyTuple_GetSlice(args, 1, argc);
        if (unlikely(!new_args))
            return NULL;
        self = PyTuple_GetItem(args, 0);
        if (unlikely(!self)) {
            Py_DECREF(new_args);
            PyErr_Format(PyExc_TypeError,
                         "unbound method %.200S() needs an argument",
                         cyfunc->func_qualname);
            return NULL;
        }
        result = __Pyx_CyFunction_CallMethod(func, self, new_args, kw);
        Py_DECREF(new_args);
    } else {
        result = __Pyx_CyFunction_Call(func, args, kw);
    }
    return result;
}
#if CYTHON_METH_FASTCALL && (CYTHON_VECTORCALL || CYTHON_BACKPORT_VECTORCALL)
static CYTHON_INLINE int __Pyx_CyFunction_Vectorcall_CheckArgs(__pyx_CyFunctionObject *cyfunc, Py_ssize_t nargs, PyObject *kwnames)
{
    int ret = 0;
    if ((cyfunc->flags & __Pyx_CYFUNCTION_CCLASS) && !(cyfunc->flags & __Pyx_CYFUNCTION_STATICMETHOD)) {
        if (unlikely(nargs < 1)) {
            __Pyx_CyFunction_raise_type_error(
                cyfunc, "needs an argument");
            return -1;
        }
        ret = 1;
    }
    if (unlikely(kwnames) && unlikely(__Pyx_PyTuple_GET_SIZE(kwnames))) {
        __Pyx_CyFunction_raise_type_error(
            cyfunc, "takes no keyword arguments");
        return -1;
    }
    return ret;
}
static PyObject * __Pyx_CyFunction_Vectorcall_NOARGS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 0)) {
        __Pyx_CyFunction_raise_argument_count_error(
            cyfunc, "takes no arguments", nargs);
        return NULL;
    }
    return meth(self, NULL);
}
static PyObject * __Pyx_CyFunction_Vectorcall_O(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, kwnames)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    if (unlikely(nargs != 1)) {
        __Pyx_CyFunction_raise_argument_count_error(
            cyfunc, "takes exactly one argument", nargs);
        return NULL;
    }
    return meth(self, args[0]);
}
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    return ((__Pyx_PyCFunctionFastWithKeywords)(void(*)(void))meth)(self, args, nargs, kwnames);
}
static PyObject * __Pyx_CyFunction_Vectorcall_FASTCALL_KEYWORDS_METHOD(PyObject *func, PyObject *const *args, size_t nargsf, PyObject *kwnames)
{
    __pyx_CyFunctionObject *cyfunc = (__pyx_CyFunctionObject *)func;
    PyTypeObject *cls = (PyTypeObject *) __Pyx_CyFunction_GetClassObj(cyfunc);
#if CYTHON_BACKPORT_VECTORCALL
    Py_ssize_t nargs = (Py_ssize_t)nargsf;
#else
    Py_ssize_t nargs = PyVectorcall_NARGS(nargsf);
#endif
    PyObject *self;
#if CYTHON_COMPILING_IN_LIMITED_API
    PyCFunction meth = PyCFunction_GetFunction(cyfunc->func);
    if (unlikely(!meth)) return NULL;
#else
    PyCFunction meth = ((PyCFunctionObject*)cyfunc)->m_ml->ml_meth;
#endif
    switch (__Pyx_CyFunction_Vectorcall_CheckArgs(cyfunc, nargs, NULL)) {
    case 1:
        self = args[0];
        args += 1;
        nargs -= 1;
        break;
    case 0:
#if CYTHON_COMPILING_IN_LIMITED_API
        self = PyCFunction_GetSelf(((__pyx_CyFunctionObject*)cyfunc)->func);
        if (unlikely(!self) && PyErr_Occurred()) return NULL;
#else
        self = ((PyCFunctionObject*)cyfunc)->m_self;
#endif
        break;
    default:
        return NULL;
    }
    return ((__Pyx_PyCMethod)(void(*)(void))meth)(self, cls, args, (size_t)nargs, kwnames);
}
#endif
static PyType_Slot __pyx_CyFunctionType_slots[] = {
    {Py_tp_dealloc, (void *)__Pyx_CyFunction_dealloc},
    {Py_tp_repr, (void *)__Pyx_CyFunction_repr},
    {Py_tp_call, (void *)__Pyx_CyFunction_CallAsMethod},
    {Py_tp_traverse, (void *)__Pyx_CyFunction_traverse},
    {Py_tp_clear, (void *)__Pyx_CyFunction_clear},
    {Py_tp_methods, (void *)__pyx_CyFunction_methods},
    {Py_tp_members, (void *)__pyx_CyFunction_members},
    {Py_tp_getset, (void *)__pyx_CyFunction_getsets},
    {Py_tp_descr_get, (void *)__Pyx_PyMethod_New},
    {0, 0},
};
static PyType_Spec __pyx_CyFunctionType_spec = {
    __PYX_TYPE_MODULE_PREFIX "cython_function_or_method",
    sizeof(__pyx_CyFunctionObject),
    0,
#ifdef Py_TPFLAGS_METHOD_DESCRIPTOR
    Py_TPFLAGS_METHOD_DESCRIPTOR |
#endif
#if CYTHON_METH_FASTCALL
#if defined(Py_TPFLAGS_HAVE_VECTORCALL)
    Py_TPFLAGS_HAVE_VECTORCALL |
#elif defined(_Py_TPFLAGS_HAVE_VECTORCALL)
    _Py_TPFLAGS_HAVE_VECTORCALL |
#endif
#endif // CYTHON_METH_FASTCALL
#if PY_VERSION_HEX >= 0x030A0000
    Py_TPFLAGS_IMMUTABLETYPE |
#endif
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_BASETYPE,
    __pyx_CyFunctionType_slots
};
static int __pyx_CyFunction_init(PyObject *module) {
    __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
    mstate->__pyx_CyFunctionType = __Pyx_FetchCommonTypeFromSpec(
        mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_CyFunctionType_spec, NULL);
    if (unlikely(mstate->__pyx_CyFunctionType == NULL)) {
        return -1;
    }
    return 0;
}
static CYTHON_INLINE PyObject *__Pyx_CyFunction_InitDefaults(PyObject *func, PyTypeObject *defaults_type) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults = PyObject_CallObject((PyObject*)defaults_type, NULL); // _PyObject_New(defaults_type);
    if (unlikely(!m->defaults))
        return NULL;
    return m->defaults;
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *func, PyObject *tuple) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_tuple = tuple;
    Py_INCREF(tuple);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->defaults_kwdict = dict;
    Py_INCREF(dict);
}
static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *func, PyObject *dict) {
    __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *) func;
    m->func_annotations = dict;
    Py_INCREF(dict);
}

/* CythonFunction */
static PyObject *__Pyx_CyFunction_New(PyMethodDef *ml, int flags, PyObject* qualname,
                                      PyObject *closure, PyObject *module, PyObject* globals, PyObject* code) {
    PyObject *op = __Pyx_CyFunction_Init(
        PyObject_GC_New(__pyx_CyFunctionObject, __pyx_mstate_global->__pyx_CyFunctionType),
        ml, flags, qualname, closure, module, globals, code
    );
    if (likely(op)) {
        PyObject_GC_Track(op);
    }
    return op;
}

/* CyFunctionClassCell */
static int __Pyx_CyFunction_InitClassCell(PyObject *cyfunctions, PyObject *classobj) {
    Py_ssize_t i, count = __Pyx_PyList_GET_SIZE(cyfunctions);
    #if !CYTHON_ASSUME_SAFE_SIZE
    if (unlikely(count < 0)) return -1;
    #endif
    for (i = 0; i < count; i++) {
        __pyx_CyFunctionObject *m = (__pyx_CyFunctionObject *)
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && !CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS
            PyList_GET_ITEM(cyfunctions, i);
#else
            __Pyx_PySequence_ITEM(cyfunctions, i);
        if (unlikely(!m))
            return -1;
#endif
        __Pyx_CyFunction_SetClassObj(m, classobj);
#if !(CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS && !CYTHON_AVOID_THREAD_UNSAFE_BORROWED_REFS)
        Py_DECREF((PyObject*)m);
#endif
    }
    return 0;
}

/* CLineInTraceback */
#if CYTHON_CLINE_IN_TRACEBACK && CYTHON_CLINE_IN_TRACEBACK_RUNTIME
static int __Pyx_CLineForTraceback(PyThreadState *tstate, int c_line) {
    PyObject *use_cline;
    PyObject *ptype, *pvalue, *ptraceback;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject **cython_runtime_dict;
#endif
    CYTHON_MAYBE_UNUSED_VAR(tstate);
    if (unlikely(!__pyx_mstate_global->__pyx_cython_runtime)) {
        return c_line;
    }
    __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
#if CYTHON_COMPILING_IN_CPYTHON
    cython_runtime_dict = _PyObject_GetDictPtr(__pyx_mstate_global->__pyx_cython_runtime);
    if (likely(cython_runtime_dict)) {
        __Pyx_BEGIN_CRITICAL_SECTION(*cython_runtime_dict);
        __PYX_PY_DICT_LOOKUP_IF_MODIFIED(
            use_cline, *cython_runtime_dict,
            __Pyx_PyDict_GetItemStr(*cython_runtime_dict, __pyx_mstate_global->__pyx_n_u_cline_in_traceback))
        Py_XINCREF(use_cline);
        __Pyx_END_CRITICAL_SECTION();
    } else
#endif
    {
      PyObject *use_cline_obj = __Pyx_PyObject_GetAttrStrNoError(__pyx_mstate_global->__pyx_cython_runtime, __pyx_mstate_global->__pyx_n_u_cline_in_traceback);
      if (use_cline_obj) {
        use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True;
        Py_INCREF(use_cline);
        Py_DECREF(use_cline_obj);
      } else {
        PyErr_Clear();
        use_cline = NULL;
      }
    }
    if (!use_cline) {
        c_line = 0;
        (void) PyObject_SetAttr(__pyx_mstate_global->__pyx_cython_runtime, __pyx_mstate_global->__pyx_n_u_cline_in_traceback, Py_False);
    }
    else if (use_cline == Py_False || (use_cline != Py_True && PyObject_Not(use_cline) != 0)) {
        c_line = 0;
    }
    Py_XDECREF(use_cline);
    __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
    return c_line;
}
#endif

/* CodeObjectCache */
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 __Pyx_CachedCodeObjectType *__pyx__find_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line) {
    __Pyx_CachedCodeObjectType* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!code_cache->entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(code_cache->entries, code_cache->count, code_line);
    if (unlikely(pos >= code_cache->count) || unlikely(code_cache->entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = code_cache->entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static __Pyx_CachedCodeObjectType *__pyx_find_code_object(int code_line) {
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS
    (void)__pyx__find_code_object;
    return NULL; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just miss.
#else
    struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_nonatomic_int_type old_count = __pyx_atomic_incr_acq_rel(&code_cache->accessor_count);
    if (old_count < 0) {
        __pyx_atomic_decr_acq_rel(&code_cache->accessor_count);
        return NULL;
    }
#endif
    __Pyx_CachedCodeObjectType *result = __pyx__find_code_object(code_cache, code_line);
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_atomic_decr_acq_rel(&code_cache->accessor_count);
#endif
    return result;
#endif
}
static void __pyx__insert_code_object(struct __Pyx_CodeObjectCache *code_cache, int code_line, __Pyx_CachedCodeObjectType* code_object)
{
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = code_cache->entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            code_cache->entries = entries;
            code_cache->max_count = 64;
            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(code_cache->entries, code_cache->count, code_line);
    if ((pos < code_cache->count) && unlikely(code_cache->entries[pos].code_line == code_line)) {
        __Pyx_CachedCodeObjectType* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_INCREF(code_object);
        Py_DECREF(tmp);
        return;
    }
    if (code_cache->count == code_cache->max_count) {
        int new_max = code_cache->max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            code_cache->entries, ((size_t)new_max) * sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        code_cache->entries = entries;
        code_cache->max_count = new_max;
    }
    for (i=code_cache->count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    code_cache->count++;
    Py_INCREF(code_object);
}
static void __pyx_insert_code_object(int code_line, __Pyx_CachedCodeObjectType* code_object) {
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING && !CYTHON_ATOMICS
    (void)__pyx__insert_code_object;
    return; // Most implementation should have atomics. But otherwise, don't make it thread-safe, just fail.
#else
    struct __Pyx_CodeObjectCache *code_cache = &__pyx_mstate_global->__pyx_code_cache;
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_nonatomic_int_type expected = 0;
    if (!__pyx_atomic_int_cmp_exchange(&code_cache->accessor_count, &expected, INT_MIN)) {
        return;
    }
#endif
    __pyx__insert_code_object(code_cache, code_line, code_object);
#if CYTHON_COMPILING_IN_CPYTHON_FREETHREADING
    __pyx_atomic_sub(&code_cache->accessor_count, INT_MIN);
#endif
#endif
}

/* AddTraceback */
#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
#if PY_VERSION_HEX >= 0x030b00a6 && !CYTHON_COMPILING_IN_LIMITED_API && !defined(PYPY_VERSION)
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
#if CYTHON_COMPILING_IN_LIMITED_API
static PyObject *__Pyx_PyCode_Replace_For_AddTraceback(PyObject *code, PyObject *scratch_dict,
                                                       PyObject *firstlineno, PyObject *name) {
    PyObject *replace = NULL;
    if (unlikely(PyDict_SetItemString(scratch_dict, "co_firstlineno", firstlineno))) return NULL;
    if (unlikely(PyDict_SetItemString(scratch_dict, "co_name", name))) return NULL;
    replace = PyObject_GetAttrString(code, "replace");
    if (likely(replace)) {
        PyObject *result = PyObject_Call(replace, __pyx_mstate_global->__pyx_empty_tuple, scratch_dict);
        Py_DECREF(replace);
        return result;
    }
    PyErr_Clear();
    return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyObject *code_object = NULL, *py_py_line = NULL, *py_funcname = NULL, *dict = NULL;
    PyObject *replace = NULL, *getframe = NULL, *frame = NULL;
    PyObject *exc_type, *exc_value, *exc_traceback;
    int success = 0;
    if (c_line) {
        (void) __pyx_cfilenm;
        (void) __Pyx_CLineForTraceback(__Pyx_PyThreadState_Current, c_line);
    }
    PyErr_Fetch(&exc_type, &exc_value, &exc_traceback);
    code_object = __pyx_find_code_object(c_line ? -c_line : py_line);
    if (!code_object) {
        code_object = Py_CompileString("_getframe()", filename, Py_eval_input);
        if (unlikely(!code_object)) goto bad;
        py_py_line = PyLong_FromLong(py_line);
        if (unlikely(!py_py_line)) goto bad;
        py_funcname = PyUnicode_FromString(funcname);
        if (unlikely(!py_funcname)) goto bad;
        dict = PyDict_New();
        if (unlikely(!dict)) goto bad;
        {
            PyObject *old_code_object = code_object;
            code_object = __Pyx_PyCode_Replace_For_AddTraceback(code_object, dict, py_py_line, py_funcname);
            Py_DECREF(old_code_object);
        }
        if (unlikely(!code_object)) goto bad;
        __pyx_insert_code_object(c_line ? -c_line : py_line, code_object);
    } else {
        dict = PyDict_New();
    }
    getframe = PySys_GetObject("_getframe");
    if (unlikely(!getframe)) goto bad;
    if (unlikely(PyDict_SetItemString(dict, "_getframe", getframe))) goto bad;
    frame = PyEval_EvalCode(code_object, dict, dict);
    if (unlikely(!frame) || frame == Py_None) goto bad;
    success = 1;
  bad:
    PyErr_Restore(exc_type, exc_value, exc_traceback);
    Py_XDECREF(code_object);
    Py_XDECREF(py_py_line);
    Py_XDECREF(py_funcname);
    Py_XDECREF(dict);
    Py_XDECREF(replace);
    if (success) {
        PyTraceBack_Here(
            (struct _frame*)frame);
    }
    Py_XDECREF(frame);
}
#else
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
            const char *funcname, int c_line,
            int py_line, const char *filename) {
    PyCodeObject *py_code = NULL;
    PyObject *py_funcname = NULL;
    if (c_line) {
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        if (!py_funcname) goto bad;
        funcname = PyUnicode_AsUTF8(py_funcname);
        if (!funcname) goto bad;
    }
    py_code = PyCode_NewEmpty(filename, funcname, py_line);
    Py_XDECREF(py_funcname);
    return py_code;
bad:
    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;
    PyThreadState *tstate = __Pyx_PyThreadState_Current;
    PyObject *ptype, *pvalue, *ptraceback;
    if (c_line) {
        c_line = __Pyx_CLineForTraceback(tstate, c_line);
    }
    py_code = __pyx_find_code_object(c_line ? -c_line : py_line);
    if (!py_code) {
        __Pyx_ErrFetchInState(tstate, &ptype, &pvalue, &ptraceback);
        py_code = __Pyx_CreateCodeObjectForTraceback(
            funcname, c_line, py_line, filename);
        if (!py_code) {
            /* If the code object creation fails, then we should clear the
               fetched exception references and propagate the new exception */
            Py_XDECREF(ptype);
            Py_XDECREF(pvalue);
            Py_XDECREF(ptraceback);
            goto bad;
        }
        __Pyx_ErrRestoreInState(tstate, ptype, pvalue, ptraceback);
        __pyx_insert_code_object(c_line ? -c_line : py_line, py_code);
    }
    py_frame = PyFrame_New(
        tstate,            /*PyThreadState *tstate,*/
        py_code,           /*PyCodeObject *code,*/
        __pyx_mstate_global->__pyx_d,    /*PyObject *globals,*/
        0                  /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    __Pyx_PyFrame_SetLineNumber(py_frame, py_line);
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}
#endif

/* CIntFromPyVerify */
#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;\
    }

/* CIntFromPy */
static CYTHON_INLINE int __Pyx_PyLong_As_int(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        int val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyLong_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                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 && PY_VERSION_HEX < 0x030C00A7
        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))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(int) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(int, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                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))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(int) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(int, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        int val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (int) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (int) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (int) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (int) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(int) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((int) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(int) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((int) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((int) 1) << (sizeof(int) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (int) -1;
        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;
}

/* CIntFromPy */
static CYTHON_INLINE uint8_t __Pyx_PyLong_As_uint8_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint8_t neg_one = (uint8_t) -1, const_zero = (uint8_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        uint8_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (uint8_t) -1;
        val = __Pyx_PyLong_As_uint8_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint8_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(uint8_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) >= 2 * PyLong_SHIFT)) {
                            return (uint8_t) (((((uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint8_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) >= 3 * PyLong_SHIFT)) {
                            return (uint8_t) (((((((uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint8_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, 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(uint8_t) >= 4 * PyLong_SHIFT)) {
                            return (uint8_t) (((((((((uint8_t)digits[3]) << PyLong_SHIFT) | (uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (uint8_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(uint8_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint8_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(uint8_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint8_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint8_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(uint8_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint8_t) (((uint8_t)-1)*(((((uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(uint8_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint8_t) ((((((uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(uint8_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint8_t) (((uint8_t)-1)*(((((((uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint8_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint8_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint8_t) ((((((((uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(uint8_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, 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(uint8_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint8_t) (((uint8_t)-1)*(((((((((uint8_t)digits[3]) << PyLong_SHIFT) | (uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint8_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint8_t, 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(uint8_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint8_t) ((((((((((uint8_t)digits[3]) << PyLong_SHIFT) | (uint8_t)digits[2]) << PyLong_SHIFT) | (uint8_t)digits[1]) << PyLong_SHIFT) | (uint8_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(uint8_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint8_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(uint8_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint8_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        uint8_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (uint8_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (uint8_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (uint8_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (uint8_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(uint8_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((uint8_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(uint8_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((uint8_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((uint8_t) 1) << (sizeof(uint8_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (uint8_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to uint8_t");
    return (uint8_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to uint8_t");
    return (uint8_t) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint32_t(uint32_t value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint32_t neg_one = (uint32_t) -1, const_zero = (uint32_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(uint32_t) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint32_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(uint32_t) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(uint32_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(uint32_t),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint32_t));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint16_t(uint16_t value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint16_t neg_one = (uint16_t) -1, const_zero = (uint16_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(uint16_t) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint16_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(uint16_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(uint16_t) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(uint16_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(uint16_t),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint16_t));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_time_t(time_t value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const time_t neg_one = (time_t) -1, const_zero = (time_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(time_t) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(time_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(time_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(time_t) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(time_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(time_t),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(time_t));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_long(long value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(long) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(long) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(long) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(long) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(long));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE uint16_t __Pyx_PyLong_As_uint16_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint16_t neg_one = (uint16_t) -1, const_zero = (uint16_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        uint16_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (uint16_t) -1;
        val = __Pyx_PyLong_As_uint16_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint16_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(uint16_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) >= 2 * PyLong_SHIFT)) {
                            return (uint16_t) (((((uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint16_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) >= 3 * PyLong_SHIFT)) {
                            return (uint16_t) (((((((uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint16_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, 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(uint16_t) >= 4 * PyLong_SHIFT)) {
                            return (uint16_t) (((((((((uint16_t)digits[3]) << PyLong_SHIFT) | (uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (uint16_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(uint16_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint16_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(uint16_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint16_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint16_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(uint16_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint16_t) (((uint16_t)-1)*(((((uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(uint16_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint16_t) ((((((uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(uint16_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint16_t) (((uint16_t)-1)*(((((((uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint16_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint16_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint16_t) ((((((((uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(uint16_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, 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(uint16_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint16_t) (((uint16_t)-1)*(((((((((uint16_t)digits[3]) << PyLong_SHIFT) | (uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint16_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint16_t, 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(uint16_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint16_t) ((((((((((uint16_t)digits[3]) << PyLong_SHIFT) | (uint16_t)digits[2]) << PyLong_SHIFT) | (uint16_t)digits[1]) << PyLong_SHIFT) | (uint16_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(uint16_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint16_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(uint16_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint16_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        uint16_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (uint16_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (uint16_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (uint16_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (uint16_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(uint16_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((uint16_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(uint16_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((uint16_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((uint16_t) 1) << (sizeof(uint16_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (uint16_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to uint16_t");
    return (uint16_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to uint16_t");
    return (uint16_t) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_uint8_t(uint8_t value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint8_t neg_one = (uint8_t) -1, const_zero = (uint8_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(uint8_t) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(uint8_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(uint8_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(uint8_t) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(uint8_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(uint8_t),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(uint8_t));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_suseconds_t(suseconds_t value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const suseconds_t neg_one = (suseconds_t) -1, const_zero = (suseconds_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(suseconds_t) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(suseconds_t) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(suseconds_t) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(suseconds_t) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(suseconds_t) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(suseconds_t),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(suseconds_t));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* CIntFromPy */
static CYTHON_INLINE time_t __Pyx_PyLong_As_time_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const time_t neg_one = (time_t) -1, const_zero = (time_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        time_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (time_t) -1;
        val = __Pyx_PyLong_As_time_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(time_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(time_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(time_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(time_t) >= 2 * PyLong_SHIFT)) {
                            return (time_t) (((((time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(time_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(time_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(time_t) >= 3 * PyLong_SHIFT)) {
                            return (time_t) (((((((time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(time_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(time_t, 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(time_t) >= 4 * PyLong_SHIFT)) {
                            return (time_t) (((((((((time_t)digits[3]) << PyLong_SHIFT) | (time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (time_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(time_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(time_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(time_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(time_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(time_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(time_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(time_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(time_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (time_t) (((time_t)-1)*(((((time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(time_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(time_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(time_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (time_t) ((((((time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(time_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(time_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(time_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (time_t) (((time_t)-1)*(((((((time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(time_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(time_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(time_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (time_t) ((((((((time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(time_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(time_t, 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(time_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (time_t) (((time_t)-1)*(((((((((time_t)digits[3]) << PyLong_SHIFT) | (time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(time_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(time_t, 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(time_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (time_t) ((((((((((time_t)digits[3]) << PyLong_SHIFT) | (time_t)digits[2]) << PyLong_SHIFT) | (time_t)digits[1]) << PyLong_SHIFT) | (time_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(time_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(time_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(time_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(time_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        time_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (time_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (time_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (time_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (time_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(time_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((time_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(time_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((time_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((time_t) 1) << (sizeof(time_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (time_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to time_t");
    return (time_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to time_t");
    return (time_t) -1;
}

/* CIntFromPy */
static CYTHON_INLINE suseconds_t __Pyx_PyLong_As_suseconds_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const suseconds_t neg_one = (suseconds_t) -1, const_zero = (suseconds_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        suseconds_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (suseconds_t) -1;
        val = __Pyx_PyLong_As_suseconds_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(suseconds_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(suseconds_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(suseconds_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(suseconds_t) >= 2 * PyLong_SHIFT)) {
                            return (suseconds_t) (((((suseconds_t)digits[1]) << PyLong_SHIFT) | (suseconds_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(suseconds_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(suseconds_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(suseconds_t) >= 3 * PyLong_SHIFT)) {
                            return (suseconds_t) (((((((suseconds_t)digits[2]) << PyLong_SHIFT) | (suseconds_t)digits[1]) << PyLong_SHIFT) | (suseconds_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(suseconds_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(suseconds_t, 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(suseconds_t) >= 4 * PyLong_SHIFT)) {
                            return (suseconds_t) (((((((((suseconds_t)digits[3]) << PyLong_SHIFT) | (suseconds_t)digits[2]) << PyLong_SHIFT) | (suseconds_t)digits[1]) << PyLong_SHIFT) | (suseconds_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (suseconds_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(suseconds_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(suseconds_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(suseconds_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(suseconds_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(suseconds_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(suseconds_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(suseconds_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(suseconds_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (suseconds_t) (((suseconds_t)-1)*(((((suseconds_t)digits[1]) << PyLong_SHIFT) | (suseconds_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(suseconds_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(suseconds_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(suseconds_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (suseconds_t) ((((((suseconds_t)digits[1]) << PyLong_SHIFT) | (suseconds_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(suseconds_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(suseconds_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(suseconds_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (suseconds_t) (((suseconds_t)-1)*(((((((suseconds_t)digits[2]) << PyLong_SHIFT) | (suseconds_t)digits[1]) << PyLong_SHIFT) | (suseconds_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(suseconds_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(suseconds_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(suseconds_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (suseconds_t) ((((((((suseconds_t)digits[2]) << PyLong_SHIFT) | (suseconds_t)digits[1]) << PyLong_SHIFT) | (suseconds_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(suseconds_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(suseconds_t, 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(suseconds_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (suseconds_t) (((suseconds_t)-1)*(((((((((suseconds_t)digits[3]) << PyLong_SHIFT) | (suseconds_t)digits[2]) << PyLong_SHIFT) | (suseconds_t)digits[1]) << PyLong_SHIFT) | (suseconds_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(suseconds_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(suseconds_t, 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(suseconds_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (suseconds_t) ((((((((((suseconds_t)digits[3]) << PyLong_SHIFT) | (suseconds_t)digits[2]) << PyLong_SHIFT) | (suseconds_t)digits[1]) << PyLong_SHIFT) | (suseconds_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(suseconds_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(suseconds_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(suseconds_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(suseconds_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        suseconds_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (suseconds_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (suseconds_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (suseconds_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (suseconds_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(suseconds_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((suseconds_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(suseconds_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((suseconds_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((suseconds_t) 1) << (sizeof(suseconds_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (suseconds_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to suseconds_t");
    return (suseconds_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to suseconds_t");
    return (suseconds_t) -1;
}

/* CIntFromPy */
static CYTHON_INLINE uint32_t __Pyx_PyLong_As_uint32_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const uint32_t neg_one = (uint32_t) -1, const_zero = (uint32_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        uint32_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (uint32_t) -1;
        val = __Pyx_PyLong_As_uint32_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint32_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(uint32_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) >= 2 * PyLong_SHIFT)) {
                            return (uint32_t) (((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint32_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) >= 3 * PyLong_SHIFT)) {
                            return (uint32_t) (((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint32_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, 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(uint32_t) >= 4 * PyLong_SHIFT)) {
                            return (uint32_t) (((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0]));
                        }
                    }
                    break;
            }
        }
#endif
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (uint32_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(uint32_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint32_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(uint32_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint32_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(uint32_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(uint32_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint32_t) (((uint32_t)-1)*(((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(uint32_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (uint32_t) ((((((uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(uint32_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint32_t) (((uint32_t)-1)*(((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(uint32_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (uint32_t) ((((((((uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(uint32_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, 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(uint32_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint32_t) (((uint32_t)-1)*(((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(uint32_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(uint32_t, 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(uint32_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (uint32_t) ((((((((((uint32_t)digits[3]) << PyLong_SHIFT) | (uint32_t)digits[2]) << PyLong_SHIFT) | (uint32_t)digits[1]) << PyLong_SHIFT) | (uint32_t)digits[0])));
                        }
                    }
                    break;
            }
        }
#endif
        if ((sizeof(uint32_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint32_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(uint32_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(uint32_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        uint32_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (uint32_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (uint32_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (uint32_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (uint32_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(uint32_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((uint32_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(uint32_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((uint32_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((uint32_t) 1) << (sizeof(uint32_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (uint32_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to uint32_t");
    return (uint32_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to uint32_t");
    return (uint32_t) -1;
}

/* CIntFromPy */
static CYTHON_INLINE size_t __Pyx_PyLong_As_size_t(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const size_t neg_one = (size_t) -1, const_zero = (size_t) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        size_t val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (size_t) -1;
        val = __Pyx_PyLong_As_size_t(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                case 2:
                    if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) >= 2 * PyLong_SHIFT)) {
                            return (size_t) (((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) >= 3 * PyLong_SHIFT)) {
                            return (size_t) (((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0]));
                        }
                    }
                    break;
                case 4:
                    if ((8 * sizeof(size_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, 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(size_t) >= 4 * PyLong_SHIFT)) {
                            return (size_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
#if CYTHON_COMPILING_IN_CPYTHON && PY_VERSION_HEX < 0x030C00A7
        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 (size_t) -1;
            if (unlikely(result == 1))
                goto raise_neg_overflow;
        }
#endif
        if ((sizeof(size_t) <= sizeof(unsigned long))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned long, PyLong_AsUnsignedLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(size_t) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(size_t, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                case -2:
                    if ((8 * sizeof(size_t) - 1 > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 2:
                    if ((8 * sizeof(size_t) > 1 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 2 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                            return (size_t) ((((((size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -3:
                    if ((8 * sizeof(size_t) - 1 > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, long, -(long) (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case 3:
                    if ((8 * sizeof(size_t) > 2 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 3 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, unsigned long, (((((((unsigned long)digits[2]) << PyLong_SHIFT) | (unsigned long)digits[1]) << PyLong_SHIFT) | (unsigned long)digits[0])))
                        } else if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                            return (size_t) ((((((((size_t)digits[2]) << PyLong_SHIFT) | (size_t)digits[1]) << PyLong_SHIFT) | (size_t)digits[0])));
                        }
                    }
                    break;
                case -4:
                    if ((8 * sizeof(size_t) - 1 > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, 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(size_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (size_t) (((size_t)-1)*(((((((((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(size_t) > 3 * PyLong_SHIFT)) {
                        if ((8 * sizeof(unsigned long) > 4 * PyLong_SHIFT)) {
                            __PYX_VERIFY_RETURN_INT(size_t, 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(size_t) - 1 > 4 * PyLong_SHIFT)) {
                            return (size_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
        if ((sizeof(size_t) <= sizeof(long))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, long, PyLong_AsLong(x))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(size_t) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(size_t, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        size_t val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (size_t) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (size_t) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (size_t) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (size_t) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(size_t) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((size_t) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(size_t) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((size_t) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((size_t) 1) << (sizeof(size_t) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (size_t) -1;
        return val;
    }
raise_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "value too large to convert to size_t");
    return (size_t) -1;
raise_neg_overflow:
    PyErr_SetString(PyExc_OverflowError,
        "can't convert negative value to size_t");
    return (size_t) -1;
}

/* CIntToPy */
static CYTHON_INLINE PyObject* __Pyx_PyLong_From_int(int value) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const int neg_one = (int) -1, const_zero = (int) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(int) < sizeof(long)) {
            return PyLong_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
#if defined(HAVE_LONG_LONG) && !CYTHON_COMPILING_IN_PYPY
        } else if (sizeof(int) <= sizeof(unsigned PY_LONG_LONG)) {
            return PyLong_FromUnsignedLongLong((unsigned PY_LONG_LONG) value);
#endif
        }
    } else {
        if (sizeof(int) <= sizeof(long)) {
            return PyLong_FromLong((long) value);
#ifdef HAVE_LONG_LONG
        } else if (sizeof(int) <= sizeof(PY_LONG_LONG)) {
            return PyLong_FromLongLong((PY_LONG_LONG) value);
#endif
        }
    }
    {
        unsigned char *bytes = (unsigned char *)&value;
#if !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d00A4
        if (is_unsigned) {
            return PyLong_FromUnsignedNativeBytes(bytes, sizeof(value), -1);
        } else {
            return PyLong_FromNativeBytes(bytes, sizeof(value), -1);
        }
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX < 0x030d0000
        int one = 1; int little = (int)*(unsigned char *)&one;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
#else
        int one = 1; int little = (int)*(unsigned char *)&one;
        PyObject *from_bytes, *result = NULL, *kwds = NULL;
        PyObject *py_bytes = NULL, *order_str = NULL;
        from_bytes = PyObject_GetAttrString((PyObject*)&PyLong_Type, "from_bytes");
        if (!from_bytes) return NULL;
        py_bytes = PyBytes_FromStringAndSize((char*)bytes, sizeof(int));
        if (!py_bytes) goto limited_bad;
        order_str = PyUnicode_FromString(little ? "little" : "big");
        if (!order_str) goto limited_bad;
        {
            PyObject *args[3+(CYTHON_VECTORCALL ? 1 : 0)] = { NULL, py_bytes, order_str };
            if (!is_unsigned) {
                kwds = __Pyx_MakeVectorcallBuilderKwds(1);
                if (!kwds) goto limited_bad;
                if (__Pyx_VectorcallBuilder_AddArgStr("signed", __Pyx_NewRef(Py_True), kwds, args+3, 0) < 0) goto limited_bad;
            }
            result = __Pyx_Object_Vectorcall_CallFromBuilder(from_bytes, args+1, 2 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET, kwds);
        }
        limited_bad:
        Py_XDECREF(kwds);
        Py_XDECREF(order_str);
        Py_XDECREF(py_bytes);
        Py_XDECREF(from_bytes);
        return result;
#endif
    }
}

/* FormatTypeName */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030d0000
static __Pyx_TypeName
__Pyx_PyType_GetFullyQualifiedName(PyTypeObject* tp)
{
    PyObject *module = NULL, *name = NULL, *result = NULL;
    #if __PYX_LIMITED_VERSION_HEX < 0x030b0000
    name = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
                                               __pyx_mstate_global->__pyx_n_u_qualname);
    #else
    name = PyType_GetQualName(tp);
    #endif
    if (unlikely(name == NULL) || unlikely(!PyUnicode_Check(name))) goto bad;
    module = __Pyx_PyObject_GetAttrStr((PyObject *)tp,
                                               __pyx_mstate_global->__pyx_n_u_module);
    if (unlikely(module == NULL) || unlikely(!PyUnicode_Check(module))) goto bad;
    if (PyUnicode_CompareWithASCIIString(module, "builtins") == 0) {
        result = name;
        name = NULL;
        goto done;
    }
    result = PyUnicode_FromFormat("%U.%U", module, name);
    if (unlikely(result == NULL)) goto bad;
  done:
    Py_XDECREF(name);
    Py_XDECREF(module);
    return result;
  bad:
    PyErr_Clear();
    if (name) {
        result = name;
        name = NULL;
    } else {
        result = __Pyx_NewRef(__pyx_mstate_global->__pyx_kp_u__25);
    }
    goto done;
}
#endif

/* CIntFromPy */
static CYTHON_INLINE long __Pyx_PyLong_As_long(PyObject *x) {
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#endif
    const long neg_one = (long) -1, const_zero = (long) 0;
#ifdef __Pyx_HAS_GCC_DIAGNOSTIC
#pragma GCC diagnostic pop
#endif
    const int is_unsigned = neg_one > const_zero;
    if (unlikely(!PyLong_Check(x))) {
        long val;
        PyObject *tmp = __Pyx_PyNumber_Long(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyLong_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
    if (is_unsigned) {
#if CYTHON_USE_PYLONG_INTERNALS
        if (unlikely(__Pyx_PyLong_IsNeg(x))) {
            goto raise_neg_overflow;
        } else if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_upylong, __Pyx_PyLong_CompactValueUnsigned(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_DigitCount(x)) {
                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 && PY_VERSION_HEX < 0x030C00A7
        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))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(long) <= sizeof(unsigned PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, unsigned PY_LONG_LONG, PyLong_AsUnsignedLongLong(x))
#endif
        }
    } else {
#if CYTHON_USE_PYLONG_INTERNALS
        if (__Pyx_PyLong_IsCompact(x)) {
            __PYX_VERIFY_RETURN_INT(long, __Pyx_compact_pylong, __Pyx_PyLong_CompactValue(x))
        } else {
            const digit* digits = __Pyx_PyLong_Digits(x);
            assert(__Pyx_PyLong_DigitCount(x) > 1);
            switch (__Pyx_PyLong_SignedDigitCount(x)) {
                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))
#ifdef HAVE_LONG_LONG
        } else if ((sizeof(long) <= sizeof(PY_LONG_LONG))) {
            __PYX_VERIFY_RETURN_INT_EXC(long, PY_LONG_LONG, PyLong_AsLongLong(x))
#endif
        }
    }
    {
        long val;
        int ret = -1;
#if PY_VERSION_HEX >= 0x030d00A6 && !CYTHON_COMPILING_IN_LIMITED_API
        Py_ssize_t bytes_copied = PyLong_AsNativeBytes(
            x, &val, sizeof(val), Py_ASNATIVEBYTES_NATIVE_ENDIAN | (is_unsigned ? Py_ASNATIVEBYTES_UNSIGNED_BUFFER | Py_ASNATIVEBYTES_REJECT_NEGATIVE : 0));
        if (unlikely(bytes_copied == -1)) {
        } else if (unlikely(bytes_copied > (Py_ssize_t) sizeof(val))) {
            goto raise_overflow;
        } else {
            ret = 0;
        }
#elif PY_VERSION_HEX < 0x030d0000 && !(CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API) || defined(_PyLong_AsByteArray)
        int one = 1; int is_little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&val;
        ret = _PyLong_AsByteArray((PyLongObject *)x,
                                    bytes, sizeof(val),
                                    is_little, !is_unsigned);
#else
        PyObject *v;
        PyObject *stepval = NULL, *mask = NULL, *shift = NULL;
        int bits, remaining_bits, is_negative = 0;
        int chunk_size = (sizeof(long) < 8) ? 30 : 62;
        if (likely(PyLong_CheckExact(x))) {
            v = __Pyx_NewRef(x);
        } else {
            v = PyNumber_Long(x);
            if (unlikely(!v)) return (long) -1;
            assert(PyLong_CheckExact(v));
        }
        {
            int result = PyObject_RichCompareBool(v, Py_False, Py_LT);
            if (unlikely(result < 0)) {
                Py_DECREF(v);
                return (long) -1;
            }
            is_negative = result == 1;
        }
        if (is_unsigned && unlikely(is_negative)) {
            Py_DECREF(v);
            goto raise_neg_overflow;
        } else if (is_negative) {
            stepval = PyNumber_Invert(v);
            Py_DECREF(v);
            if (unlikely(!stepval))
                return (long) -1;
        } else {
            stepval = v;
        }
        v = NULL;
        val = (long) 0;
        mask = PyLong_FromLong((1L << chunk_size) - 1); if (unlikely(!mask)) goto done;
        shift = PyLong_FromLong(chunk_size); if (unlikely(!shift)) goto done;
        for (bits = 0; bits < (int) sizeof(long) * 8 - chunk_size; bits += chunk_size) {
            PyObject *tmp, *digit;
            long idigit;
            digit = PyNumber_And(stepval, mask);
            if (unlikely(!digit)) goto done;
            idigit = PyLong_AsLong(digit);
            Py_DECREF(digit);
            if (unlikely(idigit < 0)) goto done;
            val |= ((long) idigit) << bits;
            tmp = PyNumber_Rshift(stepval, shift);
            if (unlikely(!tmp)) goto done;
            Py_DECREF(stepval); stepval = tmp;
        }
        Py_DECREF(shift); shift = NULL;
        Py_DECREF(mask); mask = NULL;
        {
            long idigit = PyLong_AsLong(stepval);
            if (unlikely(idigit < 0)) goto done;
            remaining_bits = ((int) sizeof(long) * 8) - bits - (is_unsigned ? 0 : 1);
            if (unlikely(idigit >= (1L << remaining_bits)))
                goto raise_overflow;
            val |= ((long) idigit) << bits;
        }
        if (!is_unsigned) {
            if (unlikely(val & (((long) 1) << (sizeof(long) * 8 - 1))))
                goto raise_overflow;
            if (is_negative)
                val = ~val;
        }
        ret = 0;
    done:
        Py_XDECREF(shift);
        Py_XDECREF(mask);
        Py_XDECREF(stepval);
#endif
        if (unlikely(ret))
            return (long) -1;
        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;
}

/* FastTypeChecks */
#if CYTHON_COMPILING_IN_CPYTHON
static int __Pyx_InBases(PyTypeObject *a, PyTypeObject *b) {
    while (a) {
        a = __Pyx_PyType_GetSlot(a, tp_base, PyTypeObject*);
        if (a == b)
            return 1;
    }
    return b == &PyBaseObject_Type;
}
static CYTHON_INLINE int __Pyx_IsSubtype(PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (a == b) return 1;
    mro = a->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            if (PyTuple_GET_ITEM(mro, i) == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(a, b);
}
static CYTHON_INLINE int __Pyx_IsAnySubtype2(PyTypeObject *cls, PyTypeObject *a, PyTypeObject *b) {
    PyObject *mro;
    if (cls == a || cls == b) return 1;
    mro = cls->tp_mro;
    if (likely(mro)) {
        Py_ssize_t i, n;
        n = PyTuple_GET_SIZE(mro);
        for (i = 0; i < n; i++) {
            PyObject *base = PyTuple_GET_ITEM(mro, i);
            if (base == (PyObject *)a || base == (PyObject *)b)
                return 1;
        }
        return 0;
    }
    return __Pyx_InBases(cls, a) || __Pyx_InBases(cls, b);
}
static CYTHON_INLINE int __Pyx_inner_PyErr_GivenExceptionMatches2(PyObject *err, PyObject* exc_type1, PyObject *exc_type2) {
    if (exc_type1) {
        return __Pyx_IsAnySubtype2((PyTypeObject*)err, (PyTypeObject*)exc_type1, (PyTypeObject*)exc_type2);
    } else {
        return __Pyx_IsSubtype((PyTypeObject*)err, (PyTypeObject*)exc_type2);
    }
}
static int __Pyx_PyErr_GivenExceptionMatchesTuple(PyObject *exc_type, PyObject *tuple) {
    Py_ssize_t i, n;
    assert(PyExceptionClass_Check(exc_type));
    n = PyTuple_GET_SIZE(tuple);
    for (i=0; i<n; i++) {
        if (exc_type == PyTuple_GET_ITEM(tuple, i)) return 1;
    }
    for (i=0; i<n; i++) {
        PyObject *t = PyTuple_GET_ITEM(tuple, i);
        if (likely(PyExceptionClass_Check(t))) {
            if (__Pyx_inner_PyErr_GivenExceptionMatches2(exc_type, NULL, t)) return 1;
        } else {
        }
    }
    return 0;
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches(PyObject *err, PyObject* exc_type) {
    if (likely(err == exc_type)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        if (likely(PyExceptionClass_Check(exc_type))) {
            return __Pyx_inner_PyErr_GivenExceptionMatches2(err, NULL, exc_type);
        } else if (likely(PyTuple_Check(exc_type))) {
            return __Pyx_PyErr_GivenExceptionMatchesTuple(err, exc_type);
        } else {
        }
    }
    return PyErr_GivenExceptionMatches(err, exc_type);
}
static CYTHON_INLINE int __Pyx_PyErr_GivenExceptionMatches2(PyObject *err, PyObject *exc_type1, PyObject *exc_type2) {
    assert(PyExceptionClass_Check(exc_type1));
    assert(PyExceptionClass_Check(exc_type2));
    if (likely(err == exc_type1 || err == exc_type2)) return 1;
    if (likely(PyExceptionClass_Check(err))) {
        return __Pyx_inner_PyErr_GivenExceptionMatches2(err, exc_type1, exc_type2);
    }
    return (PyErr_GivenExceptionMatches(err, exc_type1) || PyErr_GivenExceptionMatches(err, exc_type2));
}
#endif

/* IterNextPlain */
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
static PyObject *__Pyx_GetBuiltinNext_LimitedAPI(void) {
    if (unlikely(!__pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache))
        __pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache = __Pyx_GetBuiltinName(__pyx_mstate_global->__pyx_n_u_next_2);
    return __pyx_mstate_global->__Pyx_GetBuiltinNext_LimitedAPI_cache;
}
#endif
static CYTHON_INLINE PyObject *__Pyx_PyIter_Next_Plain(PyObject *iterator) {
#if CYTHON_COMPILING_IN_LIMITED_API && __PYX_LIMITED_VERSION_HEX < 0x030A0000
    PyObject *result;
    PyObject *next = __Pyx_GetBuiltinNext_LimitedAPI();
    if (unlikely(!next)) return NULL;
    result = PyObject_CallFunctionObjArgs(next, iterator, NULL);
    return result;
#else
    (void)__Pyx_GetBuiltinName; // only for early limited API
    iternextfunc iternext = __Pyx_PyObject_GetIterNextFunc(iterator);
    assert(iternext);
    return iternext(iterator);
#endif
}

/* ReturnWithStopIteration */
static void __Pyx__ReturnWithStopIteration(PyObject* value, int async);
static CYTHON_INLINE void __Pyx_ReturnWithStopIteration(PyObject* value, int async, int iternext) {
    if (value == Py_None) {
        if (async || !iternext)
            PyErr_SetNone(async ? PyExc_StopAsyncIteration : PyExc_StopIteration);
        return;
    }
    __Pyx__ReturnWithStopIteration(value, async);
}
static void __Pyx__ReturnWithStopIteration(PyObject* value, int async) {
#if CYTHON_COMPILING_IN_CPYTHON
    __Pyx_PyThreadState_declare
#endif
    PyObject *exc;
    PyObject *exc_type = async ? PyExc_StopAsyncIteration : PyExc_StopIteration;
#if CYTHON_COMPILING_IN_CPYTHON
    if ((PY_VERSION_HEX >= (0x030C00A6)) || unlikely(PyTuple_Check(value) || PyExceptionInstance_Check(value))) {
        if (PY_VERSION_HEX >= (0x030e00A1)) {
            exc = __Pyx_PyObject_CallOneArg(exc_type, value);
        } else {
            PyObject *args_tuple = PyTuple_New(1);
            if (unlikely(!args_tuple)) return;
            Py_INCREF(value);
            PyTuple_SET_ITEM(args_tuple, 0, value);
            exc = PyObject_Call(exc_type, args_tuple, NULL);
            Py_DECREF(args_tuple);
        }
        if (unlikely(!exc)) return;
    } else {
        Py_INCREF(value);
        exc = value;
    }
    #if CYTHON_FAST_THREAD_STATE
    __Pyx_PyThreadState_assign
    #if CYTHON_USE_EXC_INFO_STACK
    if (!__pyx_tstate->exc_info->exc_value)
    #else
    if (!__pyx_tstate->exc_type)
    #endif
    {
        Py_INCREF(exc_type);
        __Pyx_ErrRestore(exc_type, exc, NULL);
        return;
    }
    #endif
#else
    exc = __Pyx_PyObject_CallOneArg(exc_type, value);
    if (unlikely(!exc)) return;
#endif
    PyErr_SetObject(exc_type, exc);
    Py_DECREF(exc);
}

/* CoroutineBase */
#if !CYTHON_COMPILING_IN_LIMITED_API
#include <frameobject.h>
#if PY_VERSION_HEX >= 0x030b00a6 && !defined(PYPY_VERSION)
  #ifndef Py_BUILD_CORE
    #define Py_BUILD_CORE 1
  #endif
  #include "internal/pycore_frame.h"
#endif
#endif // CYTHON_COMPILING_IN_LIMITED_API
static CYTHON_INLINE void
__Pyx_Coroutine_Undelegate(__pyx_CoroutineObject *gen) {
#if CYTHON_USE_AM_SEND
    gen->yieldfrom_am_send = NULL;
#endif
    Py_CLEAR(gen->yieldfrom);
}
static int __Pyx_PyGen__FetchStopIterationValue(PyThreadState *__pyx_tstate, PyObject **pvalue) {
    PyObject *et, *ev, *tb;
    PyObject *value = NULL;
    CYTHON_UNUSED_VAR(__pyx_tstate);
    __Pyx_ErrFetch(&et, &ev, &tb);
    if (!et) {
        Py_XDECREF(tb);
        Py_XDECREF(ev);
        Py_INCREF(Py_None);
        *pvalue = Py_None;
        return 0;
    }
    if (likely(et == PyExc_StopIteration)) {
        if (!ev) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
        else if (likely(__Pyx_IS_TYPE(ev, (PyTypeObject*)PyExc_StopIteration))) {
            #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL
            value = PyObject_GetAttr(ev, __pyx_mstate_global->__pyx_n_u_value);
            if (unlikely(!value)) goto limited_api_failure;
            #else
            value = ((PyStopIterationObject *)ev)->value;
            Py_INCREF(value);
            #endif
            Py_DECREF(ev);
        }
        else if (unlikely(PyTuple_Check(ev))) {
            Py_ssize_t tuple_size = __Pyx_PyTuple_GET_SIZE(ev);
            #if !CYTHON_ASSUME_SAFE_SIZE
            if (unlikely(tuple_size < 0)) {
                Py_XDECREF(tb);
                Py_DECREF(ev);
                Py_DECREF(et);
                return -1;
            }
            #endif
            if (tuple_size >= 1) {
#if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
                value = PyTuple_GET_ITEM(ev, 0);
                Py_INCREF(value);
#elif CYTHON_ASSUME_SAFE_MACROS
                value = PySequence_ITEM(ev, 0);
#else
                value = PySequence_GetItem(ev, 0);
                if (!value) goto limited_api_failure;
#endif
            } else {
                Py_INCREF(Py_None);
                value = Py_None;
            }
            Py_DECREF(ev);
        }
        else if (!__Pyx_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration)) {
            value = ev;
        }
        if (likely(value)) {
            Py_XDECREF(tb);
            Py_DECREF(et);
            *pvalue = value;
            return 0;
        }
    } else if (!__Pyx_PyErr_GivenExceptionMatches(et, PyExc_StopIteration)) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    PyErr_NormalizeException(&et, &ev, &tb);
    if (unlikely(!PyObject_TypeCheck(ev, (PyTypeObject*)PyExc_StopIteration))) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    Py_XDECREF(tb);
    Py_DECREF(et);
#if CYTHON_COMPILING_IN_LIMITED_API
    value = PyObject_GetAttr(ev, __pyx_mstate_global->__pyx_n_u_value);
#else
    value = ((PyStopIterationObject *)ev)->value;
    Py_INCREF(value);
#endif
    Py_DECREF(ev);
#if CYTHON_COMPILING_IN_LIMITED_API
    if (unlikely(!value)) return -1;
#endif
    *pvalue = value;
    return 0;
#if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_GRAAL || !CYTHON_ASSUME_SAFE_MACROS
  limited_api_failure:
    Py_XDECREF(et);
    Py_XDECREF(tb);
    Py_XDECREF(ev);
    return -1;
#endif
}
static CYTHON_INLINE
__Pyx_PySendResult __Pyx_Coroutine_status_from_result(PyObject **retval) {
    if (*retval) {
        return PYGEN_NEXT;
    } else if (likely(__Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, retval) == 0)) {
        return PYGEN_RETURN;
    } else {
        return PYGEN_ERROR;
    }
}
static CYTHON_INLINE
void __Pyx_Coroutine_ExceptionClear(__Pyx_ExcInfoStruct *exc_state) {
#if PY_VERSION_HEX >= 0x030B00a4
    Py_CLEAR(exc_state->exc_value);
#else
    PyObject *t, *v, *tb;
    t = exc_state->exc_type;
    v = exc_state->exc_value;
    tb = exc_state->exc_traceback;
    exc_state->exc_type = NULL;
    exc_state->exc_value = NULL;
    exc_state->exc_traceback = NULL;
    Py_XDECREF(t);
    Py_XDECREF(v);
    Py_XDECREF(tb);
#endif
}
#define __Pyx_Coroutine_AlreadyRunningError(gen)  (__Pyx__Coroutine_AlreadyRunningError(gen), (PyObject*)NULL)
static void __Pyx__Coroutine_AlreadyRunningError(__pyx_CoroutineObject *gen) {
    const char *msg;
    CYTHON_MAYBE_UNUSED_VAR(gen);
    if ((0)) {
    #ifdef __Pyx_Coroutine_USED
    } else if (__Pyx_Coroutine_Check((PyObject*)gen)) {
        msg = "coroutine already executing";
    #endif
    #ifdef __Pyx_AsyncGen_USED
    } else if (__Pyx_AsyncGen_CheckExact((PyObject*)gen)) {
        msg = "async generator already executing";
    #endif
    } else {
        msg = "generator already executing";
    }
    PyErr_SetString(PyExc_ValueError, msg);
}
static void __Pyx_Coroutine_AlreadyTerminatedError(PyObject *gen, PyObject *value, int closing) {
    CYTHON_MAYBE_UNUSED_VAR(gen);
    CYTHON_MAYBE_UNUSED_VAR(closing);
    #ifdef __Pyx_Coroutine_USED
    if (!closing && __Pyx_Coroutine_Check(gen)) {
        PyErr_SetString(PyExc_RuntimeError, "cannot reuse already awaited coroutine");
    } else
    #endif
    if (value) {
        #ifdef __Pyx_AsyncGen_USED
        if (__Pyx_AsyncGen_CheckExact(gen))
            PyErr_SetNone(PyExc_StopAsyncIteration);
        else
        #endif
        PyErr_SetNone(PyExc_StopIteration);
    }
}
static
__Pyx_PySendResult __Pyx_Coroutine_SendEx(__pyx_CoroutineObject *self, PyObject *value, PyObject **result, int closing) {
    __Pyx_PyThreadState_declare
    PyThreadState *tstate;
    __Pyx_ExcInfoStruct *exc_state;
    PyObject *retval;
    assert(__Pyx_Coroutine_get_is_running(self));  // Callers should ensure is_running
    if (unlikely(self->resume_label == -1)) {
        __Pyx_Coroutine_AlreadyTerminatedError((PyObject*)self, value, closing);
        return PYGEN_ERROR;
    }
#if CYTHON_FAST_THREAD_STATE
    __Pyx_PyThreadState_assign
    tstate = __pyx_tstate;
#else
    tstate = __Pyx_PyThreadState_Current;
#endif
    exc_state = &self->gi_exc_state;
    if (exc_state->exc_value) {
        #if CYTHON_COMPILING_IN_LIMITED_API || CYTHON_COMPILING_IN_PYPY
        #else
        PyObject *exc_tb;
        #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON
        exc_tb = PyException_GetTraceback(exc_state->exc_value);
        #elif PY_VERSION_HEX >= 0x030B00a4
        exc_tb = ((PyBaseExceptionObject*) exc_state->exc_value)->traceback;
        #else
        exc_tb = exc_state->exc_traceback;
        #endif
        if (exc_tb) {
            PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
            PyFrameObject *f = tb->tb_frame;
            assert(f->f_back == NULL);
            #if PY_VERSION_HEX >= 0x030B00A1
            f->f_back = PyThreadState_GetFrame(tstate);
            #else
            Py_XINCREF(tstate->frame);
            f->f_back = tstate->frame;
            #endif
            #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_CPYTHON
            Py_DECREF(exc_tb);
            #endif
        }
        #endif
    }
#if CYTHON_USE_EXC_INFO_STACK
    exc_state->previous_item = tstate->exc_info;
    tstate->exc_info = exc_state;
#else
    if (exc_state->exc_type) {
        __Pyx_ExceptionSwap(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
    } else {
        __Pyx_Coroutine_ExceptionClear(exc_state);
        __Pyx_ExceptionSave(&exc_state->exc_type, &exc_state->exc_value, &exc_state->exc_traceback);
    }
#endif
    retval = self->body(self, tstate, value);
#if CYTHON_USE_EXC_INFO_STACK
    exc_state = &self->gi_exc_state;
    tstate->exc_info = exc_state->previous_item;
    exc_state->previous_item = NULL;
    __Pyx_Coroutine_ResetFrameBackpointer(exc_state);
#endif
    *result = retval;
    if (self->resume_label == -1) {
        return likely(retval) ? PYGEN_RETURN : PYGEN_ERROR;
    }
    return PYGEN_NEXT;
}
static CYTHON_INLINE void __Pyx_Coroutine_ResetFrameBackpointer(__Pyx_ExcInfoStruct *exc_state) {
#if CYTHON_COMPILING_IN_PYPY || CYTHON_COMPILING_IN_LIMITED_API
    CYTHON_UNUSED_VAR(exc_state);
#else
    PyObject *exc_tb;
    #if PY_VERSION_HEX >= 0x030B00a4
    if (!exc_state->exc_value) return;
    exc_tb = PyException_GetTraceback(exc_state->exc_value);
    #else
    exc_tb = exc_state->exc_traceback;
    #endif
    if (likely(exc_tb)) {
        PyTracebackObject *tb = (PyTracebackObject *) exc_tb;
        PyFrameObject *f = tb->tb_frame;
        Py_CLEAR(f->f_back);
        #if PY_VERSION_HEX >= 0x030B00a4
        Py_DECREF(exc_tb);
        #endif
    }
#endif
}
#define __Pyx_Coroutine_MethodReturnFromResult(gen, result, retval, iternext)\
    ((result) == PYGEN_NEXT ? (retval) : __Pyx__Coroutine_MethodReturnFromResult(gen, result, retval, iternext))
static PyObject *
__Pyx__Coroutine_MethodReturnFromResult(PyObject* gen, __Pyx_PySendResult result, PyObject *retval, int iternext) {
    CYTHON_MAYBE_UNUSED_VAR(gen);
    if (likely(result == PYGEN_RETURN)) {
        int is_async = 0;
        #ifdef __Pyx_AsyncGen_USED
        is_async = __Pyx_AsyncGen_CheckExact(gen);
        #endif
        __Pyx_ReturnWithStopIteration(retval, is_async, iternext);
        Py_XDECREF(retval);
    }
    return NULL;
}
#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE
PyObject *__Pyx_PyGen_Send(PyGenObject *gen, PyObject *arg) {
#if PY_VERSION_HEX <= 0x030A00A1
    return _PyGen_Send(gen, arg);
#else
    PyObject *result;
    if (PyIter_Send((PyObject*)gen, arg ? arg : Py_None, &result) == PYGEN_RETURN) {
        if (PyAsyncGen_CheckExact(gen)) {
            assert(result == Py_None);
            PyErr_SetNone(PyExc_StopAsyncIteration);
        }
        else if (result == Py_None) {
            PyErr_SetNone(PyExc_StopIteration);
        }
        else {
#if PY_VERSION_HEX < 0x030d00A1
            _PyGen_SetStopIterationValue(result);
#else
            if (!PyTuple_Check(result) && !PyExceptionInstance_Check(result)) {
                PyErr_SetObject(PyExc_StopIteration, result);
            } else {
                PyObject *exc = __Pyx_PyObject_CallOneArg(PyExc_StopIteration, result);
                if (likely(exc != NULL)) {
                    PyErr_SetObject(PyExc_StopIteration, exc);
                    Py_DECREF(exc);
                }
            }
#endif
        }
        Py_DECREF(result);
        result = NULL;
    }
    return result;
#endif
}
#endif
static CYTHON_INLINE __Pyx_PySendResult
__Pyx_Coroutine_FinishDelegation(__pyx_CoroutineObject *gen, PyObject** retval) {
    __Pyx_PySendResult result;
    PyObject *val = NULL;
    assert(__Pyx_Coroutine_get_is_running(gen));
    __Pyx_Coroutine_Undelegate(gen);
    __Pyx_PyGen__FetchStopIterationValue(__Pyx_PyThreadState_Current, &val);
    result = __Pyx_Coroutine_SendEx(gen, val, retval, 0);
    Py_XDECREF(val);
    return result;
}
#if CYTHON_USE_AM_SEND
static __Pyx_PySendResult
__Pyx_Coroutine_SendToDelegate(__pyx_CoroutineObject *gen, __Pyx_pyiter_sendfunc gen_am_send, PyObject *value, PyObject **retval) {
    PyObject *ret = NULL;
    __Pyx_PySendResult delegate_result, result;
    assert(__Pyx_Coroutine_get_is_running(gen));
    delegate_result = gen_am_send(gen->yieldfrom, value, &ret);
    if (delegate_result == PYGEN_NEXT) {
        assert (ret != NULL);
        *retval = ret;
        return PYGEN_NEXT;
    }
    assert (delegate_result != PYGEN_ERROR || ret == NULL);
    __Pyx_Coroutine_Undelegate(gen);
    result = __Pyx_Coroutine_SendEx(gen, ret, retval, 0);
    Py_XDECREF(ret);
    return result;
}
#endif
static PyObject *__Pyx_Coroutine_Send(PyObject *self, PyObject *value) {
    PyObject *retval = NULL;
    __Pyx_PySendResult result = __Pyx_Coroutine_AmSend(self, value, &retval);
    return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 0);
}
static __Pyx_PySendResult
__Pyx_Coroutine_AmSend(PyObject *self, PyObject *value, PyObject **retval) {
    __Pyx_PySendResult result;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) {
        *retval = __Pyx_Coroutine_AlreadyRunningError(gen);
        return PYGEN_ERROR;
    }
    #if CYTHON_USE_AM_SEND
    if (gen->yieldfrom_am_send) {
        result = __Pyx_Coroutine_SendToDelegate(gen, gen->yieldfrom_am_send, value, retval);
    } else
    #endif
    if (gen->yieldfrom) {
        PyObject *yf = gen->yieldfrom;
        PyObject *ret;
      #if !CYTHON_USE_AM_SEND
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_Check(yf)) {
            ret = __Pyx_Coroutine_Send(yf, value);
        } else
        #endif
        #ifdef __Pyx_AsyncGen_USED
        if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
            ret = __Pyx_async_gen_asend_send(yf, value);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON
        if (PyGen_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        if (PyCoro_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, value == Py_None ? NULL : value);
        } else
        #endif
      #endif
        {
            #if !CYTHON_COMPILING_IN_LIMITED_API || __PYX_LIMITED_VERSION_HEX >= 0x03080000
            if (value == Py_None && PyIter_Check(yf))
                ret = __Pyx_PyIter_Next_Plain(yf);
            else
            #endif
                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_mstate_global->__pyx_n_u_send, value);
        }
        if (likely(ret)) {
            __Pyx_Coroutine_unset_is_running(gen);
            *retval = ret;
            return PYGEN_NEXT;
        }
        result = __Pyx_Coroutine_FinishDelegation(gen, retval);
    } else {
        result = __Pyx_Coroutine_SendEx(gen, value, retval, 0);
    }
    __Pyx_Coroutine_unset_is_running(gen);
    return result;
}
static int __Pyx_Coroutine_CloseIter(__pyx_CoroutineObject *gen, PyObject *yf) {
    __Pyx_PySendResult result;
    PyObject *retval = NULL;
    CYTHON_UNUSED_VAR(gen);
    assert(__Pyx_Coroutine_get_is_running(gen));
    #ifdef __Pyx_Generator_USED
    if (__Pyx_Generator_CheckExact(yf)) {
        result = __Pyx_Coroutine_Close(yf, &retval);
    } else
    #endif
    #ifdef __Pyx_Coroutine_USED
    if (__Pyx_Coroutine_Check(yf)) {
        result = __Pyx_Coroutine_Close(yf, &retval);
    } else
    if (__Pyx_CoroutineAwait_CheckExact(yf)) {
        result = __Pyx_CoroutineAwait_Close((__pyx_CoroutineAwaitObject*)yf);
    } else
    #endif
    #ifdef __Pyx_AsyncGen_USED
    if (__pyx_PyAsyncGenASend_CheckExact(yf)) {
        retval = __Pyx_async_gen_asend_close(yf, NULL);
        result = PYGEN_RETURN;
    } else
    if (__pyx_PyAsyncGenAThrow_CheckExact(yf)) {
        retval = __Pyx_async_gen_athrow_close(yf, NULL);
        result = PYGEN_RETURN;
    } else
    #endif
    {
        PyObject *meth;
        result = PYGEN_RETURN;
        meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_mstate_global->__pyx_n_u_close);
        if (unlikely(!meth)) {
            if (unlikely(PyErr_Occurred())) {
                PyErr_WriteUnraisable(yf);
            }
        } else {
            retval = __Pyx_PyObject_CallNoArg(meth);
            Py_DECREF(meth);
            if (unlikely(!retval)) {
                result = PYGEN_ERROR;
            }
        }
    }
    Py_XDECREF(retval);
    return result == PYGEN_ERROR ? -1 : 0;
}
static PyObject *__Pyx_Generator_Next(PyObject *self) {
    __Pyx_PySendResult result;
    PyObject *retval = NULL;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) {
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    }
    #if CYTHON_USE_AM_SEND
    if (gen->yieldfrom_am_send) {
        result = __Pyx_Coroutine_SendToDelegate(gen, gen->yieldfrom_am_send, Py_None, &retval);
    } else
    #endif
    if (gen->yieldfrom) {
        PyObject *yf = gen->yieldfrom;
        PyObject *ret;
        #ifdef __Pyx_Generator_USED
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Generator_Next(yf);
        } else
        #endif
        #ifdef __Pyx_Coroutine_USED
        if (__Pyx_Coroutine_CheckExact(yf)) {
            ret = __Pyx_Coroutine_Send(yf, Py_None);
        } else
        #endif
        #if CYTHON_COMPILING_IN_CPYTHON && (PY_VERSION_HEX < 0x030A00A3 || !CYTHON_USE_AM_SEND)
        if (PyGen_CheckExact(yf)) {
            ret = __Pyx_PyGen_Send((PyGenObject*)yf, NULL);
        } else
        #endif
            ret = __Pyx_PyIter_Next_Plain(yf);
        if (likely(ret)) {
            __Pyx_Coroutine_unset_is_running(gen);
            return ret;
        }
        result = __Pyx_Coroutine_FinishDelegation(gen, &retval);
    } else {
        result = __Pyx_Coroutine_SendEx(gen, Py_None, &retval, 0);
    }
    __Pyx_Coroutine_unset_is_running(gen);
    return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 1);
}
static PyObject *__Pyx_Coroutine_Close_Method(PyObject *self, PyObject *arg) {
    PyObject *retval = NULL;
    __Pyx_PySendResult result;
    CYTHON_UNUSED_VAR(arg);
    result = __Pyx_Coroutine_Close(self, &retval);
    if (unlikely(result == PYGEN_ERROR))
        return NULL;
    Py_XDECREF(retval);
    Py_RETURN_NONE;
}
static __Pyx_PySendResult
__Pyx_Coroutine_Close(PyObject *self, PyObject **retval) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    __Pyx_PySendResult result;
    PyObject *yf;
    int err = 0;
    if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) {
        *retval = __Pyx_Coroutine_AlreadyRunningError(gen);
        return PYGEN_ERROR;
    }
    yf = gen->yieldfrom;
    if (yf) {
        Py_INCREF(yf);
        err = __Pyx_Coroutine_CloseIter(gen, yf);
        __Pyx_Coroutine_Undelegate(gen);
        Py_DECREF(yf);
    }
    if (err == 0)
        PyErr_SetNone(PyExc_GeneratorExit);
    result = __Pyx_Coroutine_SendEx(gen, NULL, retval, 1);
    if (result == PYGEN_ERROR) {
        __Pyx_PyThreadState_declare
        __Pyx_PyThreadState_assign
        __Pyx_Coroutine_unset_is_running(gen);
        if (!__Pyx_PyErr_Occurred()) {
            return PYGEN_RETURN;
        } else if (likely(__Pyx_PyErr_ExceptionMatches2(PyExc_GeneratorExit, PyExc_StopIteration))) {
            __Pyx_PyErr_Clear();
            return PYGEN_RETURN;
        }
        return PYGEN_ERROR;
    } else if (likely(result == PYGEN_RETURN && *retval == Py_None)) {
        __Pyx_Coroutine_unset_is_running(gen);
        return PYGEN_RETURN;
    } else {
        const char *msg;
        Py_DECREF(*retval);
        *retval = NULL;
        if ((0)) {
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_Coroutine_Check(self)) {
            msg = "coroutine ignored GeneratorExit";
        #endif
        #ifdef __Pyx_AsyncGen_USED
        } else if (__Pyx_AsyncGen_CheckExact(self)) {
            msg = "async generator ignored GeneratorExit";
        #endif
        } else {
            msg = "generator ignored GeneratorExit";
        }
        PyErr_SetString(PyExc_RuntimeError, msg);
        __Pyx_Coroutine_unset_is_running(gen);
        return PYGEN_ERROR;
    }
}
static PyObject *__Pyx__Coroutine_Throw(PyObject *self, PyObject *typ, PyObject *val, PyObject *tb,
                                        PyObject *args, int close_on_genexit) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject *yf;
    if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen)))
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    yf = gen->yieldfrom;
    if (yf) {
        __Pyx_PySendResult result;
        PyObject *ret;
        Py_INCREF(yf);
        if (__Pyx_PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit) && close_on_genexit) {
            int err = __Pyx_Coroutine_CloseIter(gen, yf);
            Py_DECREF(yf);
            __Pyx_Coroutine_Undelegate(gen);
            if (err < 0)
                goto propagate_exception;
            goto throw_here;
        }
        if (0
        #ifdef __Pyx_Generator_USED
            || __Pyx_Generator_CheckExact(yf)
        #endif
        #ifdef __Pyx_Coroutine_USED
            || __Pyx_Coroutine_Check(yf)
        #endif
            ) {
            ret = __Pyx__Coroutine_Throw(yf, typ, val, tb, args, close_on_genexit);
        #ifdef __Pyx_Coroutine_USED
        } else if (__Pyx_CoroutineAwait_CheckExact(yf)) {
            ret = __Pyx__Coroutine_Throw(((__pyx_CoroutineAwaitObject*)yf)->coroutine, typ, val, tb, args, close_on_genexit);
        #endif
        } else {
            PyObject *meth = __Pyx_PyObject_GetAttrStrNoError(yf, __pyx_mstate_global->__pyx_n_u_throw);
            if (unlikely(!meth)) {
                Py_DECREF(yf);
                if (unlikely(PyErr_Occurred())) {
                    __Pyx_Coroutine_unset_is_running(gen);
                    return NULL;
                }
                __Pyx_Coroutine_Undelegate(gen);
                goto throw_here;
            }
            if (likely(args)) {
                ret = __Pyx_PyObject_Call(meth, args, NULL);
            } else {
                PyObject *cargs[4] = {NULL, typ, val, tb};
                ret = __Pyx_PyObject_FastCall(meth, cargs+1, 3 | __Pyx_PY_VECTORCALL_ARGUMENTS_OFFSET);
            }
            Py_DECREF(meth);
        }
        Py_DECREF(yf);
        if (ret) {
            __Pyx_Coroutine_unset_is_running(gen);
            return ret;
        }
        result = __Pyx_Coroutine_FinishDelegation(gen, &ret);
        __Pyx_Coroutine_unset_is_running(gen);
        return __Pyx_Coroutine_MethodReturnFromResult(self, result, ret, 0);
    }
throw_here:
    __Pyx_Raise(typ, val, tb, NULL);
propagate_exception:
    {
        PyObject *retval = NULL;
        __Pyx_PySendResult result = __Pyx_Coroutine_SendEx(gen, NULL, &retval, 0);
        __Pyx_Coroutine_unset_is_running(gen);
        return __Pyx_Coroutine_MethodReturnFromResult(self, result, retval, 0);
    }
}
static PyObject *__Pyx_Coroutine_Throw(PyObject *self, PyObject *args) {
    PyObject *typ;
    PyObject *val = NULL;
    PyObject *tb = NULL;
    if (unlikely(!PyArg_UnpackTuple(args, "throw", 1, 3, &typ, &val, &tb)))
        return NULL;
    return __Pyx__Coroutine_Throw(self, typ, val, tb, args, 1);
}
static CYTHON_INLINE int __Pyx_Coroutine_traverse_excstate(__Pyx_ExcInfoStruct *exc_state, visitproc visit, void *arg) {
#if PY_VERSION_HEX >= 0x030B00a4
    Py_VISIT(exc_state->exc_value);
#else
    Py_VISIT(exc_state->exc_type);
    Py_VISIT(exc_state->exc_value);
    Py_VISIT(exc_state->exc_traceback);
#endif
    return 0;
}
static int __Pyx_Coroutine_traverse(__pyx_CoroutineObject *gen, visitproc visit, void *arg) {
    {
        int e = __Pyx_call_type_traverse((PyObject*)gen, 1, visit, arg);
        if (e) return e;
    }
    Py_VISIT(gen->closure);
    Py_VISIT(gen->classobj);
    Py_VISIT(gen->yieldfrom);
    return __Pyx_Coroutine_traverse_excstate(&gen->gi_exc_state, visit, arg);
}
static int __Pyx_Coroutine_clear(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    Py_CLEAR(gen->closure);
    Py_CLEAR(gen->classobj);
    __Pyx_Coroutine_Undelegate(gen);
    __Pyx_Coroutine_ExceptionClear(&gen->gi_exc_state);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        Py_CLEAR(((__pyx_PyAsyncGenObject*)gen)->ag_finalizer);
    }
#endif
    Py_CLEAR(gen->gi_code);
    Py_CLEAR(gen->gi_frame);
    Py_CLEAR(gen->gi_name);
    Py_CLEAR(gen->gi_qualname);
    Py_CLEAR(gen->gi_modulename);
    return 0;
}
static void __Pyx_Coroutine_dealloc(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    PyObject_GC_UnTrack(gen);
    if (gen->gi_weakreflist != NULL)
        PyObject_ClearWeakRefs(self);
    if (gen->resume_label >= 0) {
        PyObject_GC_Track(self);
#if CYTHON_USE_TP_FINALIZE
        if (unlikely(PyObject_CallFinalizerFromDealloc(self)))
#else
        {
            destructor del = __Pyx_PyObject_GetSlot(gen, tp_del, destructor);
            if (del) del(self);
        }
        if (unlikely(Py_REFCNT(self) > 0))
#endif
        {
            return;
        }
        PyObject_GC_UnTrack(self);
    }
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        /* We have to handle this case for asynchronous generators
           right here, because this code has to be between UNTRACK
           and GC_Del. */
        Py_CLEAR(((__pyx_PyAsyncGenObject*)self)->ag_finalizer);
    }
#endif
    __Pyx_Coroutine_clear(self);
    __Pyx_PyHeapTypeObject_GC_Del(gen);
}
#if CYTHON_USE_TP_FINALIZE
static void __Pyx_Coroutine_del(PyObject *self) {
    PyObject *error_type, *error_value, *error_traceback;
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject *) self;
    __Pyx_PyThreadState_declare
    if (gen->resume_label < 0) {
        return;
    }
    __Pyx_PyThreadState_assign
    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
#ifdef __Pyx_AsyncGen_USED
    if (__Pyx_AsyncGen_CheckExact(self)) {
        __pyx_PyAsyncGenObject *agen = (__pyx_PyAsyncGenObject*)self;
        PyObject *finalizer = agen->ag_finalizer;
        if (finalizer && !agen->ag_closed) {
            PyObject *res = __Pyx_PyObject_CallOneArg(finalizer, self);
            if (unlikely(!res)) {
                PyErr_WriteUnraisable(self);
            } else {
                Py_DECREF(res);
            }
            __Pyx_ErrRestore(error_type, error_value, error_traceback);
            return;
        }
    }
#endif
    if (unlikely(gen->resume_label == 0 && !error_value)) {
#ifdef __Pyx_Coroutine_USED
#ifdef __Pyx_Generator_USED
    if (!__Pyx_Generator_CheckExact(self))
#endif
        {
        PyObject_GC_UnTrack(self);
        if (unlikely(PyErr_WarnFormat(PyExc_RuntimeWarning, 1, "coroutine '%.50S' was never awaited", gen->gi_qualname) < 0))
            PyErr_WriteUnraisable(self);
        PyObject_GC_Track(self);
        }
#endif
    } else {
        PyObject *retval = NULL;
        __Pyx_PySendResult result = __Pyx_Coroutine_Close(self, &retval);
        if (result == PYGEN_ERROR) {
            PyErr_WriteUnraisable(self);
        } else {
            Py_XDECREF(retval);
        }
    }
    __Pyx_ErrRestore(error_type, error_value, error_traceback);
}
#endif
static PyObject *
__Pyx_Coroutine_get_name(__pyx_CoroutineObject *self, void *context)
{
    PyObject *name = self->gi_name;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_name(__pyx_CoroutineObject *self, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__name__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(self->gi_name, value);
    return 0;
}
static PyObject *
__Pyx_Coroutine_get_qualname(__pyx_CoroutineObject *self, void *context)
{
    PyObject *name = self->gi_qualname;
    CYTHON_UNUSED_VAR(context);
    if (unlikely(!name)) name = Py_None;
    Py_INCREF(name);
    return name;
}
static int
__Pyx_Coroutine_set_qualname(__pyx_CoroutineObject *self, PyObject *value, void *context)
{
    CYTHON_UNUSED_VAR(context);
    if (unlikely(value == NULL || !PyUnicode_Check(value))) {
        PyErr_SetString(PyExc_TypeError,
                        "__qualname__ must be set to a string object");
        return -1;
    }
    Py_INCREF(value);
    __Pyx_Py_XDECREF_SET(self->gi_qualname, value);
    return 0;
}
static PyObject *
__Pyx__Coroutine_get_frame(__pyx_CoroutineObject *self)
{
#if !CYTHON_COMPILING_IN_LIMITED_API
    PyObject *frame;
    #if PY_VERSION_HEX >= 0x030d0000
    Py_BEGIN_CRITICAL_SECTION(self);
    #endif
    frame = self->gi_frame;
    if (!frame) {
        if (unlikely(!self->gi_code)) {
            Py_RETURN_NONE;
        }
        PyObject *globals = PyDict_New();
        if (unlikely(!globals)) return NULL;
        frame = (PyObject *) PyFrame_New(
            PyThreadState_Get(),            /*PyThreadState *tstate,*/
            (PyCodeObject*) self->gi_code,  /*PyCodeObject *code,*/
            globals,                        /*PyObject *globals,*/
            0                               /*PyObject *locals*/
        );
        Py_DECREF(globals);
        if (unlikely(!frame))
            return NULL;
        if (unlikely(self->gi_frame)) {
            Py_DECREF(frame);
            frame = self->gi_frame;
        } else {
            self->gi_frame = frame;
        }
    }
    Py_INCREF(frame);
    #if PY_VERSION_HEX >= 0x030d0000
    Py_END_CRITICAL_SECTION();
    #endif
    return frame;
#else
    CYTHON_UNUSED_VAR(self);
    Py_RETURN_NONE;
#endif
}
static PyObject *
__Pyx_Coroutine_get_frame(__pyx_CoroutineObject *self, void *context) {
    CYTHON_UNUSED_VAR(context);
    PyObject *frame = self->gi_frame;
    if (frame)
        return __Pyx_NewRef(frame);
    return __Pyx__Coroutine_get_frame(self);
}
static __pyx_CoroutineObject *__Pyx__Coroutine_New(
            PyTypeObject* type, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    __pyx_CoroutineObject *gen = PyObject_GC_New(__pyx_CoroutineObject, type);
    if (unlikely(!gen))
        return NULL;
    return __Pyx__Coroutine_NewInit(gen, body, code, closure, name, qualname, module_name);
}
static __pyx_CoroutineObject *__Pyx__Coroutine_NewInit(
            __pyx_CoroutineObject *gen, __pyx_coroutine_body_t body, PyObject *code, PyObject *closure,
            PyObject *name, PyObject *qualname, PyObject *module_name) {
    gen->body = body;
    gen->closure = closure;
    Py_XINCREF(closure);
    gen->is_running = 0;
    gen->resume_label = 0;
    gen->classobj = NULL;
    gen->yieldfrom = NULL;
    gen->yieldfrom_am_send = NULL;
    #if PY_VERSION_HEX >= 0x030B00a4 && !CYTHON_COMPILING_IN_LIMITED_API
    gen->gi_exc_state.exc_value = NULL;
    #else
    gen->gi_exc_state.exc_type = NULL;
    gen->gi_exc_state.exc_value = NULL;
    gen->gi_exc_state.exc_traceback = NULL;
    #endif
#if CYTHON_USE_EXC_INFO_STACK
    gen->gi_exc_state.previous_item = NULL;
#endif
    gen->gi_weakreflist = NULL;
    Py_XINCREF(qualname);
    gen->gi_qualname = qualname;
    Py_XINCREF(name);
    gen->gi_name = name;
    Py_XINCREF(module_name);
    gen->gi_modulename = module_name;
    Py_XINCREF(code);
    gen->gi_code = code;
    gen->gi_frame = NULL;
    PyObject_GC_Track(gen);
    return gen;
}
static char __Pyx_Coroutine_test_and_set_is_running(__pyx_CoroutineObject *gen) {
    char result;
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_BEGIN_CRITICAL_SECTION(gen);
    #endif
    result = gen->is_running;
    gen->is_running = 1;
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_END_CRITICAL_SECTION();
    #endif
    return result;
}
static void __Pyx_Coroutine_unset_is_running(__pyx_CoroutineObject *gen) {
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_BEGIN_CRITICAL_SECTION(gen);
    #endif
    assert(gen->is_running);
    gen->is_running = 0;
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_END_CRITICAL_SECTION();
    #endif
}
static char __Pyx_Coroutine_get_is_running(__pyx_CoroutineObject *gen) {
    char result;
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_BEGIN_CRITICAL_SECTION(gen);
    #endif
    result = gen->is_running;
    #if PY_VERSION_HEX >= 0x030d0000 && !CYTHON_COMPILING_IN_LIMITED_API
    Py_END_CRITICAL_SECTION();
    #endif
    return result;
}
static PyObject *__Pyx_Coroutine_get_is_running_getter(PyObject *gen, void *closure) {
    CYTHON_UNUSED_VAR(closure);
    char result = __Pyx_Coroutine_get_is_running((__pyx_CoroutineObject*)gen);
    if (result) Py_RETURN_TRUE;
    else Py_RETURN_FALSE;
}
#if __PYX_HAS_PY_AM_SEND == 2
static void __Pyx_SetBackportTypeAmSend(PyTypeObject *type, __Pyx_PyAsyncMethodsStruct *static_amsend_methods, __Pyx_pyiter_sendfunc am_send) {
    Py_ssize_t ptr_offset = (char*)(type->tp_as_async) - (char*)type;
    if (ptr_offset < 0 || ptr_offset > type->tp_basicsize) {
        return;
    }
    memcpy((void*)static_amsend_methods, (void*)(type->tp_as_async), sizeof(*type->tp_as_async));
    static_amsend_methods->am_send = am_send;
    type->tp_as_async = __Pyx_SlotTpAsAsync(static_amsend_methods);
}
#endif
static PyObject *__Pyx_Coroutine_fail_reduce_ex(PyObject *self, PyObject *arg) {
    CYTHON_UNUSED_VAR(arg);
    __Pyx_TypeName self_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE((PyObject*)self));
    PyErr_Format(PyExc_TypeError, "cannot pickle '" __Pyx_FMT_TYPENAME "' object",
                         self_type_name);
    __Pyx_DECREF_TypeName(self_type_name);
    return NULL;
}

/* Generator */
static PyMethodDef __pyx_Generator_methods[] = {
    {"send", (PyCFunction) __Pyx_Coroutine_Send, METH_O,
     PyDoc_STR("send(arg) -> send 'arg' into generator,\nreturn next yielded value or raise StopIteration.")},
    {"throw", (PyCFunction) __Pyx_Coroutine_Throw, METH_VARARGS,
     PyDoc_STR("throw(typ[,val[,tb]]) -> raise exception in generator,\nreturn next yielded value or raise StopIteration.")},
    {"close", (PyCFunction) __Pyx_Coroutine_Close_Method, METH_NOARGS,
     PyDoc_STR("close() -> raise GeneratorExit inside generator.")},
    {"__reduce_ex__", (PyCFunction) __Pyx_Coroutine_fail_reduce_ex, METH_O, 0},
    {"__reduce__", (PyCFunction) __Pyx_Coroutine_fail_reduce_ex, METH_NOARGS, 0},
    {0, 0, 0, 0}
};
static PyMemberDef __pyx_Generator_memberlist[] = {
    {"gi_yieldfrom", T_OBJECT, offsetof(__pyx_CoroutineObject, yieldfrom), READONLY,
     PyDoc_STR("object being iterated by 'yield from', or None")},
    {"gi_code", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_code), READONLY, NULL},
    {"__module__", T_OBJECT, offsetof(__pyx_CoroutineObject, gi_modulename), 0, 0},
    {"__weaklistoffset__", T_PYSSIZET, offsetof(__pyx_CoroutineObject, gi_weakreflist), READONLY, 0},
    {0, 0, 0, 0, 0}
};
static PyGetSetDef __pyx_Generator_getsets[] = {
    {"__name__", (getter)__Pyx_Coroutine_get_name, (setter)__Pyx_Coroutine_set_name,
     PyDoc_STR("name of the generator"), 0},
    {"__qualname__", (getter)__Pyx_Coroutine_get_qualname, (setter)__Pyx_Coroutine_set_qualname,
     PyDoc_STR("qualified name of the generator"), 0},
    {"gi_frame", (getter)__Pyx_Coroutine_get_frame, NULL,
     PyDoc_STR("Frame of the generator"), 0},
    {"gi_running", __Pyx_Coroutine_get_is_running_getter, NULL, NULL, NULL},
    {0, 0, 0, 0, 0}
};
static PyType_Slot __pyx_GeneratorType_slots[] = {
    {Py_tp_dealloc, (void *)__Pyx_Coroutine_dealloc},
    {Py_tp_traverse, (void *)__Pyx_Coroutine_traverse},
    {Py_tp_iter, (void *)PyObject_SelfIter},
    {Py_tp_iternext, (void *)__Pyx_Generator_Next},
    {Py_tp_methods, (void *)__pyx_Generator_methods},
    {Py_tp_members, (void *)__pyx_Generator_memberlist},
    {Py_tp_getset, (void *)__pyx_Generator_getsets},
    {Py_tp_getattro, (void *) PyObject_GenericGetAttr},
#if CYTHON_USE_TP_FINALIZE
    {Py_tp_finalize, (void *)__Pyx_Coroutine_del},
#endif
#if __PYX_HAS_PY_AM_SEND == 1
    {Py_am_send, (void *)__Pyx_Coroutine_AmSend},
#endif
    {0, 0},
};
static PyType_Spec __pyx_GeneratorType_spec = {
    __PYX_TYPE_MODULE_PREFIX "generator",
    sizeof(__pyx_CoroutineObject),
    0,
#if PY_VERSION_HEX >= 0x030A0000
    Py_TPFLAGS_IMMUTABLETYPE |
#endif
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE | __Pyx_TPFLAGS_HAVE_AM_SEND,
    __pyx_GeneratorType_slots
};
#if __PYX_HAS_PY_AM_SEND == 2
static __Pyx_PyAsyncMethodsStruct __pyx_Generator_as_async;
#endif
static int __pyx_Generator_init(PyObject *module) {
    __pyx_mstatetype *mstate = __Pyx_PyModule_GetState(module);
    mstate->__pyx_GeneratorType = __Pyx_FetchCommonTypeFromSpec(
        mstate->__pyx_CommonTypesMetaclassType, module, &__pyx_GeneratorType_spec, NULL);
    if (unlikely(!mstate->__pyx_GeneratorType)) {
        return -1;
    }
#if __PYX_HAS_PY_AM_SEND == 2
    __Pyx_SetBackportTypeAmSend(mstate->__pyx_GeneratorType, &__pyx_Generator_as_async, &__Pyx_Coroutine_AmSend);
#endif
    return 0;
}
static PyObject *__Pyx_Generator_GetInlinedResult(PyObject *self) {
    __pyx_CoroutineObject *gen = (__pyx_CoroutineObject*) self;
    PyObject *retval = NULL;
    if (unlikely(__Pyx_Coroutine_test_and_set_is_running(gen))) {
        return __Pyx_Coroutine_AlreadyRunningError(gen);
    }
    __Pyx_PySendResult result = __Pyx_Coroutine_SendEx(gen, Py_None, &retval, 0);
    __Pyx_Coroutine_unset_is_running(gen);
    (void) result;
    assert (result == PYGEN_RETURN || result == PYGEN_ERROR);
    assert ((result == PYGEN_RETURN && retval != NULL) || (result == PYGEN_ERROR && retval == NULL));
    return retval;
}

/* GetRuntimeVersion */
static unsigned long __Pyx_get_runtime_version(void) {
#if __PYX_LIMITED_VERSION_HEX >= 0x030b0000
    return Py_Version & ~0xFFUL;
#else
    static unsigned long __Pyx_cached_runtime_version = 0;
    if (__Pyx_cached_runtime_version == 0) {
        const char* rt_version = Py_GetVersion();
        unsigned long version = 0;
        unsigned long factor = 0x01000000UL;
        unsigned int digit = 0;
        int i = 0;
        while (factor) {
            while ('0' <= rt_version[i] && rt_version[i] <= '9') {
                digit = digit * 10 + (unsigned int) (rt_version[i] - '0');
                ++i;
            }
            version += factor * digit;
            if (rt_version[i] != '.')
                break;
            digit = 0;
            factor >>= 8;
            ++i;
        }
        __Pyx_cached_runtime_version = version;
    }
    return __Pyx_cached_runtime_version;
#endif
}

/* CheckBinaryVersion */
static int __Pyx_check_binary_version(unsigned long ct_version, unsigned long rt_version, int allow_newer) {
    const unsigned long MAJOR_MINOR = 0xFFFF0000UL;
    if ((rt_version & MAJOR_MINOR) == (ct_version & MAJOR_MINOR))
        return 0;
    if (likely(allow_newer && (rt_version & MAJOR_MINOR) > (ct_version & MAJOR_MINOR)))
        return 1;
    {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compile time Python version %d.%d "
                      "of module '%.100s' "
                      "%s "
                      "runtime version %d.%d",
                       (int) (ct_version >> 24), (int) ((ct_version >> 16) & 0xFF),
                       __Pyx_MODULE_NAME,
                       (allow_newer) ? "was newer than" : "does not match",
                       (int) (rt_version >> 24), (int) ((rt_version >> 16) & 0xFF)
       );
        return PyErr_WarnEx(NULL, message, 1);
    }
}

/* NewCodeObj */
#if CYTHON_COMPILING_IN_LIMITED_API
    static PyObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f,
                                       PyObject *code, PyObject *c, PyObject* n, PyObject *v,
                                       PyObject *fv, PyObject *cell, PyObject* fn,
                                       PyObject *name, int fline, PyObject *lnos) {
        PyObject *exception_table = NULL;
        PyObject *types_module=NULL, *code_type=NULL, *result=NULL;
        #if __PYX_LIMITED_VERSION_HEX < 0x030b0000
        PyObject *version_info;
        PyObject *py_minor_version = NULL;
        #endif
        long minor_version = 0;
        PyObject *type, *value, *traceback;
        PyErr_Fetch(&type, &value, &traceback);
        #if __PYX_LIMITED_VERSION_HEX >= 0x030b0000
        minor_version = 11;
        #else
        if (!(version_info = PySys_GetObject("version_info"))) goto end;
        if (!(py_minor_version = PySequence_GetItem(version_info, 1))) goto end;
        minor_version = PyLong_AsLong(py_minor_version);
        Py_DECREF(py_minor_version);
        if (minor_version == -1 && PyErr_Occurred()) goto end;
        #endif
        if (!(types_module = PyImport_ImportModule("types"))) goto end;
        if (!(code_type = PyObject_GetAttrString(types_module, "CodeType"))) goto end;
        if (minor_version <= 7) {
            (void)p;
            result = PyObject_CallFunction(code_type, "iiiiiOOOOOOiOOO", a, k, l, s, f, code,
                          c, n, v, fn, name, fline, lnos, fv, cell);
        } else if (minor_version <= 10) {
            result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOiOOO", a,p, k, l, s, f, code,
                          c, n, v, fn, name, fline, lnos, fv, cell);
        } else {
            if (!(exception_table = PyBytes_FromStringAndSize(NULL, 0))) goto end;
            result = PyObject_CallFunction(code_type, "iiiiiiOOOOOOOiOOOO", a,p, k, l, s, f, code,
                          c, n, v, fn, name, name, fline, lnos, exception_table, fv, cell);
        }
    end:
        Py_XDECREF(code_type);
        Py_XDECREF(exception_table);
        Py_XDECREF(types_module);
        if (type) {
            PyErr_Restore(type, value, traceback);
        }
        return result;
    }
#elif PY_VERSION_HEX >= 0x030B0000
  static PyCodeObject* __Pyx__PyCode_New(int a, int p, int k, int l, int s, int f,
                                         PyObject *code, PyObject *c, PyObject* n, PyObject *v,
                                         PyObject *fv, PyObject *cell, PyObject* fn,
                                         PyObject *name, int fline, PyObject *lnos) {
    PyCodeObject *result;
    result =
      #if PY_VERSION_HEX >= 0x030C0000
        PyUnstable_Code_NewWithPosOnlyArgs
      #else
        PyCode_NewWithPosOnlyArgs
      #endif
        (a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, name, fline, lnos, __pyx_mstate_global->__pyx_empty_bytes);
    return result;
  }
#elif PY_VERSION_HEX >= 0x030800B2 && !CYTHON_COMPILING_IN_PYPY
  #define __Pyx__PyCode_New(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\
          PyCode_NewWithPosOnlyArgs(a, p, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
#else
  #define __Pyx__PyCode_New(a, p, 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)
#endif
static PyObject* __Pyx_PyCode_New(
        const __Pyx_PyCode_New_function_description descr,
        PyObject * const *varnames,
        PyObject *filename,
        PyObject *funcname,
        const char *line_table,
        PyObject *tuple_dedup_map
) {
    PyObject *code_obj = NULL, *varnames_tuple_dedup = NULL, *code_bytes = NULL, *line_table_bytes = NULL;
    Py_ssize_t var_count = (Py_ssize_t) descr.nlocals;
    PyObject *varnames_tuple = PyTuple_New(var_count);
    if (unlikely(!varnames_tuple)) return NULL;
    for (Py_ssize_t i=0; i < var_count; i++) {
        Py_INCREF(varnames[i]);
        if (__Pyx_PyTuple_SET_ITEM(varnames_tuple, i, varnames[i]) != (0)) goto done;
    }
    #if CYTHON_COMPILING_IN_LIMITED_API
    varnames_tuple_dedup = PyDict_GetItem(tuple_dedup_map, varnames_tuple);
    if (!varnames_tuple_dedup) {
        if (unlikely(PyDict_SetItem(tuple_dedup_map, varnames_tuple, varnames_tuple) < 0)) goto done;
        varnames_tuple_dedup = varnames_tuple;
    }
    #else
    varnames_tuple_dedup = PyDict_SetDefault(tuple_dedup_map, varnames_tuple, varnames_tuple);
    if (unlikely(!varnames_tuple_dedup)) goto done;
    #endif
    #if CYTHON_AVOID_BORROWED_REFS
    Py_INCREF(varnames_tuple_dedup);
    #endif
    if (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table != NULL
        && !CYTHON_COMPILING_IN_GRAAL) {
        line_table_bytes = PyBytes_FromStringAndSize(line_table, descr.line_table_length);
        if (unlikely(!line_table_bytes)) goto done;
        Py_ssize_t code_len = (descr.line_table_length * 2 + 4) & ~3;
        code_bytes = PyBytes_FromStringAndSize(NULL, code_len);
        if (unlikely(!code_bytes)) goto done;
        char* c_code_bytes = PyBytes_AsString(code_bytes);
        if (unlikely(!c_code_bytes)) goto done;
        memset(c_code_bytes, 0, (size_t) code_len);
    }
    code_obj = (PyObject*) __Pyx__PyCode_New(
        (int) descr.argcount,
        (int) descr.num_posonly_args,
        (int) descr.num_kwonly_args,
        (int) descr.nlocals,
        0,
        (int) descr.flags,
        code_bytes ? code_bytes : __pyx_mstate_global->__pyx_empty_bytes,
        __pyx_mstate_global->__pyx_empty_tuple,
        __pyx_mstate_global->__pyx_empty_tuple,
        varnames_tuple_dedup,
        __pyx_mstate_global->__pyx_empty_tuple,
        __pyx_mstate_global->__pyx_empty_tuple,
        filename,
        funcname,
        (int) descr.first_line,
        (__PYX_LIMITED_VERSION_HEX >= (0x030b0000) && line_table_bytes) ? line_table_bytes : __pyx_mstate_global->__pyx_empty_bytes
    );
done:
    Py_XDECREF(code_bytes);
    Py_XDECREF(line_table_bytes);
    #if CYTHON_AVOID_BORROWED_REFS
    Py_XDECREF(varnames_tuple_dedup);
    #endif
    Py_DECREF(varnames_tuple);
    return code_obj;
}

/* InitStrings */
static int __Pyx_InitStrings(__Pyx_StringTabEntry const *t, PyObject **target, const char* const* encoding_names) {
    while (t->s) {
        PyObject *str;
        if (t->is_unicode) {
            if (t->intern) {
                str = PyUnicode_InternFromString(t->s);
            } else if (t->encoding) {
                str = PyUnicode_Decode(t->s, t->n - 1, encoding_names[t->encoding], NULL);
            } else {
                str = PyUnicode_FromStringAndSize(t->s, t->n - 1);
            }
        } else {
            str = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        if (!str)
            return -1;
        *target = str;
        if (PyObject_Hash(str) == -1)
            return -1;
        ++t;
        ++target;
    }
    return 0;
}

#include <string.h>
static CYTHON_INLINE Py_ssize_t __Pyx_ssize_strlen(const char *s) {
    size_t len = strlen(s);
    if (unlikely(len > (size_t) PY_SSIZE_T_MAX)) {
        PyErr_SetString(PyExc_OverflowError, "byte string is too long");
        return -1;
    }
    return (Py_ssize_t) len;
}
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    Py_ssize_t len = __Pyx_ssize_strlen(c_str);
    if (unlikely(len < 0)) return NULL;
    return __Pyx_PyUnicode_FromStringAndSize(c_str, len);
}
static CYTHON_INLINE PyObject* __Pyx_PyByteArray_FromString(const char* c_str) {
    Py_ssize_t len = __Pyx_ssize_strlen(c_str);
    if (unlikely(len < 0)) return NULL;
    return PyByteArray_FromStringAndSize(c_str, len);
}
static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) {
    Py_ssize_t ignore;
    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
}
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8
static CYTHON_INLINE const char* __Pyx_PyUnicode_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
    if (unlikely(__Pyx_PyUnicode_READY(o) == -1)) return NULL;
#if CYTHON_COMPILING_IN_LIMITED_API
    {
        const char* result;
        Py_ssize_t unicode_length;
        CYTHON_MAYBE_UNUSED_VAR(unicode_length); // only for __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
        #if __PYX_LIMITED_VERSION_HEX < 0x030A0000
        if (unlikely(PyArg_Parse(o, "s#", &result, length) < 0)) return NULL;
        #else
        result = PyUnicode_AsUTF8AndSize(o, length);
        #endif
        #if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
        unicode_length = PyUnicode_GetLength(o);
        if (unlikely(unicode_length < 0)) return NULL;
        if (unlikely(unicode_length != *length)) {
            PyUnicode_AsASCIIString(o);
            return NULL;
        }
        #endif
        return result;
    }
#else
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
    if (likely(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
}
#endif
static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_UTF8
    if (PyUnicode_Check(o)) {
        return __Pyx_PyUnicode_AsStringAndSize(o, length);
    } else
#endif
    if (PyByteArray_Check(o)) {
#if (CYTHON_ASSUME_SAFE_SIZE && CYTHON_ASSUME_SAFE_MACROS) || (CYTHON_COMPILING_IN_PYPY && (defined(PyByteArray_AS_STRING) && defined(PyByteArray_GET_SIZE)))
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
#else
        *length = PyByteArray_Size(o);
        if (*length == -1) return NULL;
        return PyByteArray_AsString(o);
#endif
    } else
    {
        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 int __Pyx_PyObject_IsTrueAndDecref(PyObject* x) {
    int retval;
    if (unlikely(!x)) return -1;
    retval = __Pyx_PyObject_IsTrue(x);
    Py_DECREF(x);
    return retval;
}
static PyObject* __Pyx_PyNumber_LongWrongResultType(PyObject* result) {
    __Pyx_TypeName result_type_name = __Pyx_PyType_GetFullyQualifiedName(Py_TYPE(result));
    if (PyLong_Check(result)) {
        if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1,
                "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ").  "
                "The ability to return an instance of a strict subclass of int is deprecated, "
                "and may be removed in a future version of Python.",
                result_type_name)) {
            __Pyx_DECREF_TypeName(result_type_name);
            Py_DECREF(result);
            return NULL;
        }
        __Pyx_DECREF_TypeName(result_type_name);
        return result;
    }
    PyErr_Format(PyExc_TypeError,
                 "__int__ returned non-int (type " __Pyx_FMT_TYPENAME ")",
                 result_type_name);
    __Pyx_DECREF_TypeName(result_type_name);
    Py_DECREF(result);
    return NULL;
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Long(PyObject* x) {
#if CYTHON_USE_TYPE_SLOTS
  PyNumberMethods *m;
#endif
  PyObject *res = NULL;
  if (likely(PyLong_Check(x)))
      return __Pyx_NewRef(x);
#if CYTHON_USE_TYPE_SLOTS
  m = Py_TYPE(x)->tp_as_number;
  if (likely(m && m->nb_int)) {
      res = m->nb_int(x);
  }
#else
  if (!PyBytes_CheckExact(x) && !PyUnicode_CheckExact(x)) {
      res = PyNumber_Long(x);
  }
#endif
  if (likely(res)) {
      if (unlikely(!PyLong_CheckExact(res))) {
          return __Pyx_PyNumber_LongWrongResultType(res);
      }
  }
  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 (likely(PyLong_CheckExact(b))) {
    #if CYTHON_USE_PYLONG_INTERNALS
    if (likely(__Pyx_PyLong_IsCompact(b))) {
        return __Pyx_PyLong_CompactValue(b);
    } else {
      const digit* digits = __Pyx_PyLong_Digits(b);
      const Py_ssize_t size = __Pyx_PyLong_SignedDigitCount(b);
      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 = PyLong_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}
static CYTHON_INLINE Py_hash_t __Pyx_PyIndex_AsHash_t(PyObject* o) {
  if (sizeof(Py_hash_t) == sizeof(Py_ssize_t)) {
    return (Py_hash_t) __Pyx_PyIndex_AsSsize_t(o);
  } else {
    Py_ssize_t ival;
    PyObject *x;
    x = PyNumber_Index(o);
    if (!x) return -1;
    ival = PyLong_AsLong(x);
    Py_DECREF(x);
    return ival;
  }
}
static CYTHON_INLINE PyObject *__Pyx_Owned_Py_None(int b) {
    CYTHON_UNUSED_VAR(b);
    return __Pyx_NewRef(Py_None);
}
static CYTHON_INLINE PyObject * __Pyx_PyBool_FromLong(long b) {
  return b ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False);
}
static CYTHON_INLINE PyObject * __Pyx_PyLong_FromSize_t(size_t ival) {
    return PyLong_FromSize_t(ival);
}


/* MultiPhaseInitModuleState */
#if CYTHON_PEP489_MULTI_PHASE_INIT && CYTHON_USE_MODULE_STATE
#ifndef CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
#if (CYTHON_COMPILING_IN_LIMITED_API || PY_VERSION_HEX >= 0x030C0000)
  #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 1
#else
  #define CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE 0
#endif
#endif
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE && !CYTHON_ATOMICS
#error "Module state with PEP489 requires atomics. Currently that's one of\
 C11, C++11, gcc atomic intrinsics or MSVC atomic intrinsics"
#endif
#if !CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
#define __Pyx_ModuleStateLookup_Lock()
#define __Pyx_ModuleStateLookup_Unlock()
#elif !CYTHON_COMPILING_IN_LIMITED_API && PY_VERSION_HEX >= 0x030d0000
static PyMutex __Pyx_ModuleStateLookup_mutex = {0};
#define __Pyx_ModuleStateLookup_Lock() PyMutex_Lock(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() PyMutex_Unlock(&__Pyx_ModuleStateLookup_mutex)
#elif defined(__cplusplus) && __cplusplus >= 201103L
#include <mutex>
static std::mutex __Pyx_ModuleStateLookup_mutex;
#define __Pyx_ModuleStateLookup_Lock() __Pyx_ModuleStateLookup_mutex.lock()
#define __Pyx_ModuleStateLookup_Unlock() __Pyx_ModuleStateLookup_mutex.unlock()
#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ > 201112L) && !defined(__STDC_NO_THREADS__)
#include <threads.h>
static mtx_t __Pyx_ModuleStateLookup_mutex;
static once_flag __Pyx_ModuleStateLookup_mutex_once_flag = ONCE_FLAG_INIT;
static void __Pyx_ModuleStateLookup_initialize_mutex(void) {
    mtx_init(&__Pyx_ModuleStateLookup_mutex, mtx_plain);
}
#define __Pyx_ModuleStateLookup_Lock()\
  call_once(&__Pyx_ModuleStateLookup_mutex_once_flag, __Pyx_ModuleStateLookup_initialize_mutex);\
  mtx_lock(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() mtx_unlock(&__Pyx_ModuleStateLookup_mutex)
#elif defined(HAVE_PTHREAD_H)
#include <pthread.h>
static pthread_mutex_t __Pyx_ModuleStateLookup_mutex = PTHREAD_MUTEX_INITIALIZER;
#define __Pyx_ModuleStateLookup_Lock() pthread_mutex_lock(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() pthread_mutex_unlock(&__Pyx_ModuleStateLookup_mutex)
#elif defined(_WIN32)
#include <Windows.h>  // synchapi.h on its own doesn't work
static SRWLOCK __Pyx_ModuleStateLookup_mutex = SRWLOCK_INIT;
#define __Pyx_ModuleStateLookup_Lock() AcquireSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex)
#define __Pyx_ModuleStateLookup_Unlock() ReleaseSRWLockExclusive(&__Pyx_ModuleStateLookup_mutex)
#else
#error "No suitable lock available for CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE.\
 Requires C standard >= C11, or C++ standard >= C++11,\
 or pthreads, or the Windows 32 API, or Python >= 3.13."
#endif
typedef struct {
    int64_t id;
    PyObject *module;
} __Pyx_InterpreterIdAndModule;
typedef struct {
    char interpreter_id_as_index;
    Py_ssize_t count;
    Py_ssize_t allocated;
    __Pyx_InterpreterIdAndModule table[1];
} __Pyx_ModuleStateLookupData;
#define __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE 32
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
static __pyx_atomic_int_type __Pyx_ModuleStateLookup_read_counter = 0;
#endif
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
static __pyx_atomic_ptr_type __Pyx_ModuleStateLookup_data = 0;
#else
static __Pyx_ModuleStateLookupData* __Pyx_ModuleStateLookup_data = NULL;
#endif
static __Pyx_InterpreterIdAndModule* __Pyx_State_FindModuleStateLookupTableLowerBound(
        __Pyx_InterpreterIdAndModule* table,
        Py_ssize_t count,
        int64_t interpreterId) {
    __Pyx_InterpreterIdAndModule* begin = table;
    __Pyx_InterpreterIdAndModule* end = begin + count;
    if (begin->id == interpreterId) {
        return begin;
    }
    while ((end - begin) > __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) {
        __Pyx_InterpreterIdAndModule* halfway = begin + (end - begin)/2;
        if (halfway->id == interpreterId) {
            return halfway;
        }
        if (halfway->id < interpreterId) {
            begin = halfway;
        } else {
            end = halfway;
        }
    }
    for (; begin < end; ++begin) {
        if (begin->id >= interpreterId) return begin;
    }
    return begin;
}
static PyObject *__Pyx_State_FindModule(CYTHON_UNUSED void* dummy) {
    int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get());
    if (interpreter_id == -1) return NULL;
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __Pyx_ModuleStateLookupData* data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data);
    {
        __pyx_atomic_incr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
        if (likely(data)) {
            __Pyx_ModuleStateLookupData* new_data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_acquire(&__Pyx_ModuleStateLookup_data);
            if (likely(data == new_data)) {
                goto read_finished;
            }
        }
        __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
        __Pyx_ModuleStateLookup_Lock();
        __pyx_atomic_incr_relaxed(&__Pyx_ModuleStateLookup_read_counter);
        data = (__Pyx_ModuleStateLookupData*)__pyx_atomic_pointer_load_relaxed(&__Pyx_ModuleStateLookup_data);
        __Pyx_ModuleStateLookup_Unlock();
    }
  read_finished:;
#else
    __Pyx_ModuleStateLookupData* data = __Pyx_ModuleStateLookup_data;
#endif
    __Pyx_InterpreterIdAndModule* found = NULL;
    if (unlikely(!data)) goto end;
    if (data->interpreter_id_as_index) {
        if (interpreter_id < data->count) {
            found = data->table+interpreter_id;
        }
    } else {
        found = __Pyx_State_FindModuleStateLookupTableLowerBound(
            data->table, data->count, interpreter_id);
    }
  end:
    {
        PyObject *result=NULL;
        if (found && found->id == interpreter_id) {
            result = found->module;
        }
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
        __pyx_atomic_decr_acq_rel(&__Pyx_ModuleStateLookup_read_counter);
#endif
        return result;
    }
}
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
static void __Pyx_ModuleStateLookup_wait_until_no_readers(void) {
    while (__pyx_atomic_load(&__Pyx_ModuleStateLookup_read_counter) != 0);
}
#else
#define __Pyx_ModuleStateLookup_wait_until_no_readers()
#endif
static int __Pyx_State_AddModuleInterpIdAsIndex(__Pyx_ModuleStateLookupData **old_data, PyObject* module, int64_t interpreter_id) {
    Py_ssize_t to_allocate = (*old_data)->allocated;
    while (to_allocate <= interpreter_id) {
        if (to_allocate == 0) to_allocate = 1;
        else to_allocate *= 2;
    }
    __Pyx_ModuleStateLookupData *new_data = *old_data;
    if (to_allocate != (*old_data)->allocated) {
         new_data = (__Pyx_ModuleStateLookupData *)realloc(
            *old_data,
            sizeof(__Pyx_ModuleStateLookupData)+(to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule));
        if (!new_data) {
            PyErr_NoMemory();
            return -1;
        }
        for (Py_ssize_t i = new_data->allocated; i < to_allocate; ++i) {
            new_data->table[i].id = i;
            new_data->table[i].module = NULL;
        }
        new_data->allocated = to_allocate;
    }
    new_data->table[interpreter_id].module = module;
    if (new_data->count < interpreter_id+1) {
        new_data->count = interpreter_id+1;
    }
    *old_data = new_data;
    return 0;
}
static void __Pyx_State_ConvertFromInterpIdAsIndex(__Pyx_ModuleStateLookupData *data) {
    __Pyx_InterpreterIdAndModule *read = data->table;
    __Pyx_InterpreterIdAndModule *write = data->table;
    __Pyx_InterpreterIdAndModule *end = read + data->count;
    for (; read<end; ++read) {
        if (read->module) {
            write->id = read->id;
            write->module = read->module;
            ++write;
        }
    }
    data->count = write - data->table;
    for (; write<end; ++write) {
        write->id = 0;
        write->module = NULL;
    }
    data->interpreter_id_as_index = 0;
}
static int __Pyx_State_AddModule(PyObject* module, CYTHON_UNUSED void* dummy) {
    int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get());
    if (interpreter_id == -1) return -1;
    int result = 0;
    __Pyx_ModuleStateLookup_Lock();
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __Pyx_ModuleStateLookupData *old_data = (__Pyx_ModuleStateLookupData *)
            __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0);
#else
    __Pyx_ModuleStateLookupData *old_data = __Pyx_ModuleStateLookup_data;
#endif
    __Pyx_ModuleStateLookupData *new_data = old_data;
    if (!new_data) {
        new_data = (__Pyx_ModuleStateLookupData *)calloc(1, sizeof(__Pyx_ModuleStateLookupData));
        if (!new_data) {
            result = -1;
            PyErr_NoMemory();
            goto end;
        }
        new_data->allocated = 1;
        new_data->interpreter_id_as_index = 1;
    }
    __Pyx_ModuleStateLookup_wait_until_no_readers();
    if (new_data->interpreter_id_as_index) {
        if (interpreter_id < __PYX_MODULE_STATE_LOOKUP_SMALL_SIZE) {
            result = __Pyx_State_AddModuleInterpIdAsIndex(&new_data, module, interpreter_id);
            goto end;
        }
        __Pyx_State_ConvertFromInterpIdAsIndex(new_data);
    }
    {
        Py_ssize_t insert_at = 0;
        {
            __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound(
                new_data->table, new_data->count, interpreter_id);
            assert(lower_bound);
            insert_at = lower_bound - new_data->table;
            if (unlikely(insert_at < new_data->count && lower_bound->id == interpreter_id)) {
                lower_bound->module = module;
                goto end;  // already in table, nothing more to do
            }
        }
        if (new_data->count+1 >= new_data->allocated) {
            Py_ssize_t to_allocate = (new_data->count+1)*2;
            new_data =
                (__Pyx_ModuleStateLookupData*)realloc(
                    new_data,
                    sizeof(__Pyx_ModuleStateLookupData) +
                    (to_allocate-1)*sizeof(__Pyx_InterpreterIdAndModule));
            if (!new_data) {
                result = -1;
                new_data = old_data;
                PyErr_NoMemory();
                goto end;
            }
            new_data->allocated = to_allocate;
        }
        ++new_data->count;
        int64_t last_id = interpreter_id;
        PyObject *last_module = module;
        for (Py_ssize_t i=insert_at; i<new_data->count; ++i) {
            int64_t current_id = new_data->table[i].id;
            new_data->table[i].id = last_id;
            last_id = current_id;
            PyObject *current_module = new_data->table[i].module;
            new_data->table[i].module = last_module;
            last_module = current_module;
        }
    }
  end:
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, new_data);
#else
    __Pyx_ModuleStateLookup_data = new_data;
#endif
    __Pyx_ModuleStateLookup_Unlock();
    return result;
}
static int __Pyx_State_RemoveModule(CYTHON_UNUSED void* dummy) {
    int64_t interpreter_id = PyInterpreterState_GetID(__Pyx_PyInterpreterState_Get());
    if (interpreter_id == -1) return -1;
    __Pyx_ModuleStateLookup_Lock();
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __Pyx_ModuleStateLookupData *data = (__Pyx_ModuleStateLookupData *)
            __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, 0);
#else
    __Pyx_ModuleStateLookupData *data = __Pyx_ModuleStateLookup_data;
#endif
    if (data->interpreter_id_as_index) {
        if (interpreter_id < data->count) {
            data->table[interpreter_id].module = NULL;
        }
        goto done;
    }
    {
        __Pyx_ModuleStateLookup_wait_until_no_readers();
        __Pyx_InterpreterIdAndModule* lower_bound = __Pyx_State_FindModuleStateLookupTableLowerBound(
            data->table, data->count, interpreter_id);
        if (!lower_bound) goto done;
        if (lower_bound->id != interpreter_id) goto done;
        __Pyx_InterpreterIdAndModule *end = data->table+data->count;
        for (;lower_bound<end-1; ++lower_bound) {
            lower_bound->id = (lower_bound+1)->id;
            lower_bound->module = (lower_bound+1)->module;
        }
    }
    --data->count;
    if (data->count == 0) {
        free(data);
        data = NULL;
    }
  done:
#if CYTHON_MODULE_STATE_LOOKUP_THREAD_SAFE
    __pyx_atomic_pointer_exchange(&__Pyx_ModuleStateLookup_data, data);
#else
    __Pyx_ModuleStateLookup_data = data;
#endif
    __Pyx_ModuleStateLookup_Unlock();
    return 0;
}
#endif

/* #### Code section: utility_code_pragmas_end ### */
#ifdef _MSC_VER
#pragma warning( pop )
#endif



/* #### Code section: end ### */
#endif /* Py_PYTHON_H */
