Class std::__failure_type
   size=1 align=1
   base size=0 base align=1
std::__failure_type (0x0x7fdc3fa69de0) 0 empty

Class std::__do_is_destructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_destructible_impl (0x0x7fdc3d77d5a0) 0 empty

Class std::__do_is_nt_destructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_nt_destructible_impl (0x0x7fdc3d77d7e0) 0 empty

Class std::__do_is_default_constructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_default_constructible_impl (0x0x7fdc3d77da20) 0 empty

Class std::__do_is_static_castable_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_static_castable_impl (0x0x7fdc3d77dc60) 0 empty

Class std::__do_is_direct_constructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_direct_constructible_impl (0x0x7fdc3d77dde0) 0 empty

Class std::__do_is_nary_constructible_impl
   size=1 align=1
   base size=0 base align=1
std::__do_is_nary_constructible_impl (0x0x7fdc3d7b21e0) 0 empty

Class std::__do_common_type_impl
   size=1 align=1
   base size=0 base align=1
std::__do_common_type_impl (0x0x7fdc3d838960) 0 empty

Class std::__do_member_type_wrapper
   size=1 align=1
   base size=0 base align=1
std::__do_member_type_wrapper (0x0x7fdc3d838a20) 0 empty

Class std::__result_of_memfun_ref_impl
   size=1 align=1
   base size=0 base align=1
std::__result_of_memfun_ref_impl (0x0x7fdc3d838d80) 0 empty

Class std::__result_of_memfun_deref_impl
   size=1 align=1
   base size=0 base align=1
std::__result_of_memfun_deref_impl (0x0x7fdc3d838e40) 0 empty

Class std::__result_of_memobj_ref_impl
   size=1 align=1
   base size=0 base align=1
std::__result_of_memobj_ref_impl (0x0x7fdc3d838f00) 0 empty

Class std::__result_of_memobj_deref_impl
   size=1 align=1
   base size=0 base align=1
std::__result_of_memobj_deref_impl (0x0x7fdc3d86c000) 0 empty

Class std::__result_of_other_impl
   size=1 align=1
   base size=0 base align=1
std::__result_of_other_impl (0x0x7fdc3d86c2a0) 0 empty

Class std::piecewise_construct_t
   size=1 align=1
   base size=0 base align=1
std::piecewise_construct_t (0x0x7fdc3d86c480) 0 empty

Class std::__true_type
   size=1 align=1
   base size=0 base align=1
std::__true_type (0x0x7fdc3d86c900) 0 empty

Class std::__false_type
   size=1 align=1
   base size=0 base align=1
std::__false_type (0x0x7fdc3d86c960) 0 empty

Class std::input_iterator_tag
   size=1 align=1
   base size=0 base align=1
std::input_iterator_tag (0x0x7fdc3d918600) 0 empty

Class std::output_iterator_tag
   size=1 align=1
   base size=0 base align=1
std::output_iterator_tag (0x0x7fdc3d918660) 0 empty

Class std::forward_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::forward_iterator_tag (0x0x7fdc3d85c618) 0 empty
  std::input_iterator_tag (0x0x7fdc3d9186c0) 0 empty

Class std::bidirectional_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::bidirectional_iterator_tag (0x0x7fdc3d85c680) 0 empty
  std::forward_iterator_tag (0x0x7fdc3d85c6e8) 0 empty
    std::input_iterator_tag (0x0x7fdc3d918720) 0 empty

Class std::random_access_iterator_tag
   size=1 align=1
   base size=1 base align=1
std::random_access_iterator_tag (0x0x7fdc3d85c750) 0 empty
  std::bidirectional_iterator_tag (0x0x7fdc3d85c7b8) 0 empty
    std::forward_iterator_tag (0x0x7fdc3d85c820) 0 empty
      std::input_iterator_tag (0x0x7fdc3d918780) 0 empty

Class __gnu_cxx::__ops::_Iter_less_iter
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__ops::_Iter_less_iter (0x0x7fdc3d95c420) 0 empty

Class __gnu_cxx::__ops::_Iter_less_val
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__ops::_Iter_less_val (0x0x7fdc3d95c480) 0 empty

Class __gnu_cxx::__ops::_Val_less_iter
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__ops::_Val_less_iter (0x0x7fdc3d95c4e0) 0 empty

Class __gnu_cxx::__ops::_Iter_equal_to_iter
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__ops::_Iter_equal_to_iter (0x0x7fdc3d95c540) 0 empty

Class __gnu_cxx::__ops::_Iter_equal_to_val
   size=1 align=1
   base size=0 base align=1
__gnu_cxx::__ops::_Iter_equal_to_val (0x0x7fdc3d95c5a0) 0 empty

Class wait
   size=4 align=4
   base size=4 base align=4
wait (0x0x7fdc3d6660c0) 0

Class __locale_struct
   size=232 align=8
   base size=232 base align=8
__locale_struct (0x0x7fdc3d666300) 0

Class timespec
   size=16 align=8
   base size=16 base align=8
timespec (0x0x7fdc3d6663c0) 0

Class timeval
   size=16 align=8
   base size=16 base align=8
timeval (0x0x7fdc3d666420) 0

Class pthread_attr_t
   size=56 align=8
   base size=56 base align=8
pthread_attr_t (0x0x7fdc3d6664e0) 0

Class __pthread_internal_list
   size=16 align=8
   base size=16 base align=8
__pthread_internal_list (0x0x7fdc3d666540) 0

Class random_data
   size=48 align=8
   base size=48 base align=8
random_data (0x0x7fdc3d6669c0) 0

Class drand48_data
   size=24 align=8
   base size=24 base align=8
drand48_data (0x0x7fdc3d666a20) 0

Vtable for std::exception
std::exception::_ZTVSt9exception: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt9exception)
16    (int (*)(...))std::exception::~exception
24    (int (*)(...))std::exception::~exception
32    (int (*)(...))std::exception::what

Class std::exception
   size=8 align=8
   base size=8 base align=8
std::exception (0x0x7fdc3d666a80) 0 nearly-empty
    vptr=((& std::exception::_ZTVSt9exception) + 16u)

Vtable for std::bad_exception
std::bad_exception::_ZTVSt13bad_exception: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt13bad_exception)
16    (int (*)(...))std::bad_exception::~bad_exception
24    (int (*)(...))std::bad_exception::~bad_exception
32    (int (*)(...))std::bad_exception::what

Class std::bad_exception
   size=8 align=8
   base size=8 base align=8
std::bad_exception (0x0x7fdc3d85cd68) 0 nearly-empty
    vptr=((& std::bad_exception::_ZTVSt13bad_exception) + 16u)
  std::exception (0x0x7fdc3d666ae0) 0 nearly-empty
      primary-for std::bad_exception (0x0x7fdc3d85cd68)

Class std::__exception_ptr::exception_ptr
   size=8 align=8
   base size=8 base align=8
std::__exception_ptr::exception_ptr (0x0x7fdc3d666b40) 0

Vtable for std::nested_exception
std::nested_exception::_ZTVSt16nested_exception: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt16nested_exception)
16    (int (*)(...))std::nested_exception::~nested_exception
24    (int (*)(...))std::nested_exception::~nested_exception

Class std::nested_exception
   size=16 align=8
   base size=16 base align=8
std::nested_exception (0x0x7fdc3d666ba0) 0
    vptr=((& std::nested_exception::_ZTVSt16nested_exception) + 16u)

Vtable for std::bad_alloc
std::bad_alloc::_ZTVSt9bad_alloc: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt9bad_alloc)
16    (int (*)(...))std::bad_alloc::~bad_alloc
24    (int (*)(...))std::bad_alloc::~bad_alloc
32    (int (*)(...))std::bad_alloc::what

Class std::bad_alloc
   size=8 align=8
   base size=8 base align=8
std::bad_alloc (0x0x7fdc3d85cf70) 0 nearly-empty
    vptr=((& std::bad_alloc::_ZTVSt9bad_alloc) + 16u)
  std::exception (0x0x7fdc3d39b000) 0 nearly-empty
      primary-for std::bad_alloc (0x0x7fdc3d85cf70)

Vtable for std::bad_array_new_length
std::bad_array_new_length::_ZTVSt20bad_array_new_length: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt20bad_array_new_length)
16    (int (*)(...))std::bad_array_new_length::~bad_array_new_length
24    (int (*)(...))std::bad_array_new_length::~bad_array_new_length
32    (int (*)(...))std::bad_array_new_length::what

Class std::bad_array_new_length
   size=8 align=8
   base size=8 base align=8
std::bad_array_new_length (0x0x7fdc3d39f000) 0 nearly-empty
    vptr=((& std::bad_array_new_length::_ZTVSt20bad_array_new_length) + 16u)
  std::bad_alloc (0x0x7fdc3d39f068) 0 nearly-empty
      primary-for std::bad_array_new_length (0x0x7fdc3d39f000)
    std::exception (0x0x7fdc3d39b060) 0 nearly-empty
        primary-for std::bad_alloc (0x0x7fdc3d39f068)

Class std::nothrow_t
   size=1 align=1
   base size=0 base align=1
std::nothrow_t (0x0x7fdc3d39b0c0) 0 empty

Class __exception
   size=40 align=8
   base size=40 base align=8
__exception (0x0x7fdc3d39bcc0) 0

Class lconv
   size=96 align=8
   base size=96 base align=8
lconv (0x0x7fdc3d1909c0) 0

Vtable for __cxxabiv1::__forced_unwind
__cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN10__cxxabiv115__forced_unwindE)
16    0u
24    0u
32    (int (*)(...))__cxa_pure_virtual

Class __cxxabiv1::__forced_unwind
   size=8 align=8
   base size=8 base align=8
__cxxabiv1::__forced_unwind (0x0x7fdc3d190a20) 0 nearly-empty
    vptr=((& __cxxabiv1::__forced_unwind::_ZTVN10__cxxabiv115__forced_unwindE) + 16u)

Class sched_param
   size=4 align=4
   base size=4 base align=4
sched_param (0x0x7fdc3d295900) 0

Class __sched_param
   size=4 align=4
   base size=4 base align=4
__sched_param (0x0x7fdc3d295960) 0

Class timex
   size=208 align=8
   base size=208 base align=8
timex (0x0x7fdc3d295a20) 0

Class tm
   size=56 align=8
   base size=56 base align=8
tm (0x0x7fdc3d295a80) 0

Class itimerspec
   size=32 align=8
   base size=32 base align=8
itimerspec (0x0x7fdc3d295ae0) 0

Class _pthread_cleanup_buffer
   size=32 align=8
   base size=32 base align=8
_pthread_cleanup_buffer (0x0x7fdc3d295b40) 0

Class __pthread_cleanup_frame
   size=24 align=8
   base size=24 base align=8
__pthread_cleanup_frame (0x0x7fdc3d295c60) 0

Class __pthread_cleanup_class
   size=24 align=8
   base size=24 base align=8
__pthread_cleanup_class (0x0x7fdc3d295cc0) 0

Class _IO_marker
   size=24 align=8
   base size=24 base align=8
_IO_marker (0x0x7fdc3cff8120) 0

Class _IO_FILE
   size=216 align=8
   base size=216 base align=8
_IO_FILE (0x0x7fdc3cff8180) 0

Class std::_Hash_impl
   size=1 align=1
   base size=0 base align=1
std::_Hash_impl (0x0x7fdc3cde9960) 0 empty

Class std::_Fnv_hash_impl
   size=1 align=1
   base size=0 base align=1
std::_Fnv_hash_impl (0x0x7fdc3cde99c0) 0 empty

Class std::__numeric_limits_base
   size=1 align=1
   base size=0 base align=1
std::__numeric_limits_base (0x0x7fdc3ce1e960) 0 empty

Class std::_Bit_reference
   size=16 align=8
   base size=16 base align=8
std::_Bit_reference (0x0x7fdc3cc0d780) 0

Class std::_Bit_iterator_base
   size=16 align=8
   base size=12 base align=8
std::_Bit_iterator_base (0x0x7fdc3ce01dd0) 0
  std::iterator<std::random_access_iterator_tag, bool> (0x0x7fdc3cc0d840) 0 empty

Class std::_Bit_iterator
   size=16 align=8
   base size=12 base align=8
std::_Bit_iterator (0x0x7fdc3ce01e38) 0
  std::_Bit_iterator_base (0x0x7fdc3ce01ea0) 0
    std::iterator<std::random_access_iterator_tag, bool> (0x0x7fdc3cc0d8a0) 0 empty

Class std::_Bit_const_iterator
   size=16 align=8
   base size=12 base align=8
std::_Bit_const_iterator (0x0x7fdc3ce01f08) 0
  std::_Bit_iterator_base (0x0x7fdc3ce01f70) 0
    std::iterator<std::random_access_iterator_tag, bool> (0x0x7fdc3cc0d900) 0 empty

Class std::random_device
   size=5000 align=8
   base size=5000 base align=8
std::random_device (0x0x7fdc3ca46720) 0

Class std::bernoulli_distribution::param_type
   size=8 align=8
   base size=8 base align=8
std::bernoulli_distribution::param_type (0x0x7fdc3cb2d4e0) 0

Class std::bernoulli_distribution
   size=8 align=8
   base size=8 base align=8
std::bernoulli_distribution (0x0x7fdc3cb2d480) 0

Class std::seed_seq
   size=24 align=8
   base size=24 base align=8
std::seed_seq (0x0x7fdc3c8cd480) 0

Class qIsNull(double)::U
   size=8 align=8
   base size=8 base align=8
qIsNull(double)::U (0x0x7fdc3b59ef60) 0

Class qIsNull(float)::U
   size=4 align=4
   base size=4 base align=4
qIsNull(float)::U (0x0x7fdc3b44f000) 0

Class QSysInfo
   size=1 align=1
   base size=0 base align=1
QSysInfo (0x0x7fdc3b4dda80) 0 empty

Class QMessageLogContext
   size=32 align=8
   base size=32 base align=8
QMessageLogContext (0x0x7fdc3b4ddae0) 0

Class QMessageLogger
   size=32 align=8
   base size=32 base align=8
QMessageLogger (0x0x7fdc3b4ddb40) 0

Class QFlag
   size=4 align=4
   base size=4 base align=4
QFlag (0x0x7fdc3b4ddba0) 0

Class QIncompatibleFlag
   size=4 align=4
   base size=4 base align=4
QIncompatibleFlag (0x0x7fdc3b4dde40) 0

Class std::__atomic_flag_base
   size=1 align=1
   base size=1 base align=1
std::__atomic_flag_base (0x0x7fdc3b5463c0) 0

Class std::atomic_flag
   size=1 align=1
   base size=1 base align=1
std::atomic_flag (0x0x7fdc3b4d7c98) 0
  std::__atomic_flag_base (0x0x7fdc3b546420) 0

Class QAtomicInt
   size=4 align=4
   base size=4 base align=4
QAtomicInt (0x0x7fdc3af83410) 0
  QAtomicInteger<int> (0x0x7fdc3af83478) 0
    QBasicAtomicInteger<int> (0x0x7fdc3af6ab40) 0

Class QInternal
   size=1 align=1
   base size=0 base align=1
QInternal (0x0x7fdc3ad27120) 0 empty

Class QtPrivate::QSlotObjectBase
   size=16 align=8
   base size=16 base align=8
QtPrivate::QSlotObjectBase (0x0x7fdc3a95a180) 0

Class QGenericArgument
   size=16 align=8
   base size=16 base align=8
QGenericArgument (0x0x7fdc3a95a2a0) 0

Class QGenericReturnArgument
   size=16 align=8
   base size=16 base align=8
QGenericReturnArgument (0x0x7fdc3aeccea0) 0
  QGenericArgument (0x0x7fdc3a95a300) 0

Class QMetaObject
   size=48 align=8
   base size=48 base align=8
QMetaObject (0x0x7fdc3a95a480) 0

Class QMetaObject::Connection
   size=8 align=8
   base size=8 base align=8
QMetaObject::Connection (0x0x7fdc3a95a540) 0

Class QLatin1Char
   size=1 align=1
   base size=1 base align=1
QLatin1Char (0x0x7fdc3aa365a0) 0

Class QChar
   size=2 align=2
   base size=2 base align=2
QChar (0x0x7fdc3aa36600) 0

Class QtPrivate::RefCount
   size=4 align=4
   base size=4 base align=4
QtPrivate::RefCount (0x0x7fdc3aa368a0) 0

Class QArrayData
   size=24 align=8
   base size=24 base align=8
QArrayData (0x0x7fdc3aa36900) 0

Class QtPrivate::QContainerImplHelper
   size=1 align=1
   base size=0 base align=1
QtPrivate::QContainerImplHelper (0x0x7fdc3aa36c60) 0 empty

Class std::locale
   size=8 align=8
   base size=8 base align=8
std::locale (0x0x7fdc3aa36cc0) 0

Vtable for std::locale::facet
std::locale::facet::_ZTVNSt6locale5facetE: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt6locale5facetE)
16    (int (*)(...))std::locale::facet::~facet
24    (int (*)(...))std::locale::facet::~facet

Class std::locale::facet
   size=16 align=8
   base size=12 base align=8
std::locale::facet (0x0x7fdc3aa36d20) 0
    vptr=((& std::locale::facet::_ZTVNSt6locale5facetE) + 16u)

Class std::locale::id
   size=8 align=8
   base size=8 base align=8
std::locale::id (0x0x7fdc3aa36d80) 0

Class std::locale::_Impl
   size=40 align=8
   base size=40 base align=8
std::locale::_Impl (0x0x7fdc3aa36de0) 0

Class std::__cow_string
   size=8 align=8
   base size=8 base align=8
std::__cow_string (0x0x7fdc3a7ce1e0) 0

Vtable for std::logic_error
std::logic_error::_ZTVSt11logic_error: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt11logic_error)
16    (int (*)(...))std::logic_error::~logic_error
24    (int (*)(...))std::logic_error::~logic_error
32    (int (*)(...))std::logic_error::what

Class std::logic_error
   size=16 align=8
   base size=16 base align=8
std::logic_error (0x0x7fdc3a79e4e0) 0
    vptr=((& std::logic_error::_ZTVSt11logic_error) + 16u)
  std::exception (0x0x7fdc3a7ce2a0) 0 nearly-empty
      primary-for std::logic_error (0x0x7fdc3a79e4e0)

Vtable for std::domain_error
std::domain_error::_ZTVSt12domain_error: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12domain_error)
16    (int (*)(...))std::domain_error::~domain_error
24    (int (*)(...))std::domain_error::~domain_error
32    (int (*)(...))std::logic_error::what

Class std::domain_error
   size=16 align=8
   base size=16 base align=8
std::domain_error (0x0x7fdc3a79e548) 0
    vptr=((& std::domain_error::_ZTVSt12domain_error) + 16u)
  std::logic_error (0x0x7fdc3a79e5b0) 0
      primary-for std::domain_error (0x0x7fdc3a79e548)
    std::exception (0x0x7fdc3a7ce300) 0 nearly-empty
        primary-for std::logic_error (0x0x7fdc3a79e5b0)

Vtable for std::invalid_argument
std::invalid_argument::_ZTVSt16invalid_argument: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt16invalid_argument)
16    (int (*)(...))std::invalid_argument::~invalid_argument
24    (int (*)(...))std::invalid_argument::~invalid_argument
32    (int (*)(...))std::logic_error::what

Class std::invalid_argument
   size=16 align=8
   base size=16 base align=8
std::invalid_argument (0x0x7fdc3a79e618) 0
    vptr=((& std::invalid_argument::_ZTVSt16invalid_argument) + 16u)
  std::logic_error (0x0x7fdc3a79e680) 0
      primary-for std::invalid_argument (0x0x7fdc3a79e618)
    std::exception (0x0x7fdc3a7ce360) 0 nearly-empty
        primary-for std::logic_error (0x0x7fdc3a79e680)

Vtable for std::length_error
std::length_error::_ZTVSt12length_error: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12length_error)
16    (int (*)(...))std::length_error::~length_error
24    (int (*)(...))std::length_error::~length_error
32    (int (*)(...))std::logic_error::what

Class std::length_error
   size=16 align=8
   base size=16 base align=8
std::length_error (0x0x7fdc3a79e6e8) 0
    vptr=((& std::length_error::_ZTVSt12length_error) + 16u)
  std::logic_error (0x0x7fdc3a79e750) 0
      primary-for std::length_error (0x0x7fdc3a79e6e8)
    std::exception (0x0x7fdc3a7ce3c0) 0 nearly-empty
        primary-for std::logic_error (0x0x7fdc3a79e750)

Vtable for std::out_of_range
std::out_of_range::_ZTVSt12out_of_range: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12out_of_range)
16    (int (*)(...))std::out_of_range::~out_of_range
24    (int (*)(...))std::out_of_range::~out_of_range
32    (int (*)(...))std::logic_error::what

Class std::out_of_range
   size=16 align=8
   base size=16 base align=8
std::out_of_range (0x0x7fdc3a79e7b8) 0
    vptr=((& std::out_of_range::_ZTVSt12out_of_range) + 16u)
  std::logic_error (0x0x7fdc3a79e820) 0
      primary-for std::out_of_range (0x0x7fdc3a79e7b8)
    std::exception (0x0x7fdc3a7ce420) 0 nearly-empty
        primary-for std::logic_error (0x0x7fdc3a79e820)

Vtable for std::runtime_error
std::runtime_error::_ZTVSt13runtime_error: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt13runtime_error)
16    (int (*)(...))std::runtime_error::~runtime_error
24    (int (*)(...))std::runtime_error::~runtime_error
32    (int (*)(...))std::runtime_error::what

Class std::runtime_error
   size=16 align=8
   base size=16 base align=8
std::runtime_error (0x0x7fdc3a79e888) 0
    vptr=((& std::runtime_error::_ZTVSt13runtime_error) + 16u)
  std::exception (0x0x7fdc3a7ce480) 0 nearly-empty
      primary-for std::runtime_error (0x0x7fdc3a79e888)

Vtable for std::range_error
std::range_error::_ZTVSt11range_error: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt11range_error)
16    (int (*)(...))std::range_error::~range_error
24    (int (*)(...))std::range_error::~range_error
32    (int (*)(...))std::runtime_error::what

Class std::range_error
   size=16 align=8
   base size=16 base align=8
std::range_error (0x0x7fdc3a79e8f0) 0
    vptr=((& std::range_error::_ZTVSt11range_error) + 16u)
  std::runtime_error (0x0x7fdc3a79e958) 0
      primary-for std::range_error (0x0x7fdc3a79e8f0)
    std::exception (0x0x7fdc3a7ce4e0) 0 nearly-empty
        primary-for std::runtime_error (0x0x7fdc3a79e958)

Vtable for std::overflow_error
std::overflow_error::_ZTVSt14overflow_error: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt14overflow_error)
16    (int (*)(...))std::overflow_error::~overflow_error
24    (int (*)(...))std::overflow_error::~overflow_error
32    (int (*)(...))std::runtime_error::what

Class std::overflow_error
   size=16 align=8
   base size=16 base align=8
std::overflow_error (0x0x7fdc3a79e9c0) 0
    vptr=((& std::overflow_error::_ZTVSt14overflow_error) + 16u)
  std::runtime_error (0x0x7fdc3a79ea28) 0
      primary-for std::overflow_error (0x0x7fdc3a79e9c0)
    std::exception (0x0x7fdc3a7ce540) 0 nearly-empty
        primary-for std::runtime_error (0x0x7fdc3a79ea28)

Vtable for std::underflow_error
std::underflow_error::_ZTVSt15underflow_error: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt15underflow_error)
16    (int (*)(...))std::underflow_error::~underflow_error
24    (int (*)(...))std::underflow_error::~underflow_error
32    (int (*)(...))std::runtime_error::what

Class std::underflow_error
   size=16 align=8
   base size=16 base align=8
std::underflow_error (0x0x7fdc3a79ea90) 0
    vptr=((& std::underflow_error::_ZTVSt15underflow_error) + 16u)
  std::runtime_error (0x0x7fdc3a79eaf8) 0
      primary-for std::underflow_error (0x0x7fdc3a79ea90)
    std::exception (0x0x7fdc3a7ce5a0) 0 nearly-empty
        primary-for std::runtime_error (0x0x7fdc3a79eaf8)

Vtable for std::_V2::error_category
std::_V2::error_category::_ZTVNSt3_V214error_categoryE: 10u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt3_V214error_categoryE)
16    0u
24    0u
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))std::_V2::error_category::_M_message
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))std::_V2::error_category::default_error_condition
64    (int (*)(...))std::_V2::error_category::equivalent
72    (int (*)(...))std::_V2::error_category::equivalent

Class std::_V2::error_category
   size=8 align=8
   base size=8 base align=8
std::_V2::error_category (0x0x7fdc3a7ce720) 0 nearly-empty
    vptr=((& std::_V2::error_category::_ZTVNSt3_V214error_categoryE) + 16u)

Class std::error_code
   size=16 align=8
   base size=16 base align=8
std::error_code (0x0x7fdc3a7ce960) 0

Class std::error_condition
   size=16 align=8
   base size=16 base align=8
std::error_condition (0x0x7fdc3a7ceae0) 0

Vtable for std::system_error
std::system_error::_ZTVSt12system_error: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12system_error)
16    (int (*)(...))std::system_error::~system_error
24    (int (*)(...))std::system_error::~system_error
32    (int (*)(...))std::runtime_error::what

Class std::system_error
   size=32 align=8
   base size=32 base align=8
std::system_error (0x0x7fdc3a79e208) 0
    vptr=((& std::system_error::_ZTVSt12system_error) + 16u)
  std::runtime_error (0x0x7fdc3a79e2d8) 0
      primary-for std::system_error (0x0x7fdc3a79e208)
    std::exception (0x0x7fdc3a7ced20) 0 nearly-empty
        primary-for std::runtime_error (0x0x7fdc3a79e2d8)

Vtable for std::ios_base::failure
std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt8ios_base7failureB5cxx11E)
16    (int (*)(...))std::ios_base::failure::~failure
24    (int (*)(...))std::ios_base::failure::~failure
32    (int (*)(...))std::ios_base::failure::what

Class std::ios_base::failure
   size=32 align=8
   base size=32 base align=8
std::ios_base::failure (0x0x7fdc3a869b60) 0
    vptr=((& std::ios_base::failure::_ZTVNSt8ios_base7failureB5cxx11E) + 16u)
  std::system_error (0x0x7fdc3a869bc8) 0
      primary-for std::ios_base::failure (0x0x7fdc3a869b60)
    std::runtime_error (0x0x7fdc3a869c30) 0
        primary-for std::system_error (0x0x7fdc3a869bc8)
      std::exception (0x0x7fdc3a899060) 0 nearly-empty
          primary-for std::runtime_error (0x0x7fdc3a869c30)

Class std::ios_base::_Callback_list
   size=24 align=8
   base size=24 base align=8
std::ios_base::_Callback_list (0x0x7fdc3a8990c0) 0

Class std::ios_base::_Words
   size=16 align=8
   base size=16 base align=8
std::ios_base::_Words (0x0x7fdc3a899120) 0

Class std::ios_base::Init
   size=1 align=1
   base size=0 base align=1
std::ios_base::Init (0x0x7fdc3a899180) 0 empty

Vtable for std::ios_base
std::ios_base::_ZTVSt8ios_base: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt8ios_base)
16    (int (*)(...))std::ios_base::~ios_base
24    (int (*)(...))std::ios_base::~ios_base

Class std::ios_base
   size=216 align=8
   base size=216 base align=8
std::ios_base (0x0x7fdc3a899000) 0
    vptr=((& std::ios_base::_ZTVSt8ios_base) + 16u)

Class std::ctype_base
   size=1 align=1
   base size=0 base align=1
std::ctype_base (0x0x7fdc3a899900) 0 empty

Class std::__num_base
   size=1 align=1
   base size=0 base align=1
std::__num_base (0x0x7fdc3a61e000) 0 empty

VTT for std::basic_ostream<char>
std::basic_ostream<char>::_ZTTSo: 2u entries
0     ((& std::basic_ostream<char>::_ZTVSo) + 24u)
8     ((& std::basic_ostream<char>::_ZTVSo) + 64u)

VTT for std::basic_ostream<wchar_t>
std::basic_ostream<wchar_t>::_ZTTSt13basic_ostreamIwSt11char_traitsIwEE: 2u entries
0     ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 24u)
8     ((& std::basic_ostream<wchar_t>::_ZTVSt13basic_ostreamIwSt11char_traitsIwEE) + 64u)

VTT for std::basic_istream<char>
std::basic_istream<char>::_ZTTSi: 2u entries
0     ((& std::basic_istream<char>::_ZTVSi) + 24u)
8     ((& std::basic_istream<char>::_ZTVSi) + 64u)

VTT for std::basic_istream<wchar_t>
std::basic_istream<wchar_t>::_ZTTSt13basic_istreamIwSt11char_traitsIwEE: 2u entries
0     ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 24u)
8     ((& std::basic_istream<wchar_t>::_ZTVSt13basic_istreamIwSt11char_traitsIwEE) + 64u)

Construction vtable for std::basic_istream<char> (0x0x7fdc3a519548 instance) in std::basic_iostream<char>
std::basic_iostream<char>::_ZTCSd0_Si: 10u entries
0     24u
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISi)
24    0u
32    0u
40    18446744073709551592u
48    (int (*)(...))-24
56    (int (*)(...))(& _ZTISi)
64    0u
72    0u

Construction vtable for std::basic_ostream<char> (0x0x7fdc3a519618 instance) in std::basic_iostream<char>
std::basic_iostream<char>::_ZTCSd16_So: 10u entries
0     8u
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISo)
24    0u
32    0u
40    18446744073709551608u
48    (int (*)(...))-8
56    (int (*)(...))(& _ZTISo)
64    0u
72    0u

VTT for std::basic_iostream<char>
std::basic_iostream<char>::_ZTTSd: 7u entries
0     ((& std::basic_iostream<char>::_ZTVSd) + 24u)
8     ((& std::basic_iostream<char>::_ZTCSd0_Si) + 24u)
16    ((& std::basic_iostream<char>::_ZTCSd0_Si) + 64u)
24    ((& std::basic_iostream<char>::_ZTCSd16_So) + 24u)
32    ((& std::basic_iostream<char>::_ZTCSd16_So) + 64u)
40    ((& std::basic_iostream<char>::_ZTVSd) + 104u)
48    ((& std::basic_iostream<char>::_ZTVSd) + 64u)

Construction vtable for std::basic_istream<wchar_t> (0x0x7fdc3a5199c0 instance) in std::basic_iostream<wchar_t>
std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E: 10u entries
0     24u
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
24    0u
32    0u
40    18446744073709551592u
48    (int (*)(...))-24
56    (int (*)(...))(& _ZTISt13basic_istreamIwSt11char_traitsIwEE)
64    0u
72    0u

Construction vtable for std::basic_ostream<wchar_t> (0x0x7fdc3a519a90 instance) in std::basic_iostream<wchar_t>
std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E: 10u entries
0     8u
8     (int (*)(...))0
16    (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
24    0u
32    0u
40    18446744073709551608u
48    (int (*)(...))-8
56    (int (*)(...))(& _ZTISt13basic_ostreamIwSt11char_traitsIwEE)
64    0u
72    0u

VTT for std::basic_iostream<wchar_t>
std::basic_iostream<wchar_t>::_ZTTSt14basic_iostreamIwSt11char_traitsIwEE: 7u entries
0     ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 24u)
8     ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 24u)
16    ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE0_St13basic_istreamIwS1_E) + 64u)
24    ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 24u)
32    ((& std::basic_iostream<wchar_t>::_ZTCSt14basic_iostreamIwSt11char_traitsIwEE16_St13basic_ostreamIwS1_E) + 64u)
40    ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 104u)
48    ((& std::basic_iostream<wchar_t>::_ZTVSt14basic_iostreamIwSt11char_traitsIwEE) + 64u)

Class QByteArrayDataPtr
   size=8 align=8
   base size=8 base align=8
QByteArrayDataPtr (0x0x7fdc3a411840) 0

Class QByteArray
   size=8 align=8
   base size=8 base align=8
QByteArray (0x0x7fdc3a4118a0) 0

Class QByteRef
   size=16 align=8
   base size=12 base align=8
QByteRef (0x0x7fdc3a270c00) 0

Class QStringDataPtr
   size=8 align=8
   base size=8 base align=8
QStringDataPtr (0x0x7fdc3a270f60) 0

Class QStringView
   size=16 align=8
   base size=16 base align=8
QStringView (0x0x7fdc39f65420) 0

Class QLatin1String
   size=16 align=8
   base size=16 base align=8
QLatin1String (0x0x7fdc39fea2a0) 0

Class QString::Null
   size=1 align=1
   base size=0 base align=1
QString::Null (0x0x7fdc39fea900) 0 empty

Class QString
   size=8 align=8
   base size=8 base align=8
QString (0x0x7fdc39fea8a0) 0

Class QCharRef
   size=16 align=8
   base size=12 base align=8
QCharRef (0x0x7fdc39dc79c0) 0

Class QStringRef
   size=16 align=8
   base size=16 base align=8
QStringRef (0x0x7fdc39b60600) 0

Class QtPrivate::QHashCombine
   size=1 align=1
   base size=0 base align=1
QtPrivate::QHashCombine (0x0x7fdc3995c240) 0 empty

Class QtPrivate::QHashCombineCommutative
   size=1 align=1
   base size=0 base align=1
QtPrivate::QHashCombineCommutative (0x0x7fdc3995c2a0) 0 empty

Class std::__detail::_List_node_base
   size=16 align=8
   base size=16 base align=8
std::__detail::_List_node_base (0x0x7fdc3995c300) 0

Class QListData::NotArrayCompatibleLayout
   size=1 align=1
   base size=0 base align=1
QListData::NotArrayCompatibleLayout (0x0x7fdc3995c6c0) 0 empty

Class QListData::NotIndirectLayout
   size=1 align=1
   base size=0 base align=1
QListData::NotIndirectLayout (0x0x7fdc3995c720) 0 empty

Class QListData::ArrayCompatibleLayout
   size=1 align=1
   base size=1 base align=1
QListData::ArrayCompatibleLayout (0x0x7fdc3995f478) 0 empty
  QListData::NotIndirectLayout (0x0x7fdc3995c780) 0 empty

Class QListData::InlineWithPaddingLayout
   size=1 align=1
   base size=1 base align=1
QListData::InlineWithPaddingLayout (0x0x7fdc39a291c0) 0 empty
  QListData::NotArrayCompatibleLayout (0x0x7fdc3995c7e0) 0 empty
  QListData::NotIndirectLayout (0x0x7fdc3995c840) 0 empty

Class QListData::IndirectLayout
   size=1 align=1
   base size=1 base align=1
QListData::IndirectLayout (0x0x7fdc3995f4e0) 0 empty
  QListData::NotArrayCompatibleLayout (0x0x7fdc3995c8a0) 0 empty

Class QListData::Data
   size=24 align=8
   base size=24 base align=8
QListData::Data (0x0x7fdc3995c900) 0

Class QListData
   size=8 align=8
   base size=8 base align=8
QListData (0x0x7fdc3995c660) 0

Class QRegExp
   size=8 align=8
   base size=8 base align=8
QRegExp (0x0x7fdc3995cd80) 0

Class QStringMatcher::Data
   size=272 align=8
   base size=272 base align=8
QStringMatcher::Data (0x0x7fdc397eb000) 0

Class QStringMatcher
   size=1048 align=8
   base size=1048 base align=8
QStringMatcher (0x0x7fdc397bcf60) 0

Class QStringList
   size=8 align=8
   base size=8 base align=8
QStringList (0x0x7fdc397cdf08) 0
  QList<QString> (0x0x7fdc397cdf70) 0
    QListSpecialMethods<QString> (0x0x7fdc397eb1e0) 0 empty

Class QScopedPointerPodDeleter
   size=1 align=1
   base size=0 base align=1
QScopedPointerPodDeleter (0x0x7fdc397eb600) 0 empty

Class std::_Rb_tree_node_base
   size=32 align=8
   base size=32 base align=8
std::_Rb_tree_node_base (0x0x7fdc39903120) 0

Class std::allocator_arg_t
   size=1 align=1
   base size=0 base align=1
std::allocator_arg_t (0x0x7fdc39903780) 0 empty

Class std::__uses_alloc_base
   size=1 align=1
   base size=0 base align=1
std::__uses_alloc_base (0x0x7fdc39903900) 0 empty

Class std::__uses_alloc0::_Sink
   size=1 align=1
   base size=0 base align=1
std::__uses_alloc0::_Sink (0x0x7fdc399039c0) 0 empty

Class std::__uses_alloc0
   size=1 align=1
   base size=1 base align=1
std::__uses_alloc0 (0x0x7fdc39835888) 0
  std::__uses_alloc_base (0x0x7fdc39903960) 0 empty

Class std::_Swallow_assign
   size=1 align=1
   base size=0 base align=1
std::_Swallow_assign (0x0x7fdc3933ba20) 0 empty

Class QtPrivate::AbstractDebugStreamFunction
   size=16 align=8
   base size=16 base align=8
QtPrivate::AbstractDebugStreamFunction (0x0x7fdc3933bc60) 0

Class QtPrivate::AbstractComparatorFunction
   size=24 align=8
   base size=24 base align=8
QtPrivate::AbstractComparatorFunction (0x0x7fdc3933bd20) 0

Class QtPrivate::AbstractConverterFunction
   size=8 align=8
   base size=8 base align=8
QtPrivate::AbstractConverterFunction (0x0x7fdc3933be40) 0

Class QMetaType
   size=80 align=8
   base size=80 base align=8
QMetaType (0x0x7fdc39442000) 0

Class QtMetaTypePrivate::VariantData
   size=24 align=8
   base size=20 base align=8
QtMetaTypePrivate::VariantData (0x0x7fdc39442420) 0

Class QtMetaTypePrivate::VectorBoolElements
   size=1 align=1
   base size=0 base align=1
QtMetaTypePrivate::VectorBoolElements (0x0x7fdc39442540) 0 empty

Class QtMetaTypePrivate::QSequentialIterableImpl
   size=104 align=8
   base size=104 base align=8
QtMetaTypePrivate::QSequentialIterableImpl (0x0x7fdc39442ea0) 0

Class QtMetaTypePrivate::QAssociativeIterableImpl
   size=112 align=8
   base size=112 base align=8
QtMetaTypePrivate::QAssociativeIterableImpl (0x0x7fdc39163300) 0

Class QtMetaTypePrivate::QPairVariantInterfaceImpl
   size=40 align=8
   base size=40 base align=8
QtMetaTypePrivate::QPairVariantInterfaceImpl (0x0x7fdc39163600) 0

Class std::chrono::_V2::system_clock
   size=1 align=1
   base size=0 base align=1
std::chrono::_V2::system_clock (0x0x7fdc38f93e40) 0 empty

Class std::chrono::_V2::steady_clock
   size=1 align=1
   base size=0 base align=1
std::chrono::_V2::steady_clock (0x0x7fdc39104cc0) 0 empty

Vtable for QObjectData
QObjectData::_ZTV11QObjectData: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QObjectData)
16    (int (*)(...))__cxa_pure_virtual
24    (int (*)(...))__cxa_pure_virtual

Class QObjectData
   size=48 align=8
   base size=48 base align=8
QObjectData (0x0x7fdc39104d20) 0
    vptr=((& QObjectData::_ZTV11QObjectData) + 16u)

Class QObject::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QObject::QPrivateSignal (0x0x7fdc39104f00) 0 empty

Vtable for QObject
QObject::_ZTV7QObject: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI7QObject)
16    (int (*)(...))QObject::metaObject
24    (int (*)(...))QObject::qt_metacast
32    (int (*)(...))QObject::qt_metacall
40    (int (*)(...))QObject::~QObject
48    (int (*)(...))QObject::~QObject
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QObject
   size=16 align=8
   base size=16 base align=8
QObject (0x0x7fdc39104ea0) 0
    vptr=((& QObject::_ZTV7QObject) + 16u)

Vtable for QObjectUserData
QObjectUserData::_ZTV15QObjectUserData: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QObjectUserData)
16    (int (*)(...))QObjectUserData::~QObjectUserData
24    (int (*)(...))QObjectUserData::~QObjectUserData

Class QObjectUserData
   size=8 align=8
   base size=8 base align=8
QObjectUserData (0x0x7fdc38dfe1e0) 0 nearly-empty
    vptr=((& QObjectUserData::_ZTV15QObjectUserData) + 16u)

Class QSignalBlocker
   size=16 align=8
   base size=10 base align=8
QSignalBlocker (0x0x7fdc38dfe240) 0

Class QAbstractAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractAnimation::QPrivateSignal (0x0x7fdc38dfe300) 0 empty

Vtable for QAbstractAnimation
QAbstractAnimation::_ZTV18QAbstractAnimation: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QAbstractAnimation)
16    (int (*)(...))QAbstractAnimation::metaObject
24    (int (*)(...))QAbstractAnimation::qt_metacast
32    (int (*)(...))QAbstractAnimation::qt_metacall
40    0u
48    0u
56    (int (*)(...))QAbstractAnimation::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))QAbstractAnimation::updateState
136   (int (*)(...))QAbstractAnimation::updateDirection

Class QAbstractAnimation
   size=16 align=8
   base size=16 base align=8
QAbstractAnimation (0x0x7fdc38dd3af8) 0
    vptr=((& QAbstractAnimation::_ZTV18QAbstractAnimation) + 16u)
  QObject (0x0x7fdc38dfe2a0) 0
      primary-for QAbstractAnimation (0x0x7fdc38dd3af8)

Class QAnimationDriver::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAnimationDriver::QPrivateSignal (0x0x7fdc38dfe3c0) 0 empty

Vtable for QAnimationDriver
QAnimationDriver::_ZTV16QAnimationDriver: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QAnimationDriver)
16    (int (*)(...))QAnimationDriver::metaObject
24    (int (*)(...))QAnimationDriver::qt_metacast
32    (int (*)(...))QAnimationDriver::qt_metacall
40    (int (*)(...))QAnimationDriver::~QAnimationDriver
48    (int (*)(...))QAnimationDriver::~QAnimationDriver
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAnimationDriver::advance
120   (int (*)(...))QAnimationDriver::elapsed
128   (int (*)(...))QAnimationDriver::start
136   (int (*)(...))QAnimationDriver::stop

Class QAnimationDriver
   size=16 align=8
   base size=16 base align=8
QAnimationDriver (0x0x7fdc38dd3b60) 0
    vptr=((& QAnimationDriver::_ZTV16QAnimationDriver) + 16u)
  QObject (0x0x7fdc38dfe360) 0
      primary-for QAnimationDriver (0x0x7fdc38dd3b60)

Class QEventLoop::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QEventLoop::QPrivateSignal (0x0x7fdc38dfe480) 0 empty

Vtable for QEventLoop
QEventLoop::_ZTV10QEventLoop: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QEventLoop)
16    (int (*)(...))QEventLoop::metaObject
24    (int (*)(...))QEventLoop::qt_metacast
32    (int (*)(...))QEventLoop::qt_metacall
40    (int (*)(...))QEventLoop::~QEventLoop
48    (int (*)(...))QEventLoop::~QEventLoop
56    (int (*)(...))QEventLoop::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QEventLoop
   size=16 align=8
   base size=16 base align=8
QEventLoop (0x0x7fdc38dd3bc8) 0
    vptr=((& QEventLoop::_ZTV10QEventLoop) + 16u)
  QObject (0x0x7fdc38dfe420) 0
      primary-for QEventLoop (0x0x7fdc38dd3bc8)

Class QEventLoopLocker
   size=8 align=8
   base size=8 base align=8
QEventLoopLocker (0x0x7fdc38dfe660) 0

Class QAbstractEventDispatcher::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractEventDispatcher::QPrivateSignal (0x0x7fdc38dfe720) 0 empty

Class QAbstractEventDispatcher::TimerInfo
   size=12 align=4
   base size=12 base align=4
QAbstractEventDispatcher::TimerInfo (0x0x7fdc38dfe780) 0

Vtable for QAbstractEventDispatcher
QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher: 28u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI24QAbstractEventDispatcher)
16    (int (*)(...))QAbstractEventDispatcher::metaObject
24    (int (*)(...))QAbstractEventDispatcher::qt_metacast
32    (int (*)(...))QAbstractEventDispatcher::qt_metacall
40    0u
48    0u
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))__cxa_pure_virtual
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))__cxa_pure_virtual
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))__cxa_pure_virtual
176   (int (*)(...))__cxa_pure_virtual
184   (int (*)(...))__cxa_pure_virtual
192   (int (*)(...))__cxa_pure_virtual
200   (int (*)(...))__cxa_pure_virtual
208   (int (*)(...))QAbstractEventDispatcher::startingUp
216   (int (*)(...))QAbstractEventDispatcher::closingDown

Class QAbstractEventDispatcher
   size=16 align=8
   base size=16 base align=8
QAbstractEventDispatcher (0x0x7fdc38dd3d00) 0
    vptr=((& QAbstractEventDispatcher::_ZTV24QAbstractEventDispatcher) + 16u)
  QObject (0x0x7fdc38dfe6c0) 0
      primary-for QAbstractEventDispatcher (0x0x7fdc38dd3d00)

Vtable for std::type_info
std::type_info::_ZTVSt9type_info: 8u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt9type_info)
16    (int (*)(...))std::type_info::~type_info
24    (int (*)(...))std::type_info::~type_info
32    (int (*)(...))std::type_info::__is_pointer_p
40    (int (*)(...))std::type_info::__is_function_p
48    (int (*)(...))std::type_info::__do_catch
56    (int (*)(...))std::type_info::__do_upcast

Class std::type_info
   size=16 align=8
   base size=16 base align=8
std::type_info (0x0x7fdc38dfea20) 0
    vptr=((& std::type_info::_ZTVSt9type_info) + 16u)

Vtable for std::bad_cast
std::bad_cast::_ZTVSt8bad_cast: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt8bad_cast)
16    (int (*)(...))std::bad_cast::~bad_cast
24    (int (*)(...))std::bad_cast::~bad_cast
32    (int (*)(...))std::bad_cast::what

Class std::bad_cast
   size=8 align=8
   base size=8 base align=8
std::bad_cast (0x0x7fdc38dd3f08) 0 nearly-empty
    vptr=((& std::bad_cast::_ZTVSt8bad_cast) + 16u)
  std::exception (0x0x7fdc38dfea80) 0 nearly-empty
      primary-for std::bad_cast (0x0x7fdc38dd3f08)

Vtable for std::bad_typeid
std::bad_typeid::_ZTVSt10bad_typeid: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt10bad_typeid)
16    (int (*)(...))std::bad_typeid::~bad_typeid
24    (int (*)(...))std::bad_typeid::~bad_typeid
32    (int (*)(...))std::bad_typeid::what

Class std::bad_typeid
   size=8 align=8
   base size=8 base align=8
std::bad_typeid (0x0x7fdc38dd3f70) 0 nearly-empty
    vptr=((& std::bad_typeid::_ZTVSt10bad_typeid) + 16u)
  std::exception (0x0x7fdc38dfeae0) 0 nearly-empty
      primary-for std::bad_typeid (0x0x7fdc38dd3f70)

Vtable for std::bad_function_call
std::bad_function_call::_ZTVSt17bad_function_call: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt17bad_function_call)
16    (int (*)(...))std::bad_function_call::~bad_function_call
24    (int (*)(...))std::bad_function_call::~bad_function_call
32    (int (*)(...))std::bad_function_call::what

Class std::bad_function_call
   size=8 align=8
   base size=8 base align=8
std::bad_function_call (0x0x7fdc38c221a0) 0 nearly-empty
    vptr=((& std::bad_function_call::_ZTVSt17bad_function_call) + 16u)
  std::exception (0x0x7fdc38bbcba0) 0 nearly-empty
      primary-for std::bad_function_call (0x0x7fdc38c221a0)

Class std::_Nocopy_types
   size=16 align=8
   base size=16 base align=8
std::_Nocopy_types (0x0x7fdc38bbcc60) 0

Class std::_Any_data
   size=16 align=8
   base size=16 base align=8
std::_Any_data (0x0x7fdc38bbccc0) 0

Class std::_Function_base
   size=24 align=8
   base size=24 base align=8
std::_Function_base (0x0x7fdc38bbcde0) 0

Class QMapNodeBase
   size=24 align=8
   base size=24 base align=8
QMapNodeBase (0x0x7fdc38c81300) 0

Class QMapDataBase
   size=40 align=8
   base size=40 base align=8
QMapDataBase (0x0x7fdc38c81840) 0

Class QHashData::Node
   size=16 align=8
   base size=16 base align=8
QHashData::Node (0x0x7fdc38c81c00) 0

Class QHashData
   size=48 align=8
   base size=44 base align=8
QHashData (0x0x7fdc38c81ba0) 0

Class QHashDummyValue
   size=1 align=1
   base size=0 base align=1
QHashDummyValue (0x0x7fdc38c81c60) 0 empty

Class QVariant::PrivateShared
   size=16 align=8
   base size=12 base align=8
QVariant::PrivateShared (0x0x7fdc389f8540) 0

Class QVariant::Private::Data
   size=8 align=8
   base size=8 base align=8
QVariant::Private::Data (0x0x7fdc389f8600) 0

Class QVariant::Private
   size=16 align=8
   base size=12 base align=8
QVariant::Private (0x0x7fdc389f85a0) 0

Class QVariant::Handler
   size=72 align=8
   base size=72 base align=8
QVariant::Handler (0x0x7fdc389f8660) 0

Class QVariant
   size=16 align=8
   base size=16 base align=8
QVariant (0x0x7fdc389f84e0) 0

Class QVariantComparisonHelper
   size=8 align=8
   base size=8 base align=8
QVariantComparisonHelper (0x0x7fdc3883e180) 0

Class QSequentialIterable::const_iterator
   size=112 align=8
   base size=112 base align=8
QSequentialIterable::const_iterator (0x0x7fdc3883e7e0) 0

Class QSequentialIterable
   size=104 align=8
   base size=104 base align=8
QSequentialIterable (0x0x7fdc3883e780) 0

Class QAssociativeIterable::const_iterator
   size=120 align=8
   base size=120 base align=8
QAssociativeIterable::const_iterator (0x0x7fdc3883e8a0) 0

Class QAssociativeIterable
   size=112 align=8
   base size=112 base align=8
QAssociativeIterable (0x0x7fdc3883e840) 0

Class QModelIndex
   size=24 align=8
   base size=24 base align=8
QModelIndex (0x0x7fdc38568ba0) 0

Class QPersistentModelIndex
   size=8 align=8
   base size=8 base align=8
QPersistentModelIndex (0x0x7fdc386982a0) 0

Class QAbstractItemModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractItemModel::QPrivateSignal (0x0x7fdc383369c0) 0 empty

Vtable for QAbstractItemModel
QAbstractItemModel::_ZTV18QAbstractItemModel: 48u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QAbstractItemModel)
16    (int (*)(...))QAbstractItemModel::metaObject
24    (int (*)(...))QAbstractItemModel::qt_metacast
32    (int (*)(...))QAbstractItemModel::qt_metacall
40    0u
48    0u
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))QAbstractItemModel::sibling
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))QAbstractItemModel::hasChildren
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))QAbstractItemModel::setData
176   (int (*)(...))QAbstractItemModel::headerData
184   (int (*)(...))QAbstractItemModel::setHeaderData
192   (int (*)(...))QAbstractItemModel::itemData
200   (int (*)(...))QAbstractItemModel::setItemData
208   (int (*)(...))QAbstractItemModel::mimeTypes
216   (int (*)(...))QAbstractItemModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QAbstractItemModel::dropMimeData
240   (int (*)(...))QAbstractItemModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QAbstractItemModel::insertRows
264   (int (*)(...))QAbstractItemModel::insertColumns
272   (int (*)(...))QAbstractItemModel::removeRows
280   (int (*)(...))QAbstractItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractItemModel::fetchMore
312   (int (*)(...))QAbstractItemModel::canFetchMore
320   (int (*)(...))QAbstractItemModel::flags
328   (int (*)(...))QAbstractItemModel::sort
336   (int (*)(...))QAbstractItemModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractItemModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractItemModel::submit
376   (int (*)(...))QAbstractItemModel::revert

Class QAbstractItemModel
   size=16 align=8
   base size=16 base align=8
QAbstractItemModel (0x0x7fdc38332f08) 0
    vptr=((& QAbstractItemModel::_ZTV18QAbstractItemModel) + 16u)
  QObject (0x0x7fdc38336960) 0
      primary-for QAbstractItemModel (0x0x7fdc38332f08)

Class QAbstractTableModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractTableModel::QPrivateSignal (0x0x7fdc38336d20) 0 empty

Vtable for QAbstractTableModel
QAbstractTableModel::_ZTV19QAbstractTableModel: 48u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QAbstractTableModel)
16    (int (*)(...))QAbstractTableModel::metaObject
24    (int (*)(...))QAbstractTableModel::qt_metacast
32    (int (*)(...))QAbstractTableModel::qt_metacall
40    0u
48    0u
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAbstractTableModel::index
120   (int (*)(...))QAbstractTableModel::parent
128   (int (*)(...))QAbstractTableModel::sibling
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))QAbstractTableModel::hasChildren
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))QAbstractItemModel::setData
176   (int (*)(...))QAbstractItemModel::headerData
184   (int (*)(...))QAbstractItemModel::setHeaderData
192   (int (*)(...))QAbstractItemModel::itemData
200   (int (*)(...))QAbstractItemModel::setItemData
208   (int (*)(...))QAbstractItemModel::mimeTypes
216   (int (*)(...))QAbstractItemModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QAbstractTableModel::dropMimeData
240   (int (*)(...))QAbstractItemModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QAbstractItemModel::insertRows
264   (int (*)(...))QAbstractItemModel::insertColumns
272   (int (*)(...))QAbstractItemModel::removeRows
280   (int (*)(...))QAbstractItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractItemModel::fetchMore
312   (int (*)(...))QAbstractItemModel::canFetchMore
320   (int (*)(...))QAbstractTableModel::flags
328   (int (*)(...))QAbstractItemModel::sort
336   (int (*)(...))QAbstractItemModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractItemModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractItemModel::submit
376   (int (*)(...))QAbstractItemModel::revert

Class QAbstractTableModel
   size=16 align=8
   base size=16 base align=8
QAbstractTableModel (0x0x7fdc3839b138) 0
    vptr=((& QAbstractTableModel::_ZTV19QAbstractTableModel) + 16u)
  QAbstractItemModel (0x0x7fdc3839b1a0) 0
      primary-for QAbstractTableModel (0x0x7fdc3839b138)
    QObject (0x0x7fdc38336cc0) 0
        primary-for QAbstractItemModel (0x0x7fdc3839b1a0)

Class QAbstractListModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractListModel::QPrivateSignal (0x0x7fdc38336de0) 0 empty

Vtable for QAbstractListModel
QAbstractListModel::_ZTV18QAbstractListModel: 48u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QAbstractListModel)
16    (int (*)(...))QAbstractListModel::metaObject
24    (int (*)(...))QAbstractListModel::qt_metacast
32    (int (*)(...))QAbstractListModel::qt_metacall
40    0u
48    0u
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAbstractListModel::index
120   (int (*)(...))QAbstractListModel::parent
128   (int (*)(...))QAbstractListModel::sibling
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))QAbstractListModel::columnCount
152   (int (*)(...))QAbstractListModel::hasChildren
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))QAbstractItemModel::setData
176   (int (*)(...))QAbstractItemModel::headerData
184   (int (*)(...))QAbstractItemModel::setHeaderData
192   (int (*)(...))QAbstractItemModel::itemData
200   (int (*)(...))QAbstractItemModel::setItemData
208   (int (*)(...))QAbstractItemModel::mimeTypes
216   (int (*)(...))QAbstractItemModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QAbstractListModel::dropMimeData
240   (int (*)(...))QAbstractItemModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QAbstractItemModel::insertRows
264   (int (*)(...))QAbstractItemModel::insertColumns
272   (int (*)(...))QAbstractItemModel::removeRows
280   (int (*)(...))QAbstractItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractItemModel::fetchMore
312   (int (*)(...))QAbstractItemModel::canFetchMore
320   (int (*)(...))QAbstractListModel::flags
328   (int (*)(...))QAbstractItemModel::sort
336   (int (*)(...))QAbstractItemModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractItemModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractItemModel::submit
376   (int (*)(...))QAbstractItemModel::revert

Class QAbstractListModel
   size=16 align=8
   base size=16 base align=8
QAbstractListModel (0x0x7fdc3839b208) 0
    vptr=((& QAbstractListModel::_ZTV18QAbstractListModel) + 16u)
  QAbstractItemModel (0x0x7fdc3839b270) 0
      primary-for QAbstractListModel (0x0x7fdc3839b208)
    QObject (0x0x7fdc38336d80) 0
        primary-for QAbstractItemModel (0x0x7fdc3839b270)

Vtable for QAbstractNativeEventFilter
QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI26QAbstractNativeEventFilter)
16    0u
24    0u
32    (int (*)(...))__cxa_pure_virtual

Class QAbstractNativeEventFilter
   size=16 align=8
   base size=16 base align=8
QAbstractNativeEventFilter (0x0x7fdc384440c0) 0
    vptr=((& QAbstractNativeEventFilter::_ZTV26QAbstractNativeEventFilter) + 16u)

Class QAbstractProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractProxyModel::QPrivateSignal (0x0x7fdc38444180) 0 empty

Vtable for QAbstractProxyModel
QAbstractProxyModel::_ZTV19QAbstractProxyModel: 53u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QAbstractProxyModel)
16    (int (*)(...))QAbstractProxyModel::metaObject
24    (int (*)(...))QAbstractProxyModel::qt_metacast
32    (int (*)(...))QAbstractProxyModel::qt_metacall
40    0u
48    0u
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))QAbstractProxyModel::sibling
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))QAbstractProxyModel::hasChildren
160   (int (*)(...))QAbstractProxyModel::data
168   (int (*)(...))QAbstractProxyModel::setData
176   (int (*)(...))QAbstractProxyModel::headerData
184   (int (*)(...))QAbstractProxyModel::setHeaderData
192   (int (*)(...))QAbstractProxyModel::itemData
200   (int (*)(...))QAbstractProxyModel::setItemData
208   (int (*)(...))QAbstractProxyModel::mimeTypes
216   (int (*)(...))QAbstractProxyModel::mimeData
224   (int (*)(...))QAbstractProxyModel::canDropMimeData
232   (int (*)(...))QAbstractProxyModel::dropMimeData
240   (int (*)(...))QAbstractProxyModel::supportedDropActions
248   (int (*)(...))QAbstractProxyModel::supportedDragActions
256   (int (*)(...))QAbstractItemModel::insertRows
264   (int (*)(...))QAbstractItemModel::insertColumns
272   (int (*)(...))QAbstractItemModel::removeRows
280   (int (*)(...))QAbstractItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractProxyModel::fetchMore
312   (int (*)(...))QAbstractProxyModel::canFetchMore
320   (int (*)(...))QAbstractProxyModel::flags
328   (int (*)(...))QAbstractProxyModel::sort
336   (int (*)(...))QAbstractProxyModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractProxyModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractProxyModel::submit
376   (int (*)(...))QAbstractProxyModel::revert
384   (int (*)(...))QAbstractProxyModel::setSourceModel
392   (int (*)(...))__cxa_pure_virtual
400   (int (*)(...))__cxa_pure_virtual
408   (int (*)(...))QAbstractProxyModel::mapSelectionToSource
416   (int (*)(...))QAbstractProxyModel::mapSelectionFromSource

Class QAbstractProxyModel
   size=16 align=8
   base size=16 base align=8
QAbstractProxyModel (0x0x7fdc3839b3a8) 0
    vptr=((& QAbstractProxyModel::_ZTV19QAbstractProxyModel) + 16u)
  QAbstractItemModel (0x0x7fdc3839b410) 0
      primary-for QAbstractProxyModel (0x0x7fdc3839b3a8)
    QObject (0x0x7fdc38444120) 0
        primary-for QAbstractItemModel (0x0x7fdc3839b410)

Class QAbstractState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractState::QPrivateSignal (0x0x7fdc38444240) 0 empty

Vtable for QAbstractState
QAbstractState::_ZTV14QAbstractState: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QAbstractState)
16    (int (*)(...))QAbstractState::metaObject
24    (int (*)(...))QAbstractState::qt_metacast
32    (int (*)(...))QAbstractState::qt_metacall
40    0u
48    0u
56    (int (*)(...))QAbstractState::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual

Class QAbstractState
   size=16 align=8
   base size=16 base align=8
QAbstractState (0x0x7fdc3839b478) 0
    vptr=((& QAbstractState::_ZTV14QAbstractState) + 16u)
  QObject (0x0x7fdc384441e0) 0
      primary-for QAbstractState (0x0x7fdc3839b478)

Class QAbstractTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractTransition::QPrivateSignal (0x0x7fdc38444300) 0 empty

Vtable for QAbstractTransition
QAbstractTransition::_ZTV19QAbstractTransition: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QAbstractTransition)
16    (int (*)(...))QAbstractTransition::metaObject
24    (int (*)(...))QAbstractTransition::qt_metacast
32    (int (*)(...))QAbstractTransition::qt_metacall
40    0u
48    0u
56    (int (*)(...))QAbstractTransition::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual

Class QAbstractTransition
   size=16 align=8
   base size=16 base align=8
QAbstractTransition (0x0x7fdc3839b4e0) 0
    vptr=((& QAbstractTransition::_ZTV19QAbstractTransition) + 16u)
  QObject (0x0x7fdc384442a0) 0
      primary-for QAbstractTransition (0x0x7fdc3839b4e0)

Class QAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAnimationGroup::QPrivateSignal (0x0x7fdc384443c0) 0 empty

Vtable for QAnimationGroup
QAnimationGroup::_ZTV15QAnimationGroup: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QAnimationGroup)
16    (int (*)(...))QAnimationGroup::metaObject
24    (int (*)(...))QAnimationGroup::qt_metacast
32    (int (*)(...))QAnimationGroup::qt_metacall
40    0u
48    0u
56    (int (*)(...))QAnimationGroup::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))QAbstractAnimation::updateState
136   (int (*)(...))QAbstractAnimation::updateDirection

Class QAnimationGroup
   size=16 align=8
   base size=16 base align=8
QAnimationGroup (0x0x7fdc3839b548) 0
    vptr=((& QAnimationGroup::_ZTV15QAnimationGroup) + 16u)
  QAbstractAnimation (0x0x7fdc3839b5b0) 0
      primary-for QAnimationGroup (0x0x7fdc3839b548)
    QObject (0x0x7fdc38444360) 0
        primary-for QAbstractAnimation (0x0x7fdc3839b5b0)

Class QBasicTimer
   size=4 align=4
   base size=4 base align=4
QBasicTimer (0x0x7fdc384dd120) 0

Class QBitArray
   size=8 align=8
   base size=8 base align=8
QBitArray (0x0x7fdc384dd3c0) 0

Class QBitRef
   size=16 align=8
   base size=12 base align=8
QBitRef (0x0x7fdc384dd480) 0

Class QIODevice::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QIODevice::QPrivateSignal (0x0x7fdc384dd780) 0 empty

Vtable for QIODevice
QIODevice::_ZTV9QIODevice: 30u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QIODevice)
16    (int (*)(...))QIODevice::metaObject
24    (int (*)(...))QIODevice::qt_metacast
32    (int (*)(...))QIODevice::qt_metacall
40    0u
48    0u
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QIODevice::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QIODevice::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QIODevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QIODevice::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))__cxa_pure_virtual
224   (int (*)(...))QIODevice::readLineData
232   (int (*)(...))__cxa_pure_virtual

Class QIODevice
   size=16 align=8
   base size=16 base align=8
QIODevice (0x0x7fdc3839bc30) 0
    vptr=((& QIODevice::_ZTV9QIODevice) + 16u)
  QObject (0x0x7fdc384dd720) 0
      primary-for QIODevice (0x0x7fdc3839bc30)

Class QBuffer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QBuffer::QPrivateSignal (0x0x7fdc384dd9c0) 0 empty

Vtable for QBuffer
QBuffer::_ZTV7QBuffer: 30u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI7QBuffer)
16    (int (*)(...))QBuffer::metaObject
24    (int (*)(...))QBuffer::qt_metacast
32    (int (*)(...))QBuffer::qt_metacall
40    (int (*)(...))QBuffer::~QBuffer
48    (int (*)(...))QBuffer::~QBuffer
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QBuffer::connectNotify
104   (int (*)(...))QBuffer::disconnectNotify
112   (int (*)(...))QIODevice::isSequential
120   (int (*)(...))QBuffer::open
128   (int (*)(...))QBuffer::close
136   (int (*)(...))QBuffer::pos
144   (int (*)(...))QBuffer::size
152   (int (*)(...))QBuffer::seek
160   (int (*)(...))QBuffer::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QBuffer::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))QBuffer::readData
224   (int (*)(...))QIODevice::readLineData
232   (int (*)(...))QBuffer::writeData

Class QBuffer
   size=16 align=8
   base size=16 base align=8
QBuffer (0x0x7fdc3839bd68) 0
    vptr=((& QBuffer::_ZTV7QBuffer) + 16u)
  QIODevice (0x0x7fdc3839bdd0) 0
      primary-for QBuffer (0x0x7fdc3839bd68)
    QObject (0x0x7fdc384dd960) 0
        primary-for QIODevice (0x0x7fdc3839bdd0)

Class QByteArrayMatcher::Data
   size=272 align=8
   base size=272 base align=8
QByteArrayMatcher::Data (0x0x7fdc384dda80) 0

Class QByteArrayMatcher
   size=1040 align=8
   base size=1040 base align=8
QByteArrayMatcher (0x0x7fdc384dda20) 0

Class QStaticByteArrayMatcherBase::Skiptable
   size=256 align=1
   base size=256 base align=1
QStaticByteArrayMatcherBase::Skiptable (0x0x7fdc384ddba0) 0

Class QStaticByteArrayMatcherBase
   size=256 align=16
   base size=256 base align=16
QStaticByteArrayMatcherBase (0x0x7fdc384ddb40) 0

Class QSharedData
   size=4 align=4
   base size=4 base align=4
QSharedData (0x0x7fdc384ddd80) 0

Class QLocale
   size=8 align=8
   base size=8 base align=8
QLocale (0x0x7fdc384ddf60) 0

Class QCollatorSortKey
   size=8 align=8
   base size=8 base align=8
QCollatorSortKey (0x0x7fdc382a55a0) 0

Class QCollator
   size=8 align=8
   base size=8 base align=8
QCollator (0x0x7fdc382a5660) 0

Class QCommandLineOption
   size=8 align=8
   base size=8 base align=8
QCommandLineOption (0x0x7fdc37f59660) 0

Vtable for QEvent
QEvent::_ZTV6QEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI6QEvent)
16    (int (*)(...))QEvent::~QEvent
24    (int (*)(...))QEvent::~QEvent

Class QEvent
   size=24 align=8
   base size=20 base align=8
QEvent (0x0x7fdc37f59ae0) 0
    vptr=((& QEvent::_ZTV6QEvent) + 16u)

Vtable for QTimerEvent
QTimerEvent::_ZTV11QTimerEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QTimerEvent)
16    (int (*)(...))QTimerEvent::~QTimerEvent
24    (int (*)(...))QTimerEvent::~QTimerEvent

Class QTimerEvent
   size=24 align=8
   base size=24 base align=8
QTimerEvent (0x0x7fdc37f6d2d8) 0
    vptr=((& QTimerEvent::_ZTV11QTimerEvent) + 16u)
  QEvent (0x0x7fdc37f59b40) 0
      primary-for QTimerEvent (0x0x7fdc37f6d2d8)

Vtable for QChildEvent
QChildEvent::_ZTV11QChildEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QChildEvent)
16    (int (*)(...))QChildEvent::~QChildEvent
24    (int (*)(...))QChildEvent::~QChildEvent

Class QChildEvent
   size=32 align=8
   base size=32 base align=8
QChildEvent (0x0x7fdc37f6d340) 0
    vptr=((& QChildEvent::_ZTV11QChildEvent) + 16u)
  QEvent (0x0x7fdc37f59ba0) 0
      primary-for QChildEvent (0x0x7fdc37f6d340)

Vtable for QDynamicPropertyChangeEvent
QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI27QDynamicPropertyChangeEvent)
16    (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent
24    (int (*)(...))QDynamicPropertyChangeEvent::~QDynamicPropertyChangeEvent

Class QDynamicPropertyChangeEvent
   size=32 align=8
   base size=32 base align=8
QDynamicPropertyChangeEvent (0x0x7fdc37f6d888) 0
    vptr=((& QDynamicPropertyChangeEvent::_ZTV27QDynamicPropertyChangeEvent) + 16u)
  QEvent (0x0x7fdc37fe30c0) 0
      primary-for QDynamicPropertyChangeEvent (0x0x7fdc37f6d888)

Vtable for QDeferredDeleteEvent
QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QDeferredDeleteEvent)
16    (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent
24    (int (*)(...))QDeferredDeleteEvent::~QDeferredDeleteEvent

Class QDeferredDeleteEvent
   size=24 align=8
   base size=24 base align=8
QDeferredDeleteEvent (0x0x7fdc37f6d8f0) 0
    vptr=((& QDeferredDeleteEvent::_ZTV20QDeferredDeleteEvent) + 16u)
  QEvent (0x0x7fdc37fe3120) 0
      primary-for QDeferredDeleteEvent (0x0x7fdc37f6d8f0)

Class QCoreApplication::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QCoreApplication::QPrivateSignal (0x0x7fdc37fe31e0) 0 empty

Vtable for QCoreApplication
QCoreApplication::_ZTV16QCoreApplication: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QCoreApplication)
16    (int (*)(...))QCoreApplication::metaObject
24    (int (*)(...))QCoreApplication::qt_metacast
32    (int (*)(...))QCoreApplication::qt_metacall
40    (int (*)(...))QCoreApplication::~QCoreApplication
48    (int (*)(...))QCoreApplication::~QCoreApplication
56    (int (*)(...))QCoreApplication::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QCoreApplication::notify
120   (int (*)(...))QCoreApplication::compressEvent

Class QCoreApplication
   size=16 align=8
   base size=16 base align=8
QCoreApplication (0x0x7fdc37f6d958) 0
    vptr=((& QCoreApplication::_ZTV16QCoreApplication) + 16u)
  QObject (0x0x7fdc37fe3180) 0
      primary-for QCoreApplication (0x0x7fdc37f6d958)

Class QCommandLineParser
   size=8 align=8
   base size=8 base align=8
QCommandLineParser (0x0x7fdc37fe3240) 0

Class QContiguousCacheData
   size=24 align=4
   base size=24 base align=4
QContiguousCacheData (0x0x7fdc37fe32a0) 0

Class QCryptographicHash
   size=8 align=8
   base size=8 base align=8
QCryptographicHash (0x0x7fdc37fe38a0) 0

Class QDataStream
   size=32 align=8
   base size=32 base align=8
QDataStream (0x0x7fdc37fe3900) 0

Class QtPrivate::StreamStateSaver
   size=16 align=8
   base size=12 base align=8
QtPrivate::StreamStateSaver (0x0x7fdc37fe39c0) 0

Class QDate
   size=8 align=8
   base size=8 base align=8
QDate (0x0x7fdc37fe3ea0) 0

Class QTime
   size=4 align=4
   base size=4 base align=4
QTime (0x0x7fdc37d02180) 0

Class QDateTime::ShortData
   size=8 align=8
   base size=8 base align=8
QDateTime::ShortData (0x0x7fdc37d02900) 0

Class QDateTime::Data
   size=8 align=8
   base size=8 base align=8
QDateTime::Data (0x0x7fdc37d02960) 0

Class QDateTime
   size=8 align=8
   base size=8 base align=8
QDateTime (0x0x7fdc37d028a0) 0

Class QElapsedTimer
   size=16 align=8
   base size=16 base align=8
QElapsedTimer (0x0x7fdc37dc9a80) 0

Class QDeadlineTimer
   size=16 align=8
   base size=16 base align=8
QDeadlineTimer (0x0x7fdc37dc9f60) 0

Vtable for QTextStream
QTextStream::_ZTV11QTextStream: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QTextStream)
16    (int (*)(...))QTextStream::~QTextStream
24    (int (*)(...))QTextStream::~QTextStream

Class QTextStream
   size=16 align=8
   base size=16 base align=8
QTextStream (0x0x7fdc37ae6f00) 0
    vptr=((& QTextStream::_ZTV11QTextStream) + 16u)

Class QTextStreamManipulator
   size=40 align=8
   base size=38 base align=8
QTextStreamManipulator (0x0x7fdc37b6d1e0) 0

Class QtSharedPointer::NormalDeleter
   size=1 align=1
   base size=0 base align=1
QtSharedPointer::NormalDeleter (0x0x7fdc37b6d420) 0 empty

Class QtSharedPointer::ExternalRefCountData
   size=16 align=8
   base size=16 base align=8
QtSharedPointer::ExternalRefCountData (0x0x7fdc37b6d5a0) 0

Class QDebug::Stream
   size=80 align=8
   base size=76 base align=8
QDebug::Stream (0x0x7fdc37b6dae0) 0

Class QDebug
   size=8 align=8
   base size=8 base align=8
QDebug (0x0x7fdc37b6da80) 0

Class QDebugStateSaver
   size=8 align=8
   base size=8 base align=8
QDebugStateSaver (0x0x7fdc379dd000) 0

Class QNoDebug
   size=1 align=1
   base size=0 base align=1
QNoDebug (0x0x7fdc379dd0c0) 0 empty

Class QFileDevice::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFileDevice::QPrivateSignal (0x0x7fdc37a82240) 0 empty

Vtable for QFileDevice
QFileDevice::_ZTV11QFileDevice: 34u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QFileDevice)
16    (int (*)(...))QFileDevice::metaObject
24    (int (*)(...))QFileDevice::qt_metacast
32    (int (*)(...))QFileDevice::qt_metacall
40    (int (*)(...))QFileDevice::~QFileDevice
48    (int (*)(...))QFileDevice::~QFileDevice
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QFileDevice::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QFileDevice::close
136   (int (*)(...))QFileDevice::pos
144   (int (*)(...))QFileDevice::size
152   (int (*)(...))QFileDevice::seek
160   (int (*)(...))QFileDevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QIODevice::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))QFileDevice::readData
224   (int (*)(...))QFileDevice::readLineData
232   (int (*)(...))QFileDevice::writeData
240   (int (*)(...))QFileDevice::fileName
248   (int (*)(...))QFileDevice::resize
256   (int (*)(...))QFileDevice::permissions
264   (int (*)(...))QFileDevice::setPermissions

Class QFileDevice
   size=16 align=8
   base size=16 base align=8
QFileDevice (0x0x7fdc37a75a28) 0
    vptr=((& QFileDevice::_ZTV11QFileDevice) + 16u)
  QIODevice (0x0x7fdc37a75a90) 0
      primary-for QFileDevice (0x0x7fdc37a75a28)
    QObject (0x0x7fdc37a821e0) 0
        primary-for QIODevice (0x0x7fdc37a75a90)

Class QFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFile::QPrivateSignal (0x0x7fdc37a82480) 0 empty

Vtable for QFile
QFile::_ZTV5QFile: 34u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI5QFile)
16    (int (*)(...))QFile::metaObject
24    (int (*)(...))QFile::qt_metacast
32    (int (*)(...))QFile::qt_metacall
40    (int (*)(...))QFile::~QFile
48    (int (*)(...))QFile::~QFile
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QFileDevice::isSequential
120   (int (*)(...))QFile::open
128   (int (*)(...))QFileDevice::close
136   (int (*)(...))QFileDevice::pos
144   (int (*)(...))QFile::size
152   (int (*)(...))QFileDevice::seek
160   (int (*)(...))QFileDevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QIODevice::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))QFileDevice::readData
224   (int (*)(...))QFileDevice::readLineData
232   (int (*)(...))QFileDevice::writeData
240   (int (*)(...))QFile::fileName
248   (int (*)(...))QFile::resize
256   (int (*)(...))QFile::permissions
264   (int (*)(...))QFile::setPermissions

Class QFile
   size=16 align=8
   base size=16 base align=8
QFile (0x0x7fdc37a75bc8) 0
    vptr=((& QFile::_ZTV5QFile) + 16u)
  QFileDevice (0x0x7fdc37a75c30) 0
      primary-for QFile (0x0x7fdc37a75bc8)
    QIODevice (0x0x7fdc37a75c98) 0
        primary-for QFileDevice (0x0x7fdc37a75c30)
      QObject (0x0x7fdc37a82420) 0
          primary-for QIODevice (0x0x7fdc37a75c98)

Class QFileInfo
   size=8 align=8
   base size=8 base align=8
QFileInfo (0x0x7fdc37a82660) 0

Class QDir
   size=8 align=8
   base size=8 base align=8
QDir (0x0x7fdc37a82a80) 0

Class QDirIterator
   size=8 align=8
   base size=8 base align=8
QDirIterator (0x0x7fdc3776c480) 0

Class QEasingCurve
   size=8 align=8
   base size=8 base align=8
QEasingCurve (0x0x7fdc3776c6c0) 0

Class QEventTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QEventTransition::QPrivateSignal (0x0x7fdc3788fae0) 0 empty

Vtable for QEventTransition
QEventTransition::_ZTV16QEventTransition: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QEventTransition)
16    (int (*)(...))QEventTransition::metaObject
24    (int (*)(...))QEventTransition::qt_metacast
32    (int (*)(...))QEventTransition::qt_metacall
40    (int (*)(...))QEventTransition::~QEventTransition
48    (int (*)(...))QEventTransition::~QEventTransition
56    (int (*)(...))QEventTransition::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QEventTransition::eventTest
120   (int (*)(...))QEventTransition::onTransition

Class QEventTransition
   size=16 align=8
   base size=16 base align=8
QEventTransition (0x0x7fdc3788ed00) 0
    vptr=((& QEventTransition::_ZTV16QEventTransition) + 16u)
  QAbstractTransition (0x0x7fdc3788ed68) 0
      primary-for QEventTransition (0x0x7fdc3788ed00)
    QObject (0x0x7fdc3788fa80) 0
        primary-for QAbstractTransition (0x0x7fdc3788ed68)

Vtable for QException
QException::_ZTV10QException: 7u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QException)
16    (int (*)(...))QException::~QException
24    (int (*)(...))QException::~QException
32    (int (*)(...))std::exception::what
40    (int (*)(...))QException::raise
48    (int (*)(...))QException::clone

Class QException
   size=8 align=8
   base size=8 base align=8
QException (0x0x7fdc3788edd0) 0 nearly-empty
    vptr=((& QException::_ZTV10QException) + 16u)
  std::exception (0x0x7fdc3788fb40) 0 nearly-empty
      primary-for QException (0x0x7fdc3788edd0)

Vtable for QUnhandledException
QUnhandledException::_ZTV19QUnhandledException: 7u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QUnhandledException)
16    (int (*)(...))QUnhandledException::~QUnhandledException
24    (int (*)(...))QUnhandledException::~QUnhandledException
32    (int (*)(...))std::exception::what
40    (int (*)(...))QUnhandledException::raise
48    (int (*)(...))QUnhandledException::clone

Class QUnhandledException
   size=8 align=8
   base size=8 base align=8
QUnhandledException (0x0x7fdc3788ee38) 0 nearly-empty
    vptr=((& QUnhandledException::_ZTV19QUnhandledException) + 16u)
  QException (0x0x7fdc3788eea0) 0 nearly-empty
      primary-for QUnhandledException (0x0x7fdc3788ee38)
    std::exception (0x0x7fdc3788fba0) 0 nearly-empty
        primary-for QException (0x0x7fdc3788eea0)

Class QtPrivate::ExceptionHolder
   size=8 align=8
   base size=8 base align=8
QtPrivate::ExceptionHolder (0x0x7fdc3788fc00) 0

Class QtPrivate::ExceptionStore
   size=8 align=8
   base size=8 base align=8
QtPrivate::ExceptionStore (0x0x7fdc3788fcc0) 0

Vtable for QFactoryInterface
QFactoryInterface::_ZTV17QFactoryInterface: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QFactoryInterface)
16    0u
24    0u
32    (int (*)(...))__cxa_pure_virtual

Class QFactoryInterface
   size=8 align=8
   base size=8 base align=8
QFactoryInterface (0x0x7fdc3788fd20) 0 nearly-empty
    vptr=((& QFactoryInterface::_ZTV17QFactoryInterface) + 16u)

Class QFileSelector::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFileSelector::QPrivateSignal (0x0x7fdc3788fe40) 0 empty

Vtable for QFileSelector
QFileSelector::_ZTV13QFileSelector: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QFileSelector)
16    (int (*)(...))QFileSelector::metaObject
24    (int (*)(...))QFileSelector::qt_metacast
32    (int (*)(...))QFileSelector::qt_metacall
40    (int (*)(...))QFileSelector::~QFileSelector
48    (int (*)(...))QFileSelector::~QFileSelector
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QFileSelector
   size=16 align=8
   base size=16 base align=8
QFileSelector (0x0x7fdc3788ef08) 0
    vptr=((& QFileSelector::_ZTV13QFileSelector) + 16u)
  QObject (0x0x7fdc3788fde0) 0
      primary-for QFileSelector (0x0x7fdc3788ef08)

Class QFileSystemWatcher::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFileSystemWatcher::QPrivateSignal (0x0x7fdc3788ff00) 0 empty

Vtable for QFileSystemWatcher
QFileSystemWatcher::_ZTV18QFileSystemWatcher: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QFileSystemWatcher)
16    (int (*)(...))QFileSystemWatcher::metaObject
24    (int (*)(...))QFileSystemWatcher::qt_metacast
32    (int (*)(...))QFileSystemWatcher::qt_metacall
40    (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
48    (int (*)(...))QFileSystemWatcher::~QFileSystemWatcher
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QFileSystemWatcher
   size=16 align=8
   base size=16 base align=8
QFileSystemWatcher (0x0x7fdc3788ef70) 0
    vptr=((& QFileSystemWatcher::_ZTV18QFileSystemWatcher) + 16u)
  QObject (0x0x7fdc3788fea0) 0
      primary-for QFileSystemWatcher (0x0x7fdc3788ef70)

Class QFinalState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFinalState::QPrivateSignal (0x0x7fdc3752c000) 0 empty

Vtable for QFinalState
QFinalState::_ZTV11QFinalState: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QFinalState)
16    (int (*)(...))QFinalState::metaObject
24    (int (*)(...))QFinalState::qt_metacast
32    (int (*)(...))QFinalState::qt_metacall
40    (int (*)(...))QFinalState::~QFinalState
48    (int (*)(...))QFinalState::~QFinalState
56    (int (*)(...))QFinalState::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QFinalState::onEntry
120   (int (*)(...))QFinalState::onExit

Class QFinalState
   size=16 align=8
   base size=16 base align=8
QFinalState (0x0x7fdc37529000) 0
    vptr=((& QFinalState::_ZTV11QFinalState) + 16u)
  QAbstractState (0x0x7fdc37529068) 0
      primary-for QFinalState (0x0x7fdc37529000)
    QObject (0x0x7fdc3788ff60) 0
        primary-for QAbstractState (0x0x7fdc37529068)

Vtable for QRunnable
QRunnable::_ZTV9QRunnable: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QRunnable)
16    (int (*)(...))__cxa_pure_virtual
24    0u
32    0u

Class QRunnable
   size=16 align=8
   base size=12 base align=8
QRunnable (0x0x7fdc3752c060) 0
    vptr=((& QRunnable::_ZTV9QRunnable) + 16u)

Class QBasicMutex
   size=8 align=8
   base size=8 base align=8
QBasicMutex (0x0x7fdc3752c0c0) 0

Class QMutex
   size=8 align=8
   base size=8 base align=8
QMutex (0x0x7fdc375291a0) 0
  QBasicMutex (0x0x7fdc3752c2a0) 0

Class QMutexLocker
   size=8 align=8
   base size=8 base align=8
QMutexLocker (0x0x7fdc3752c300) 0

Class QtPrivate::ResultItem
   size=16 align=8
   base size=16 base align=8
QtPrivate::ResultItem (0x0x7fdc3752c360) 0

Class QtPrivate::ResultIteratorBase
   size=16 align=8
   base size=12 base align=8
QtPrivate::ResultIteratorBase (0x0x7fdc3752c3c0) 0

Vtable for QtPrivate::ResultStoreBase
QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN9QtPrivate15ResultStoreBaseE)
16    (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase
24    (int (*)(...))QtPrivate::ResultStoreBase::~ResultStoreBase

Class QtPrivate::ResultStoreBase
   size=48 align=8
   base size=44 base align=8
QtPrivate::ResultStoreBase (0x0x7fdc3752c4e0) 0
    vptr=((& QtPrivate::ResultStoreBase::_ZTVN9QtPrivate15ResultStoreBaseE) + 16u)

Vtable for QFutureInterfaceBase
QFutureInterfaceBase::_ZTV20QFutureInterfaceBase: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QFutureInterfaceBase)
16    (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase
24    (int (*)(...))QFutureInterfaceBase::~QFutureInterfaceBase

Class QFutureInterfaceBase
   size=16 align=8
   base size=16 base align=8
QFutureInterfaceBase (0x0x7fdc3752cd20) 0
    vptr=((& QFutureInterfaceBase::_ZTV20QFutureInterfaceBase) + 16u)

Class QFutureWatcherBase::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QFutureWatcherBase::QPrivateSignal (0x0x7fdc376a1540) 0 empty

Vtable for QFutureWatcherBase
QFutureWatcherBase::_ZTV18QFutureWatcherBase: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QFutureWatcherBase)
16    (int (*)(...))QFutureWatcherBase::metaObject
24    (int (*)(...))QFutureWatcherBase::qt_metacast
32    (int (*)(...))QFutureWatcherBase::qt_metacall
40    0u
48    0u
56    (int (*)(...))QFutureWatcherBase::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QFutureWatcherBase::connectNotify
104   (int (*)(...))QFutureWatcherBase::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual

Class QFutureWatcherBase
   size=16 align=8
   base size=16 base align=8
QFutureWatcherBase (0x0x7fdc376a62d8) 0
    vptr=((& QFutureWatcherBase::_ZTV18QFutureWatcherBase) + 16u)
  QObject (0x0x7fdc376a14e0) 0
      primary-for QFutureWatcherBase (0x0x7fdc376a62d8)

Class QHistoryState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QHistoryState::QPrivateSignal (0x0x7fdc376a1b40) 0 empty

Vtable for QHistoryState
QHistoryState::_ZTV13QHistoryState: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QHistoryState)
16    (int (*)(...))QHistoryState::metaObject
24    (int (*)(...))QHistoryState::qt_metacast
32    (int (*)(...))QHistoryState::qt_metacall
40    (int (*)(...))QHistoryState::~QHistoryState
48    (int (*)(...))QHistoryState::~QHistoryState
56    (int (*)(...))QHistoryState::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QHistoryState::onEntry
120   (int (*)(...))QHistoryState::onExit

Class QHistoryState
   size=16 align=8
   base size=16 base align=8
QHistoryState (0x0x7fdc376a6bc8) 0
    vptr=((& QHistoryState::_ZTV13QHistoryState) + 16u)
  QAbstractState (0x0x7fdc376a6c30) 0
      primary-for QHistoryState (0x0x7fdc376a6bc8)
    QObject (0x0x7fdc376a1ae0) 0
        primary-for QAbstractState (0x0x7fdc376a6c30)

Class QIdentityProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QIdentityProxyModel::QPrivateSignal (0x0x7fdc376a1c00) 0 empty

Vtable for QIdentityProxyModel
QIdentityProxyModel::_ZTV19QIdentityProxyModel: 53u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QIdentityProxyModel)
16    (int (*)(...))QIdentityProxyModel::metaObject
24    (int (*)(...))QIdentityProxyModel::qt_metacast
32    (int (*)(...))QIdentityProxyModel::qt_metacall
40    (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
48    (int (*)(...))QIdentityProxyModel::~QIdentityProxyModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QIdentityProxyModel::index
120   (int (*)(...))QIdentityProxyModel::parent
128   (int (*)(...))QIdentityProxyModel::sibling
136   (int (*)(...))QIdentityProxyModel::rowCount
144   (int (*)(...))QIdentityProxyModel::columnCount
152   (int (*)(...))QAbstractProxyModel::hasChildren
160   (int (*)(...))QAbstractProxyModel::data
168   (int (*)(...))QAbstractProxyModel::setData
176   (int (*)(...))QIdentityProxyModel::headerData
184   (int (*)(...))QAbstractProxyModel::setHeaderData
192   (int (*)(...))QAbstractProxyModel::itemData
200   (int (*)(...))QAbstractProxyModel::setItemData
208   (int (*)(...))QAbstractProxyModel::mimeTypes
216   (int (*)(...))QAbstractProxyModel::mimeData
224   (int (*)(...))QAbstractProxyModel::canDropMimeData
232   (int (*)(...))QIdentityProxyModel::dropMimeData
240   (int (*)(...))QAbstractProxyModel::supportedDropActions
248   (int (*)(...))QAbstractProxyModel::supportedDragActions
256   (int (*)(...))QIdentityProxyModel::insertRows
264   (int (*)(...))QIdentityProxyModel::insertColumns
272   (int (*)(...))QIdentityProxyModel::removeRows
280   (int (*)(...))QIdentityProxyModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractProxyModel::fetchMore
312   (int (*)(...))QAbstractProxyModel::canFetchMore
320   (int (*)(...))QAbstractProxyModel::flags
328   (int (*)(...))QAbstractProxyModel::sort
336   (int (*)(...))QAbstractProxyModel::buddy
344   (int (*)(...))QIdentityProxyModel::match
352   (int (*)(...))QAbstractProxyModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractProxyModel::submit
376   (int (*)(...))QAbstractProxyModel::revert
384   (int (*)(...))QIdentityProxyModel::setSourceModel
392   (int (*)(...))QIdentityProxyModel::mapToSource
400   (int (*)(...))QIdentityProxyModel::mapFromSource
408   (int (*)(...))QIdentityProxyModel::mapSelectionToSource
416   (int (*)(...))QIdentityProxyModel::mapSelectionFromSource

Class QIdentityProxyModel
   size=16 align=8
   base size=16 base align=8
QIdentityProxyModel (0x0x7fdc376a6c98) 0
    vptr=((& QIdentityProxyModel::_ZTV19QIdentityProxyModel) + 16u)
  QAbstractProxyModel (0x0x7fdc376a6d00) 0
      primary-for QIdentityProxyModel (0x0x7fdc376a6c98)
    QAbstractItemModel (0x0x7fdc376a6d68) 0
        primary-for QAbstractProxyModel (0x0x7fdc376a6d00)
      QObject (0x0x7fdc376a1ba0) 0
          primary-for QAbstractItemModel (0x0x7fdc376a6d68)

Class QItemSelectionRange
   size=16 align=8
   base size=16 base align=8
QItemSelectionRange (0x0x7fdc376a1c60) 0

Class QItemSelectionModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QItemSelectionModel::QPrivateSignal (0x0x7fdc37371360) 0 empty

Vtable for QItemSelectionModel
QItemSelectionModel::_ZTV19QItemSelectionModel: 20u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QItemSelectionModel)
16    (int (*)(...))QItemSelectionModel::metaObject
24    (int (*)(...))QItemSelectionModel::qt_metacast
32    (int (*)(...))QItemSelectionModel::qt_metacall
40    (int (*)(...))QItemSelectionModel::~QItemSelectionModel
48    (int (*)(...))QItemSelectionModel::~QItemSelectionModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QItemSelectionModel::setCurrentIndex
120   (int (*)(...))QItemSelectionModel::select
128   (int (*)(...))QItemSelectionModel::select
136   (int (*)(...))QItemSelectionModel::clear
144   (int (*)(...))QItemSelectionModel::reset
152   (int (*)(...))QItemSelectionModel::clearCurrentIndex

Class QItemSelectionModel
   size=16 align=8
   base size=16 base align=8
QItemSelectionModel (0x0x7fdc3736a5b0) 0
    vptr=((& QItemSelectionModel::_ZTV19QItemSelectionModel) + 16u)
  QObject (0x0x7fdc37371300) 0
      primary-for QItemSelectionModel (0x0x7fdc3736a5b0)

Class QItemSelection
   size=8 align=8
   base size=8 base align=8
QItemSelection (0x0x7fdc3736a7b8) 0
  QList<QItemSelectionRange> (0x0x7fdc3736a820) 0
    QListSpecialMethods<QItemSelectionRange> (0x0x7fdc37371660) 0 empty

Class QJsonValue
   size=24 align=8
   base size=20 base align=8
QJsonValue (0x0x7fdc37371b40) 0

Class QJsonValueRef
   size=16 align=8
   base size=12 base align=8
QJsonValueRef (0x0x7fdc3717b2a0) 0

Class QJsonValuePtr
   size=24 align=8
   base size=24 base align=8
QJsonValuePtr (0x0x7fdc3717b7e0) 0

Class QJsonValueRefPtr
   size=16 align=8
   base size=16 base align=8
QJsonValueRefPtr (0x0x7fdc3717b840) 0

Class QJsonArray::iterator
   size=16 align=8
   base size=12 base align=8
QJsonArray::iterator (0x0x7fdc3717ba20) 0

Class QJsonArray::const_iterator
   size=16 align=8
   base size=12 base align=8
QJsonArray::const_iterator (0x0x7fdc3717ba80) 0

Class QJsonArray
   size=16 align=8
   base size=16 base align=8
QJsonArray (0x0x7fdc3717b9c0) 0

Class QJsonParseError
   size=8 align=4
   base size=8 base align=4
QJsonParseError (0x0x7fdc37283cc0) 0

Class QJsonDocument
   size=8 align=8
   base size=8 base align=8
QJsonDocument (0x0x7fdc37283d20) 0

Class QJsonObject::iterator
   size=16 align=8
   base size=12 base align=8
QJsonObject::iterator (0x0x7fdc36edb3c0) 0

Class QJsonObject::const_iterator
   size=16 align=8
   base size=12 base align=8
QJsonObject::const_iterator (0x0x7fdc36edb420) 0

Class QJsonObject
   size=16 align=8
   base size=16 base align=8
QJsonObject (0x0x7fdc36edb360) 0

Class QLibrary::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QLibrary::QPrivateSignal (0x0x7fdc36f916c0) 0 empty

Vtable for QLibrary
QLibrary::_ZTV8QLibrary: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI8QLibrary)
16    (int (*)(...))QLibrary::metaObject
24    (int (*)(...))QLibrary::qt_metacast
32    (int (*)(...))QLibrary::qt_metacall
40    (int (*)(...))QLibrary::~QLibrary
48    (int (*)(...))QLibrary::~QLibrary
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QLibrary
   size=32 align=8
   base size=25 base align=8
QLibrary (0x0x7fdc36f8eb60) 0
    vptr=((& QLibrary::_ZTV8QLibrary) + 16u)
  QObject (0x0x7fdc36f91660) 0
      primary-for QLibrary (0x0x7fdc36f8eb60)

Class QVersionNumber::SegmentStorage
   size=8 align=8
   base size=8 base align=8
QVersionNumber::SegmentStorage (0x0x7fdc36f91d80) 0

Class QVersionNumber
   size=8 align=8
   base size=8 base align=8
QVersionNumber (0x0x7fdc36f918a0) 0

Class QLibraryInfo
   size=1 align=1
   base size=0 base align=1
QLibraryInfo (0x0x7fdc3707f2a0) 0 empty

Class QPoint
   size=8 align=4
   base size=8 base align=4
QPoint (0x0x7fdc3707f300) 0

Class QPointF
   size=16 align=8
   base size=16 base align=8
QPointF (0x0x7fdc3707f5a0) 0

Class QLine
   size=16 align=4
   base size=16 base align=4
QLine (0x0x7fdc3707f840) 0

Class QLineF
   size=32 align=8
   base size=32 base align=8
QLineF (0x0x7fdc36d2a1e0) 0

Class QLinkedListData
   size=32 align=8
   base size=25 base align=8
QLinkedListData (0x0x7fdc36d2ab40) 0

Class QLockFile
   size=8 align=8
   base size=8 base align=8
QLockFile (0x0x7fdc36d2aea0) 0

Class QLoggingCategory::AtomicBools
   size=4 align=1
   base size=4 base align=1
QLoggingCategory::AtomicBools (0x0x7fdc36e50060) 0

Class QLoggingCategory
   size=24 align=8
   base size=24 base align=8
QLoggingCategory (0x0x7fdc36e50000) 0

Class QMargins
   size=16 align=4
   base size=16 base align=4
QMargins (0x0x7fdc36e501e0) 0

Class QMarginsF
   size=32 align=8
   base size=32 base align=8
QMarginsF (0x0x7fdc36e50480) 0

Class QMessageAuthenticationCode
   size=8 align=8
   base size=8 base align=8
QMessageAuthenticationCode (0x0x7fdc36e50ae0) 0

Class QMetaMethod
   size=16 align=8
   base size=12 base align=8
QMetaMethod (0x0x7fdc36e50b40) 0

Class QMetaEnum
   size=16 align=8
   base size=12 base align=8
QMetaEnum (0x0x7fdc36b80180) 0

Class QMetaProperty
   size=32 align=8
   base size=32 base align=8
QMetaProperty (0x0x7fdc36b80480) 0

Class QMetaClassInfo
   size=16 align=8
   base size=12 base align=8
QMetaClassInfo (0x0x7fdc36b804e0) 0

Class QMimeData::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QMimeData::QPrivateSignal (0x0x7fdc36b807e0) 0 empty

Vtable for QMimeData
QMimeData::_ZTV9QMimeData: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QMimeData)
16    (int (*)(...))QMimeData::metaObject
24    (int (*)(...))QMimeData::qt_metacast
32    (int (*)(...))QMimeData::qt_metacall
40    (int (*)(...))QMimeData::~QMimeData
48    (int (*)(...))QMimeData::~QMimeData
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QMimeData::hasFormat
120   (int (*)(...))QMimeData::formats
128   (int (*)(...))QMimeData::retrieveData

Class QMimeData
   size=16 align=8
   base size=16 base align=8
QMimeData (0x0x7fdc36b0add0) 0
    vptr=((& QMimeData::_ZTV9QMimeData) + 16u)
  QObject (0x0x7fdc36b80780) 0
      primary-for QMimeData (0x0x7fdc36b0add0)

Class QMimeType
   size=8 align=8
   base size=8 base align=8
QMimeType (0x0x7fdc36b80840) 0

Class QMimeDatabase
   size=8 align=8
   base size=8 base align=8
QMimeDatabase (0x0x7fdc36b80b40) 0

Class QObjectCleanupHandler::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QObjectCleanupHandler::QPrivateSignal (0x0x7fdc36b80c00) 0 empty

Vtable for QObjectCleanupHandler
QObjectCleanupHandler::_ZTV21QObjectCleanupHandler: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI21QObjectCleanupHandler)
16    (int (*)(...))QObjectCleanupHandler::metaObject
24    (int (*)(...))QObjectCleanupHandler::qt_metacast
32    (int (*)(...))QObjectCleanupHandler::qt_metacall
40    (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
48    (int (*)(...))QObjectCleanupHandler::~QObjectCleanupHandler
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QObjectCleanupHandler
   size=24 align=8
   base size=24 base align=8
QObjectCleanupHandler (0x0x7fdc36be0000) 0
    vptr=((& QObjectCleanupHandler::_ZTV21QObjectCleanupHandler) + 16u)
  QObject (0x0x7fdc36b80ba0) 0
      primary-for QObjectCleanupHandler (0x0x7fdc36be0000)

Class QOperatingSystemVersion
   size=16 align=4
   base size=16 base align=4
QOperatingSystemVersion (0x0x7fdc36b80c60) 0

Class QParallelAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QParallelAnimationGroup::QPrivateSignal (0x0x7fdc36c07420) 0 empty

Vtable for QParallelAnimationGroup
QParallelAnimationGroup::_ZTV23QParallelAnimationGroup: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI23QParallelAnimationGroup)
16    (int (*)(...))QParallelAnimationGroup::metaObject
24    (int (*)(...))QParallelAnimationGroup::qt_metacast
32    (int (*)(...))QParallelAnimationGroup::qt_metacall
40    (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
48    (int (*)(...))QParallelAnimationGroup::~QParallelAnimationGroup
56    (int (*)(...))QParallelAnimationGroup::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QParallelAnimationGroup::duration
120   (int (*)(...))QParallelAnimationGroup::updateCurrentTime
128   (int (*)(...))QParallelAnimationGroup::updateState
136   (int (*)(...))QParallelAnimationGroup::updateDirection

Class QParallelAnimationGroup
   size=16 align=8
   base size=16 base align=8
QParallelAnimationGroup (0x0x7fdc36be0750) 0
    vptr=((& QParallelAnimationGroup::_ZTV23QParallelAnimationGroup) + 16u)
  QAnimationGroup (0x0x7fdc36be07b8) 0
      primary-for QParallelAnimationGroup (0x0x7fdc36be0750)
    QAbstractAnimation (0x0x7fdc36be0820) 0
        primary-for QAnimationGroup (0x0x7fdc36be07b8)
      QObject (0x0x7fdc36c073c0) 0
          primary-for QAbstractAnimation (0x0x7fdc36be0820)

Class QPauseAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPauseAnimation::QPrivateSignal (0x0x7fdc36c074e0) 0 empty

Vtable for QPauseAnimation
QPauseAnimation::_ZTV15QPauseAnimation: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QPauseAnimation)
16    (int (*)(...))QPauseAnimation::metaObject
24    (int (*)(...))QPauseAnimation::qt_metacast
32    (int (*)(...))QPauseAnimation::qt_metacall
40    (int (*)(...))QPauseAnimation::~QPauseAnimation
48    (int (*)(...))QPauseAnimation::~QPauseAnimation
56    (int (*)(...))QPauseAnimation::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QPauseAnimation::duration
120   (int (*)(...))QPauseAnimation::updateCurrentTime
128   (int (*)(...))QAbstractAnimation::updateState
136   (int (*)(...))QAbstractAnimation::updateDirection

Class QPauseAnimation
   size=16 align=8
   base size=16 base align=8
QPauseAnimation (0x0x7fdc36be0888) 0
    vptr=((& QPauseAnimation::_ZTV15QPauseAnimation) + 16u)
  QAbstractAnimation (0x0x7fdc36be08f0) 0
      primary-for QPauseAnimation (0x0x7fdc36be0888)
    QObject (0x0x7fdc36c07480) 0
        primary-for QAbstractAnimation (0x0x7fdc36be08f0)

Class QStaticPlugin
   size=16 align=8
   base size=16 base align=8
QStaticPlugin (0x0x7fdc36c076c0) 0

Class QPluginLoader::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPluginLoader::QPrivateSignal (0x0x7fdc36c079c0) 0 empty

Vtable for QPluginLoader
QPluginLoader::_ZTV13QPluginLoader: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QPluginLoader)
16    (int (*)(...))QPluginLoader::metaObject
24    (int (*)(...))QPluginLoader::qt_metacast
32    (int (*)(...))QPluginLoader::qt_metacall
40    (int (*)(...))QPluginLoader::~QPluginLoader
48    (int (*)(...))QPluginLoader::~QPluginLoader
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QPluginLoader
   size=32 align=8
   base size=25 base align=8
QPluginLoader (0x0x7fdc36be0af8) 0
    vptr=((& QPluginLoader::_ZTV13QPluginLoader) + 16u)
  QObject (0x0x7fdc36c07960) 0
      primary-for QPluginLoader (0x0x7fdc36be0af8)

Class QProcessEnvironment
   size=8 align=8
   base size=8 base align=8
QProcessEnvironment (0x0x7fdc36c07a20) 0

Class QProcess::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QProcess::QPrivateSignal (0x0x7fdc36c8f120) 0 empty

Vtable for QProcess
QProcess::_ZTV8QProcess: 31u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI8QProcess)
16    (int (*)(...))QProcess::metaObject
24    (int (*)(...))QProcess::qt_metacast
32    (int (*)(...))QProcess::qt_metacall
40    (int (*)(...))QProcess::~QProcess
48    (int (*)(...))QProcess::~QProcess
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QProcess::isSequential
120   (int (*)(...))QProcess::open
128   (int (*)(...))QProcess::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QProcess::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QProcess::bytesAvailable
184   (int (*)(...))QProcess::bytesToWrite
192   (int (*)(...))QProcess::canReadLine
200   (int (*)(...))QProcess::waitForReadyRead
208   (int (*)(...))QProcess::waitForBytesWritten
216   (int (*)(...))QProcess::readData
224   (int (*)(...))QIODevice::readLineData
232   (int (*)(...))QProcess::writeData
240   (int (*)(...))QProcess::setupChildProcess

Class QProcess
   size=16 align=8
   base size=16 base align=8
QProcess (0x0x7fdc36c8e138) 0
    vptr=((& QProcess::_ZTV8QProcess) + 16u)
  QIODevice (0x0x7fdc36c8e1a0) 0
      primary-for QProcess (0x0x7fdc36c8e138)
    QObject (0x0x7fdc36c8f0c0) 0
        primary-for QIODevice (0x0x7fdc36c8e1a0)

Class QVariantAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QVariantAnimation::QPrivateSignal (0x0x7fdc36c8f1e0) 0 empty

Vtable for QVariantAnimation
QVariantAnimation::_ZTV17QVariantAnimation: 20u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QVariantAnimation)
16    (int (*)(...))QVariantAnimation::metaObject
24    (int (*)(...))QVariantAnimation::qt_metacast
32    (int (*)(...))QVariantAnimation::qt_metacall
40    (int (*)(...))QVariantAnimation::~QVariantAnimation
48    (int (*)(...))QVariantAnimation::~QVariantAnimation
56    (int (*)(...))QVariantAnimation::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QVariantAnimation::duration
120   (int (*)(...))QVariantAnimation::updateCurrentTime
128   (int (*)(...))QVariantAnimation::updateState
136   (int (*)(...))QAbstractAnimation::updateDirection
144   (int (*)(...))QVariantAnimation::updateCurrentValue
152   (int (*)(...))QVariantAnimation::interpolated

Class QVariantAnimation
   size=16 align=8
   base size=16 base align=8
QVariantAnimation (0x0x7fdc36c8e208) 0
    vptr=((& QVariantAnimation::_ZTV17QVariantAnimation) + 16u)
  QAbstractAnimation (0x0x7fdc36c8e270) 0
      primary-for QVariantAnimation (0x0x7fdc36c8e208)
    QObject (0x0x7fdc36c8f180) 0
        primary-for QAbstractAnimation (0x0x7fdc36c8e270)

Class QPropertyAnimation::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QPropertyAnimation::QPrivateSignal (0x0x7fdc36c8f2a0) 0 empty

Vtable for QPropertyAnimation
QPropertyAnimation::_ZTV18QPropertyAnimation: 20u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI18QPropertyAnimation)
16    (int (*)(...))QPropertyAnimation::metaObject
24    (int (*)(...))QPropertyAnimation::qt_metacast
32    (int (*)(...))QPropertyAnimation::qt_metacall
40    (int (*)(...))QPropertyAnimation::~QPropertyAnimation
48    (int (*)(...))QPropertyAnimation::~QPropertyAnimation
56    (int (*)(...))QPropertyAnimation::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QVariantAnimation::duration
120   (int (*)(...))QVariantAnimation::updateCurrentTime
128   (int (*)(...))QPropertyAnimation::updateState
136   (int (*)(...))QAbstractAnimation::updateDirection
144   (int (*)(...))QPropertyAnimation::updateCurrentValue
152   (int (*)(...))QVariantAnimation::interpolated

Class QPropertyAnimation
   size=16 align=8
   base size=16 base align=8
QPropertyAnimation (0x0x7fdc36c8e340) 0
    vptr=((& QPropertyAnimation::_ZTV18QPropertyAnimation) + 16u)
  QVariantAnimation (0x0x7fdc36c8e3a8) 0
      primary-for QPropertyAnimation (0x0x7fdc36c8e340)
    QAbstractAnimation (0x0x7fdc36c8e410) 0
        primary-for QVariantAnimation (0x0x7fdc36c8e3a8)
      QObject (0x0x7fdc36c8f240) 0
          primary-for QAbstractAnimation (0x0x7fdc36c8e410)

Class QRandomGenerator::Storage
   size=2504 align=8
   base size=2504 base align=8
QRandomGenerator::Storage (0x0x7fdc36c8f3c0) 0

Class QRandomGenerator
   size=2512 align=8
   base size=2512 base align=8
QRandomGenerator (0x0x7fdc36c8f360) 0

Class QRandomGenerator64
   size=2512 align=8
   base size=2512 base align=8
QRandomGenerator64 (0x0x7fdc3696e6e8) 0
  QRandomGenerator (0x0x7fdc3697e360) 0

Class QReadWriteLock
   size=8 align=8
   base size=8 base align=8
QReadWriteLock (0x0x7fdc3697e420) 0

Class QReadLocker
   size=8 align=8
   base size=8 base align=8
QReadLocker (0x0x7fdc3697e6c0) 0

Class QWriteLocker
   size=8 align=8
   base size=8 base align=8
QWriteLocker (0x0x7fdc3697e780) 0

Class QSize
   size=8 align=4
   base size=8 base align=4
QSize (0x0x7fdc3697e840) 0

Class QSizeF
   size=16 align=8
   base size=16 base align=8
QSizeF (0x0x7fdc3697eae0) 0

Class QRect
   size=16 align=4
   base size=16 base align=4
QRect (0x0x7fdc3697ed80) 0

Class QRectF
   size=32 align=8
   base size=32 base align=8
QRectF (0x0x7fdc366da060) 0

Class QRegularExpression
   size=8 align=8
   base size=8 base align=8
QRegularExpression (0x0x7fdc366da300) 0

Class QRegularExpressionMatch
   size=8 align=8
   base size=8 base align=8
QRegularExpressionMatch (0x0x7fdc366da900) 0

Class QRegularExpressionMatchIterator
   size=8 align=8
   base size=8 base align=8
QRegularExpressionMatchIterator (0x0x7fdc366dac00) 0

Class QResource
   size=8 align=8
   base size=8 base align=8
QResource (0x0x7fdc366daf00) 0

Class QSaveFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSaveFile::QPrivateSignal (0x0x7fdc3649a0c0) 0 empty

Vtable for QSaveFile
QSaveFile::_ZTV9QSaveFile: 34u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QSaveFile)
16    (int (*)(...))QSaveFile::metaObject
24    (int (*)(...))QSaveFile::qt_metacast
32    (int (*)(...))QSaveFile::qt_metacall
40    (int (*)(...))QSaveFile::~QSaveFile
48    (int (*)(...))QSaveFile::~QSaveFile
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QFileDevice::isSequential
120   (int (*)(...))QSaveFile::open
128   (int (*)(...))QSaveFile::close
136   (int (*)(...))QFileDevice::pos
144   (int (*)(...))QFileDevice::size
152   (int (*)(...))QFileDevice::seek
160   (int (*)(...))QFileDevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QIODevice::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))QFileDevice::readData
224   (int (*)(...))QFileDevice::readLineData
232   (int (*)(...))QSaveFile::writeData
240   (int (*)(...))QSaveFile::fileName
248   (int (*)(...))QFileDevice::resize
256   (int (*)(...))QFileDevice::permissions
264   (int (*)(...))QFileDevice::setPermissions

Class QSaveFile
   size=16 align=8
   base size=16 base align=8
QSaveFile (0x0x7fdc366d98f0) 0
    vptr=((& QSaveFile::_ZTV9QSaveFile) + 16u)
  QFileDevice (0x0x7fdc366d9958) 0
      primary-for QSaveFile (0x0x7fdc366d98f0)
    QIODevice (0x0x7fdc366d99c0) 0
        primary-for QFileDevice (0x0x7fdc366d9958)
      QObject (0x0x7fdc3649a060) 0
          primary-for QIODevice (0x0x7fdc366d99c0)

Class QSemaphore
   size=8 align=8
   base size=8 base align=8
QSemaphore (0x0x7fdc3649a180) 0

Class QSemaphoreReleaser
   size=16 align=8
   base size=12 base align=8
QSemaphoreReleaser (0x0x7fdc3649a1e0) 0

Class QSequentialAnimationGroup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSequentialAnimationGroup::QPrivateSignal (0x0x7fdc3659b7e0) 0 empty

Vtable for QSequentialAnimationGroup
QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI25QSequentialAnimationGroup)
16    (int (*)(...))QSequentialAnimationGroup::metaObject
24    (int (*)(...))QSequentialAnimationGroup::qt_metacast
32    (int (*)(...))QSequentialAnimationGroup::qt_metacall
40    (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
48    (int (*)(...))QSequentialAnimationGroup::~QSequentialAnimationGroup
56    (int (*)(...))QSequentialAnimationGroup::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QSequentialAnimationGroup::duration
120   (int (*)(...))QSequentialAnimationGroup::updateCurrentTime
128   (int (*)(...))QSequentialAnimationGroup::updateState
136   (int (*)(...))QSequentialAnimationGroup::updateDirection

Class QSequentialAnimationGroup
   size=16 align=8
   base size=16 base align=8
QSequentialAnimationGroup (0x0x7fdc365a3208) 0
    vptr=((& QSequentialAnimationGroup::_ZTV25QSequentialAnimationGroup) + 16u)
  QAnimationGroup (0x0x7fdc365a3270) 0
      primary-for QSequentialAnimationGroup (0x0x7fdc365a3208)
    QAbstractAnimation (0x0x7fdc365a32d8) 0
        primary-for QAnimationGroup (0x0x7fdc365a3270)
      QObject (0x0x7fdc3659b780) 0
          primary-for QAbstractAnimation (0x0x7fdc365a32d8)

Class QSettings::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSettings::QPrivateSignal (0x0x7fdc3659b8a0) 0 empty

Vtable for QSettings
QSettings::_ZTV9QSettings: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QSettings)
16    (int (*)(...))QSettings::metaObject
24    (int (*)(...))QSettings::qt_metacast
32    (int (*)(...))QSettings::qt_metacall
40    (int (*)(...))QSettings::~QSettings
48    (int (*)(...))QSettings::~QSettings
56    (int (*)(...))QSettings::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QSettings
   size=16 align=8
   base size=16 base align=8
QSettings (0x0x7fdc365a3340) 0
    vptr=((& QSettings::_ZTV9QSettings) + 16u)
  QObject (0x0x7fdc3659b840) 0
      primary-for QSettings (0x0x7fdc365a3340)

Class QSharedMemory::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSharedMemory::QPrivateSignal (0x0x7fdc3659b960) 0 empty

Vtable for QSharedMemory
QSharedMemory::_ZTV13QSharedMemory: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QSharedMemory)
16    (int (*)(...))QSharedMemory::metaObject
24    (int (*)(...))QSharedMemory::qt_metacast
32    (int (*)(...))QSharedMemory::qt_metacall
40    (int (*)(...))QSharedMemory::~QSharedMemory
48    (int (*)(...))QSharedMemory::~QSharedMemory
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QSharedMemory
   size=16 align=8
   base size=16 base align=8
QSharedMemory (0x0x7fdc365a33a8) 0
    vptr=((& QSharedMemory::_ZTV13QSharedMemory) + 16u)
  QObject (0x0x7fdc3659b900) 0
      primary-for QSharedMemory (0x0x7fdc365a33a8)

Class QSignalMapper::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSignalMapper::QPrivateSignal (0x0x7fdc3659ba20) 0 empty

Vtable for QSignalMapper
QSignalMapper::_ZTV13QSignalMapper: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QSignalMapper)
16    (int (*)(...))QSignalMapper::metaObject
24    (int (*)(...))QSignalMapper::qt_metacast
32    (int (*)(...))QSignalMapper::qt_metacall
40    (int (*)(...))QSignalMapper::~QSignalMapper
48    (int (*)(...))QSignalMapper::~QSignalMapper
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QSignalMapper
   size=16 align=8
   base size=16 base align=8
QSignalMapper (0x0x7fdc365a3410) 0
    vptr=((& QSignalMapper::_ZTV13QSignalMapper) + 16u)
  QObject (0x0x7fdc3659b9c0) 0
      primary-for QSignalMapper (0x0x7fdc365a3410)

Class QSignalTransition::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSignalTransition::QPrivateSignal (0x0x7fdc3659bae0) 0 empty

Vtable for QSignalTransition
QSignalTransition::_ZTV17QSignalTransition: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QSignalTransition)
16    (int (*)(...))QSignalTransition::metaObject
24    (int (*)(...))QSignalTransition::qt_metacast
32    (int (*)(...))QSignalTransition::qt_metacall
40    (int (*)(...))QSignalTransition::~QSignalTransition
48    (int (*)(...))QSignalTransition::~QSignalTransition
56    (int (*)(...))QSignalTransition::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QSignalTransition::eventTest
120   (int (*)(...))QSignalTransition::onTransition

Class QSignalTransition
   size=16 align=8
   base size=16 base align=8
QSignalTransition (0x0x7fdc365a3478) 0
    vptr=((& QSignalTransition::_ZTV17QSignalTransition) + 16u)
  QAbstractTransition (0x0x7fdc365a34e0) 0
      primary-for QSignalTransition (0x0x7fdc365a3478)
    QObject (0x0x7fdc3659ba80) 0
        primary-for QAbstractTransition (0x0x7fdc365a34e0)

Class QSocketNotifier::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSocketNotifier::QPrivateSignal (0x0x7fdc3659bba0) 0 empty

Vtable for QSocketNotifier
QSocketNotifier::_ZTV15QSocketNotifier: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QSocketNotifier)
16    (int (*)(...))QSocketNotifier::metaObject
24    (int (*)(...))QSocketNotifier::qt_metacast
32    (int (*)(...))QSocketNotifier::qt_metacall
40    (int (*)(...))QSocketNotifier::~QSocketNotifier
48    (int (*)(...))QSocketNotifier::~QSocketNotifier
56    (int (*)(...))QSocketNotifier::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QSocketNotifier
   size=16 align=8
   base size=16 base align=8
QSocketNotifier (0x0x7fdc365a3548) 0
    vptr=((& QSocketNotifier::_ZTV15QSocketNotifier) + 16u)
  QObject (0x0x7fdc3659bb40) 0
      primary-for QSocketNotifier (0x0x7fdc365a3548)

Class QSortFilterProxyModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSortFilterProxyModel::QPrivateSignal (0x0x7fdc3659bc60) 0 empty

Vtable for QSortFilterProxyModel
QSortFilterProxyModel::_ZTV21QSortFilterProxyModel: 56u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI21QSortFilterProxyModel)
16    (int (*)(...))QSortFilterProxyModel::metaObject
24    (int (*)(...))QSortFilterProxyModel::qt_metacast
32    (int (*)(...))QSortFilterProxyModel::qt_metacall
40    (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
48    (int (*)(...))QSortFilterProxyModel::~QSortFilterProxyModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QSortFilterProxyModel::index
120   (int (*)(...))QSortFilterProxyModel::parent
128   (int (*)(...))QSortFilterProxyModel::sibling
136   (int (*)(...))QSortFilterProxyModel::rowCount
144   (int (*)(...))QSortFilterProxyModel::columnCount
152   (int (*)(...))QSortFilterProxyModel::hasChildren
160   (int (*)(...))QSortFilterProxyModel::data
168   (int (*)(...))QSortFilterProxyModel::setData
176   (int (*)(...))QSortFilterProxyModel::headerData
184   (int (*)(...))QSortFilterProxyModel::setHeaderData
192   (int (*)(...))QAbstractProxyModel::itemData
200   (int (*)(...))QAbstractProxyModel::setItemData
208   (int (*)(...))QSortFilterProxyModel::mimeTypes
216   (int (*)(...))QSortFilterProxyModel::mimeData
224   (int (*)(...))QAbstractProxyModel::canDropMimeData
232   (int (*)(...))QSortFilterProxyModel::dropMimeData
240   (int (*)(...))QSortFilterProxyModel::supportedDropActions
248   (int (*)(...))QAbstractProxyModel::supportedDragActions
256   (int (*)(...))QSortFilterProxyModel::insertRows
264   (int (*)(...))QSortFilterProxyModel::insertColumns
272   (int (*)(...))QSortFilterProxyModel::removeRows
280   (int (*)(...))QSortFilterProxyModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QSortFilterProxyModel::fetchMore
312   (int (*)(...))QSortFilterProxyModel::canFetchMore
320   (int (*)(...))QSortFilterProxyModel::flags
328   (int (*)(...))QSortFilterProxyModel::sort
336   (int (*)(...))QSortFilterProxyModel::buddy
344   (int (*)(...))QSortFilterProxyModel::match
352   (int (*)(...))QSortFilterProxyModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractProxyModel::submit
376   (int (*)(...))QAbstractProxyModel::revert
384   (int (*)(...))QSortFilterProxyModel::setSourceModel
392   (int (*)(...))QSortFilterProxyModel::mapToSource
400   (int (*)(...))QSortFilterProxyModel::mapFromSource
408   (int (*)(...))QSortFilterProxyModel::mapSelectionToSource
416   (int (*)(...))QSortFilterProxyModel::mapSelectionFromSource
424   (int (*)(...))QSortFilterProxyModel::filterAcceptsRow
432   (int (*)(...))QSortFilterProxyModel::filterAcceptsColumn
440   (int (*)(...))QSortFilterProxyModel::lessThan

Class QSortFilterProxyModel
   size=16 align=8
   base size=16 base align=8
QSortFilterProxyModel (0x0x7fdc365a35b0) 0
    vptr=((& QSortFilterProxyModel::_ZTV21QSortFilterProxyModel) + 16u)
  QAbstractProxyModel (0x0x7fdc365a3618) 0
      primary-for QSortFilterProxyModel (0x0x7fdc365a35b0)
    QAbstractItemModel (0x0x7fdc365a3680) 0
        primary-for QAbstractProxyModel (0x0x7fdc365a3618)
      QObject (0x0x7fdc3659bc00) 0
          primary-for QAbstractItemModel (0x0x7fdc365a3680)

Class QStandardPaths
   size=1 align=1
   base size=0 base align=1
QStandardPaths (0x0x7fdc3659bd20) 0 empty

Class QState::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QState::QPrivateSignal (0x0x7fdc3659bf60) 0 empty

Vtable for QState
QState::_ZTV6QState: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI6QState)
16    (int (*)(...))QState::metaObject
24    (int (*)(...))QState::qt_metacast
32    (int (*)(...))QState::qt_metacall
40    (int (*)(...))QState::~QState
48    (int (*)(...))QState::~QState
56    (int (*)(...))QState::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QState::onEntry
120   (int (*)(...))QState::onExit

Class QState
   size=16 align=8
   base size=16 base align=8
QState (0x0x7fdc365a3820) 0
    vptr=((& QState::_ZTV6QState) + 16u)
  QAbstractState (0x0x7fdc365a3888) 0
      primary-for QState (0x0x7fdc365a3820)
    QObject (0x0x7fdc3659bf00) 0
        primary-for QAbstractState (0x0x7fdc365a3888)

Class QStateMachine::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QStateMachine::QPrivateSignal (0x0x7fdc3629d0c0) 0 empty

Vtable for QStateMachine::SignalEvent
QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN13QStateMachine11SignalEventE)
16    (int (*)(...))QStateMachine::SignalEvent::~SignalEvent
24    (int (*)(...))QStateMachine::SignalEvent::~SignalEvent

Class QStateMachine::SignalEvent
   size=48 align=8
   base size=48 base align=8
QStateMachine::SignalEvent (0x0x7fdc365a3a28) 0
    vptr=((& QStateMachine::SignalEvent::_ZTVN13QStateMachine11SignalEventE) + 16u)
  QEvent (0x0x7fdc3629d120) 0
      primary-for QStateMachine::SignalEvent (0x0x7fdc365a3a28)

Vtable for QStateMachine::WrappedEvent
QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN13QStateMachine12WrappedEventE)
16    (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent
24    (int (*)(...))QStateMachine::WrappedEvent::~WrappedEvent

Class QStateMachine::WrappedEvent
   size=40 align=8
   base size=40 base align=8
QStateMachine::WrappedEvent (0x0x7fdc365a3a90) 0
    vptr=((& QStateMachine::WrappedEvent::_ZTVN13QStateMachine12WrappedEventE) + 16u)
  QEvent (0x0x7fdc3629d180) 0
      primary-for QStateMachine::WrappedEvent (0x0x7fdc365a3a90)

Vtable for QStateMachine
QStateMachine::_ZTV13QStateMachine: 20u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QStateMachine)
16    (int (*)(...))QStateMachine::metaObject
24    (int (*)(...))QStateMachine::qt_metacast
32    (int (*)(...))QStateMachine::qt_metacall
40    (int (*)(...))QStateMachine::~QStateMachine
48    (int (*)(...))QStateMachine::~QStateMachine
56    (int (*)(...))QStateMachine::event
64    (int (*)(...))QStateMachine::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QStateMachine::onEntry
120   (int (*)(...))QStateMachine::onExit
128   (int (*)(...))QStateMachine::beginSelectTransitions
136   (int (*)(...))QStateMachine::endSelectTransitions
144   (int (*)(...))QStateMachine::beginMicrostep
152   (int (*)(...))QStateMachine::endMicrostep

Class QStateMachine
   size=16 align=8
   base size=16 base align=8
QStateMachine (0x0x7fdc365a38f0) 0
    vptr=((& QStateMachine::_ZTV13QStateMachine) + 16u)
  QState (0x0x7fdc365a3958) 0
      primary-for QStateMachine (0x0x7fdc365a38f0)
    QAbstractState (0x0x7fdc365a39c0) 0
        primary-for QState (0x0x7fdc365a3958)
      QObject (0x0x7fdc3629d060) 0
          primary-for QAbstractState (0x0x7fdc365a39c0)

Class QStorageInfo
   size=8 align=8
   base size=8 base align=8
QStorageInfo (0x0x7fdc3629d1e0) 0

Class QAbstractConcatenable
   size=1 align=1
   base size=0 base align=1
QAbstractConcatenable (0x0x7fdc36318120) 0 empty

Class QStringListModel::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QStringListModel::QPrivateSignal (0x0x7fdc36318c00) 0 empty

Vtable for QStringListModel
QStringListModel::_ZTV16QStringListModel: 48u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI16QStringListModel)
16    (int (*)(...))QStringListModel::metaObject
24    (int (*)(...))QStringListModel::qt_metacast
32    (int (*)(...))QStringListModel::qt_metacall
40    (int (*)(...))QStringListModel::~QStringListModel
48    (int (*)(...))QStringListModel::~QStringListModel
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAbstractListModel::index
120   (int (*)(...))QAbstractListModel::parent
128   (int (*)(...))QStringListModel::sibling
136   (int (*)(...))QStringListModel::rowCount
144   (int (*)(...))QAbstractListModel::columnCount
152   (int (*)(...))QAbstractListModel::hasChildren
160   (int (*)(...))QStringListModel::data
168   (int (*)(...))QStringListModel::setData
176   (int (*)(...))QAbstractItemModel::headerData
184   (int (*)(...))QAbstractItemModel::setHeaderData
192   (int (*)(...))QAbstractItemModel::itemData
200   (int (*)(...))QAbstractItemModel::setItemData
208   (int (*)(...))QAbstractItemModel::mimeTypes
216   (int (*)(...))QAbstractItemModel::mimeData
224   (int (*)(...))QAbstractItemModel::canDropMimeData
232   (int (*)(...))QAbstractListModel::dropMimeData
240   (int (*)(...))QStringListModel::supportedDropActions
248   (int (*)(...))QAbstractItemModel::supportedDragActions
256   (int (*)(...))QStringListModel::insertRows
264   (int (*)(...))QAbstractItemModel::insertColumns
272   (int (*)(...))QStringListModel::removeRows
280   (int (*)(...))QAbstractItemModel::removeColumns
288   (int (*)(...))QAbstractItemModel::moveRows
296   (int (*)(...))QAbstractItemModel::moveColumns
304   (int (*)(...))QAbstractItemModel::fetchMore
312   (int (*)(...))QAbstractItemModel::canFetchMore
320   (int (*)(...))QStringListModel::flags
328   (int (*)(...))QStringListModel::sort
336   (int (*)(...))QAbstractItemModel::buddy
344   (int (*)(...))QAbstractItemModel::match
352   (int (*)(...))QAbstractItemModel::span
360   (int (*)(...))QAbstractItemModel::roleNames
368   (int (*)(...))QAbstractItemModel::submit
376   (int (*)(...))QAbstractItemModel::revert

Class QStringListModel
   size=24 align=8
   base size=24 base align=8
QStringListModel (0x0x7fdc36306f70) 0
    vptr=((& QStringListModel::_ZTV16QStringListModel) + 16u)
  QAbstractListModel (0x0x7fdc36397000) 0
      primary-for QStringListModel (0x0x7fdc36306f70)
    QAbstractItemModel (0x0x7fdc36397068) 0
        primary-for QAbstractListModel (0x0x7fdc36397000)
      QObject (0x0x7fdc36318ba0) 0
          primary-for QAbstractItemModel (0x0x7fdc36397068)

Class QSystemSemaphore
   size=8 align=8
   base size=8 base align=8
QSystemSemaphore (0x0x7fdc36318c60) 0

Class QTemporaryDir
   size=8 align=8
   base size=8 base align=8
QTemporaryDir (0x0x7fdc36318d20) 0

Class QTemporaryFile::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTemporaryFile::QPrivateSignal (0x0x7fdc36318e40) 0 empty

Vtable for QTemporaryFile
QTemporaryFile::_ZTV14QTemporaryFile: 34u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QTemporaryFile)
16    (int (*)(...))QTemporaryFile::metaObject
24    (int (*)(...))QTemporaryFile::qt_metacast
32    (int (*)(...))QTemporaryFile::qt_metacall
40    (int (*)(...))QTemporaryFile::~QTemporaryFile
48    (int (*)(...))QTemporaryFile::~QTemporaryFile
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QFileDevice::isSequential
120   (int (*)(...))QTemporaryFile::open
128   (int (*)(...))QFileDevice::close
136   (int (*)(...))QFileDevice::pos
144   (int (*)(...))QFile::size
152   (int (*)(...))QFileDevice::seek
160   (int (*)(...))QFileDevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QIODevice::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))QFileDevice::readData
224   (int (*)(...))QFileDevice::readLineData
232   (int (*)(...))QFileDevice::writeData
240   (int (*)(...))QTemporaryFile::fileName
248   (int (*)(...))QFile::resize
256   (int (*)(...))QFile::permissions
264   (int (*)(...))QFile::setPermissions

Class QTemporaryFile
   size=16 align=8
   base size=16 base align=8
QTemporaryFile (0x0x7fdc363970d0) 0
    vptr=((& QTemporaryFile::_ZTV14QTemporaryFile) + 16u)
  QFile (0x0x7fdc36397138) 0
      primary-for QTemporaryFile (0x0x7fdc363970d0)
    QFileDevice (0x0x7fdc363971a0) 0
        primary-for QFile (0x0x7fdc36397138)
      QIODevice (0x0x7fdc36397208) 0
          primary-for QFileDevice (0x0x7fdc363971a0)
        QObject (0x0x7fdc36318de0) 0
            primary-for QIODevice (0x0x7fdc36397208)

Class QTextBoundaryFinder
   size=48 align=8
   base size=48 base align=8
QTextBoundaryFinder (0x0x7fdc36318ea0) 0

Class QTextCodec::ConverterState
   size=32 align=8
   base size=32 base align=8
QTextCodec::ConverterState (0x0x7fdc363ec120) 0

Vtable for QTextCodec
QTextCodec::_ZTV10QTextCodec: 9u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QTextCodec)
16    (int (*)(...))__cxa_pure_virtual
24    (int (*)(...))QTextCodec::aliases
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    0u
64    0u

Class QTextCodec
   size=8 align=8
   base size=8 base align=8
QTextCodec (0x0x7fdc363ec0c0) 0 nearly-empty
    vptr=((& QTextCodec::_ZTV10QTextCodec) + 16u)

Class QTextEncoder
   size=40 align=8
   base size=40 base align=8
QTextEncoder (0x0x7fdc363ec300) 0

Class QTextDecoder
   size=40 align=8
   base size=40 base align=8
QTextDecoder (0x0x7fdc363ec360) 0

Class std::__mutex_base
   size=40 align=8
   base size=40 base align=8
std::__mutex_base (0x0x7fdc363ec3c0) 0

Class std::__recursive_mutex_base
   size=40 align=8
   base size=40 base align=8
std::__recursive_mutex_base (0x0x7fdc363ec420) 0

Class std::mutex
   size=40 align=8
   base size=40 base align=8
std::mutex (0x0x7fdc36397410) 0
  std::__mutex_base (0x0x7fdc363ec480) 0

Class std::recursive_mutex
   size=40 align=8
   base size=40 base align=8
std::recursive_mutex (0x0x7fdc36397478) 0
  std::__recursive_mutex_base (0x0x7fdc363ec4e0) 0

Class std::timed_mutex
   size=40 align=8
   base size=40 base align=8
std::timed_mutex (0x0x7fdc3648b000) 0
  std::__mutex_base (0x0x7fdc363ec600) 0
  std::__timed_mutex_impl<std::timed_mutex> (0x0x7fdc363ec660) 0 empty

Class std::recursive_timed_mutex
   size=40 align=8
   base size=40 base align=8
std::recursive_timed_mutex (0x0x7fdc3648bc40) 0
  std::__recursive_mutex_base (0x0x7fdc363ec720) 0
  std::__timed_mutex_impl<std::recursive_timed_mutex> (0x0x7fdc363ec780) 0 empty

Class std::defer_lock_t
   size=1 align=1
   base size=0 base align=1
std::defer_lock_t (0x0x7fdc363ec7e0) 0 empty

Class std::try_to_lock_t
   size=1 align=1
   base size=0 base align=1
std::try_to_lock_t (0x0x7fdc363ec840) 0 empty

Class std::adopt_lock_t
   size=1 align=1
   base size=0 base align=1
std::adopt_lock_t (0x0x7fdc363ec8a0) 0 empty

Class std::once_flag
   size=4 align=4
   base size=4 base align=4
std::once_flag (0x0x7fdc363ecae0) 0

Vtable for __gnu_cxx::__concurrence_lock_error
__gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_lock_errorE)
16    (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
24    (int (*)(...))__gnu_cxx::__concurrence_lock_error::~__concurrence_lock_error
32    (int (*)(...))__gnu_cxx::__concurrence_lock_error::what

Class __gnu_cxx::__concurrence_lock_error
   size=8 align=8
   base size=8 base align=8
__gnu_cxx::__concurrence_lock_error (0x0x7fdc363975b0) 0 nearly-empty
    vptr=((& __gnu_cxx::__concurrence_lock_error::_ZTVN9__gnu_cxx24__concurrence_lock_errorE) + 16u)
  std::exception (0x0x7fdc363ecba0) 0 nearly-empty
      primary-for __gnu_cxx::__concurrence_lock_error (0x0x7fdc363975b0)

Vtable for __gnu_cxx::__concurrence_unlock_error
__gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN9__gnu_cxx26__concurrence_unlock_errorE)
16    (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
24    (int (*)(...))__gnu_cxx::__concurrence_unlock_error::~__concurrence_unlock_error
32    (int (*)(...))__gnu_cxx::__concurrence_unlock_error::what

Class __gnu_cxx::__concurrence_unlock_error
   size=8 align=8
   base size=8 base align=8
__gnu_cxx::__concurrence_unlock_error (0x0x7fdc36397618) 0 nearly-empty
    vptr=((& __gnu_cxx::__concurrence_unlock_error::_ZTVN9__gnu_cxx26__concurrence_unlock_errorE) + 16u)
  std::exception (0x0x7fdc363ecc60) 0 nearly-empty
      primary-for __gnu_cxx::__concurrence_unlock_error (0x0x7fdc36397618)

Vtable for __gnu_cxx::__concurrence_broadcast_error
__gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN9__gnu_cxx29__concurrence_broadcast_errorE)
16    (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
24    (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::~__concurrence_broadcast_error
32    (int (*)(...))__gnu_cxx::__concurrence_broadcast_error::what

Class __gnu_cxx::__concurrence_broadcast_error
   size=8 align=8
   base size=8 base align=8
__gnu_cxx::__concurrence_broadcast_error (0x0x7fdc36397680) 0 nearly-empty
    vptr=((& __gnu_cxx::__concurrence_broadcast_error::_ZTVN9__gnu_cxx29__concurrence_broadcast_errorE) + 16u)
  std::exception (0x0x7fdc363ecd20) 0 nearly-empty
      primary-for __gnu_cxx::__concurrence_broadcast_error (0x0x7fdc36397680)

Vtable for __gnu_cxx::__concurrence_wait_error
__gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTIN9__gnu_cxx24__concurrence_wait_errorE)
16    (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
24    (int (*)(...))__gnu_cxx::__concurrence_wait_error::~__concurrence_wait_error
32    (int (*)(...))__gnu_cxx::__concurrence_wait_error::what

Class __gnu_cxx::__concurrence_wait_error
   size=8 align=8
   base size=8 base align=8
__gnu_cxx::__concurrence_wait_error (0x0x7fdc36397750) 0 nearly-empty
    vptr=((& __gnu_cxx::__concurrence_wait_error::_ZTVN9__gnu_cxx24__concurrence_wait_errorE) + 16u)
  std::exception (0x0x7fdc363ecde0) 0 nearly-empty
      primary-for __gnu_cxx::__concurrence_wait_error (0x0x7fdc36397750)

Class __gnu_cxx::__mutex
   size=40 align=8
   base size=40 base align=8
__gnu_cxx::__mutex (0x0x7fdc363ecea0) 0

Class __gnu_cxx::__recursive_mutex
   size=40 align=8
   base size=40 base align=8
__gnu_cxx::__recursive_mutex (0x0x7fdc363ecf00) 0

Class __gnu_cxx::__scoped_lock
   size=8 align=8
   base size=8 base align=8
__gnu_cxx::__scoped_lock (0x0x7fdc363ecf60) 0

Class __gnu_cxx::__cond
   size=48 align=8
   base size=48 base align=8
__gnu_cxx::__cond (0x0x7fdc36132000) 0

Vtable for std::bad_weak_ptr
std::bad_weak_ptr::_ZTVSt12bad_weak_ptr: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12bad_weak_ptr)
16    (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
24    (int (*)(...))std::bad_weak_ptr::~bad_weak_ptr
32    (int (*)(...))std::bad_weak_ptr::what

Class std::bad_weak_ptr
   size=8 align=8
   base size=8 base align=8
std::bad_weak_ptr (0x0x7fdc36397a28) 0 nearly-empty
    vptr=((& std::bad_weak_ptr::_ZTVSt12bad_weak_ptr) + 16u)
  std::exception (0x0x7fdc36132360) 0 nearly-empty
      primary-for std::bad_weak_ptr (0x0x7fdc36397a28)

Class std::_Sp_make_shared_tag
   size=1 align=1
   base size=0 base align=1
std::_Sp_make_shared_tag (0x0x7fdc36132ba0) 0 empty

Class std::_Sp_locker
   size=2 align=1
   base size=2 base align=1
std::_Sp_locker (0x0x7fdc35dc23c0) 0

Class std::thread::id
   size=8 align=8
   base size=8 base align=8
std::thread::id (0x0x7fdc35dc25a0) 0

Vtable for std::thread::_Impl_base
std::thread::_Impl_base::_ZTVNSt6thread10_Impl_baseE: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt6thread10_Impl_baseE)
16    0u
24    0u
32    (int (*)(...))__cxa_pure_virtual

Class std::thread::_Impl_base
   size=24 align=8
   base size=24 base align=8
std::thread::_Impl_base (0x0x7fdc35dc2600) 0
    vptr=((& std::thread::_Impl_base::_ZTVNSt6thread10_Impl_baseE) + 16u)

Class std::thread
   size=8 align=8
   base size=8 base align=8
std::thread (0x0x7fdc35dc2540) 0

Class std::condition_variable
   size=48 align=8
   base size=48 base align=8
std::condition_variable (0x0x7fdc35bac240) 0

Class std::__at_thread_exit_elt
   size=16 align=8
   base size=16 base align=8
std::__at_thread_exit_elt (0x0x7fdc35bac300) 0

Class std::_V2::condition_variable_any
   size=64 align=8
   base size=64 base align=8
std::_V2::condition_variable_any (0x0x7fdc35bac360) 0

Class std::__atomic_futex_unsigned_base
   size=1 align=1
   base size=0 base align=1
std::__atomic_futex_unsigned_base (0x0x7fdc35c6b9c0) 0 empty

Vtable for std::future_error
std::future_error::_ZTVSt12future_error: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTISt12future_error)
16    (int (*)(...))std::future_error::~future_error
24    (int (*)(...))std::future_error::~future_error
32    (int (*)(...))std::future_error::what

Class std::future_error
   size=32 align=8
   base size=32 base align=8
std::future_error (0x0x7fdc35c6ed68) 0
    vptr=((& std::future_error::_ZTVSt12future_error) + 16u)
  std::logic_error (0x0x7fdc35c6edd0) 0
      primary-for std::future_error (0x0x7fdc35c6ed68)
    std::exception (0x0x7fdc35c6bae0) 0 nearly-empty
        primary-for std::logic_error (0x0x7fdc35c6edd0)

Class std::__future_base::_Result_base::_Deleter
   size=1 align=1
   base size=0 base align=1
std::__future_base::_Result_base::_Deleter (0x0x7fdc35c6bc00) 0 empty

Vtable for std::__future_base::_Result_base
std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt13__future_base12_Result_baseE)
16    (int (*)(...))__cxa_pure_virtual
24    0u
32    0u

Class std::__future_base::_Result_base
   size=16 align=8
   base size=16 base align=8
std::__future_base::_Result_base (0x0x7fdc35c6bba0) 0
    vptr=((& std::__future_base::_Result_base::_ZTVNSt13__future_base12_Result_baseE) + 16u)

Class std::__future_base::_State_baseV2::__exception_ptr_tag
   size=1 align=1
   base size=0 base align=1
std::__future_base::_State_baseV2::__exception_ptr_tag (0x0x7fdc359e3180) 0 empty

Class std::__future_base::_State_baseV2::_Make_ready
   size=32 align=8
   base size=32 base align=8
std::__future_base::_State_baseV2::_Make_ready (0x0x7fdc359d73a8) 0
  std::__at_thread_exit_elt (0x0x7fdc359e3240) 0

Vtable for std::__future_base::_State_baseV2
std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E: 6u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt13__future_base13_State_baseV2E)
16    (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
24    (int (*)(...))std::__future_base::_State_baseV2::~_State_baseV2
32    (int (*)(...))std::__future_base::_State_baseV2::_M_complete_async
40    (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future

Class std::__future_base::_State_baseV2
   size=32 align=8
   base size=28 base align=8
std::__future_base::_State_baseV2 (0x0x7fdc35c6bd80) 0
    vptr=((& std::__future_base::_State_baseV2::_ZTVNSt13__future_base13_State_baseV2E) + 16u)

Class std::__future_base
   size=1 align=1
   base size=0 base align=1
std::__future_base (0x0x7fdc35c6bb40) 0 empty

Vtable for std::__future_base::_Async_state_commonV2
std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E: 6u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTINSt13__future_base21_Async_state_commonV2E)
16    (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
24    (int (*)(...))std::__future_base::_Async_state_commonV2::~_Async_state_commonV2
32    (int (*)(...))std::__future_base::_Async_state_commonV2::_M_complete_async
40    (int (*)(...))std::__future_base::_State_baseV2::_M_is_deferred_future

Class std::__future_base::_Async_state_commonV2
   size=48 align=8
   base size=44 base align=8
std::__future_base::_Async_state_commonV2 (0x0x7fdc3571df70) 0
    vptr=((& std::__future_base::_Async_state_commonV2::_ZTVNSt13__future_base21_Async_state_commonV2E) + 16u)
  std::__future_base::_State_baseV2 (0x0x7fdc3575b120) 0
      primary-for std::__future_base::_Async_state_commonV2 (0x0x7fdc3571df70)

Class QThread::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QThread::QPrivateSignal (0x0x7fdc3575b840) 0 empty

Vtable for QThread
QThread::_ZTV7QThread: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI7QThread)
16    (int (*)(...))QThread::metaObject
24    (int (*)(...))QThread::qt_metacast
32    (int (*)(...))QThread::qt_metacall
40    (int (*)(...))QThread::~QThread
48    (int (*)(...))QThread::~QThread
56    (int (*)(...))QThread::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QThread::run

Class QThread
   size=16 align=8
   base size=16 base align=8
QThread (0x0x7fdc3537da28) 0
    vptr=((& QThread::_ZTV7QThread) + 16u)
  QObject (0x0x7fdc3575b7e0) 0
      primary-for QThread (0x0x7fdc3537da28)

Class QThreadPool::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QThreadPool::QPrivateSignal (0x0x7fdc3575b960) 0 empty

Vtable for QThreadPool
QThreadPool::_ZTV11QThreadPool: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QThreadPool)
16    (int (*)(...))QThreadPool::metaObject
24    (int (*)(...))QThreadPool::qt_metacast
32    (int (*)(...))QThreadPool::qt_metacall
40    (int (*)(...))QThreadPool::~QThreadPool
48    (int (*)(...))QThreadPool::~QThreadPool
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QThreadPool
   size=16 align=8
   base size=16 base align=8
QThreadPool (0x0x7fdc3537da90) 0
    vptr=((& QThreadPool::_ZTV11QThreadPool) + 16u)
  QObject (0x0x7fdc3575b900) 0
      primary-for QThreadPool (0x0x7fdc3537da90)

Class QThreadStorageData
   size=4 align=4
   base size=4 base align=4
QThreadStorageData (0x0x7fdc3575b9c0) 0

Class QTimeLine::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTimeLine::QPrivateSignal (0x0x7fdc3575bae0) 0 empty

Vtable for QTimeLine
QTimeLine::_ZTV9QTimeLine: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI9QTimeLine)
16    (int (*)(...))QTimeLine::metaObject
24    (int (*)(...))QTimeLine::qt_metacast
32    (int (*)(...))QTimeLine::qt_metacall
40    (int (*)(...))QTimeLine::~QTimeLine
48    (int (*)(...))QTimeLine::~QTimeLine
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QTimeLine::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QTimeLine::valueForTime

Class QTimeLine
   size=16 align=8
   base size=16 base align=8
QTimeLine (0x0x7fdc3537daf8) 0
    vptr=((& QTimeLine::_ZTV9QTimeLine) + 16u)
  QObject (0x0x7fdc3575ba80) 0
      primary-for QTimeLine (0x0x7fdc3537daf8)

Class QTimer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTimer::QPrivateSignal (0x0x7fdc3575bba0) 0 empty

Vtable for QTimer
QTimer::_ZTV6QTimer: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI6QTimer)
16    (int (*)(...))QTimer::metaObject
24    (int (*)(...))QTimer::qt_metacast
32    (int (*)(...))QTimer::qt_metacall
40    (int (*)(...))QTimer::~QTimer
48    (int (*)(...))QTimer::~QTimer
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QTimer::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QTimer
   size=32 align=8
   base size=29 base align=8
QTimer (0x0x7fdc3537db60) 0
    vptr=((& QTimer::_ZTV6QTimer) + 16u)
  QObject (0x0x7fdc3575bb40) 0
      primary-for QTimer (0x0x7fdc3537db60)

Class QTimeZone::OffsetData
   size=32 align=8
   base size=28 base align=8
QTimeZone::OffsetData (0x0x7fdc3543b2a0) 0

Class QTimeZone
   size=8 align=8
   base size=8 base align=8
QTimeZone (0x0x7fdc3543b240) 0

Class QTranslator::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTranslator::QPrivateSignal (0x0x7fdc3543b840) 0 empty

Vtable for QTranslator
QTranslator::_ZTV11QTranslator: 16u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI11QTranslator)
16    (int (*)(...))QTranslator::metaObject
24    (int (*)(...))QTranslator::qt_metacast
32    (int (*)(...))QTranslator::qt_metacall
40    (int (*)(...))QTranslator::~QTranslator
48    (int (*)(...))QTranslator::~QTranslator
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QTranslator::translate
120   (int (*)(...))QTranslator::isEmpty

Class QTranslator
   size=16 align=8
   base size=16 base align=8
QTranslator (0x0x7fdc3543a5b0) 0
    vptr=((& QTranslator::_ZTV11QTranslator) + 16u)
  QObject (0x0x7fdc3543b7e0) 0
      primary-for QTranslator (0x0x7fdc3543a5b0)

Class QUrl
   size=8 align=8
   base size=8 base align=8
QUrl (0x0x7fdc3543b960) 0

Class QUrlQuery
   size=8 align=8
   base size=8 base align=8
QUrlQuery (0x0x7fdc3519e060) 0

Class QUuid
   size=16 align=4
   base size=16 base align=4
QUuid (0x0x7fdc3519e6c0) 0

Class QWaitCondition
   size=8 align=8
   base size=8 base align=8
QWaitCondition (0x0x7fdc3519ecc0) 0

Class QXmlStreamStringRef
   size=16 align=8
   base size=16 base align=8
QXmlStreamStringRef (0x0x7fdc3519ed20) 0

Class QXmlStreamAttribute
   size=80 align=8
   base size=73 base align=8
QXmlStreamAttribute (0x0x7fdc35292060) 0

Class QXmlStreamAttributes
   size=8 align=8
   base size=8 base align=8
QXmlStreamAttributes (0x0x7fdc352f5000) 0
  QVector<QXmlStreamAttribute> (0x0x7fdc35292420) 0

Class QXmlStreamNamespaceDeclaration
   size=40 align=8
   base size=40 base align=8
QXmlStreamNamespaceDeclaration (0x0x7fdc35292480) 0

Class QXmlStreamNotationDeclaration
   size=56 align=8
   base size=56 base align=8
QXmlStreamNotationDeclaration (0x0x7fdc35292720) 0

Class QXmlStreamEntityDeclaration
   size=88 align=8
   base size=88 base align=8
QXmlStreamEntityDeclaration (0x0x7fdc352929c0) 0

Vtable for QXmlStreamEntityResolver
QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver: 6u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI24QXmlStreamEntityResolver)
16    (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
24    (int (*)(...))QXmlStreamEntityResolver::~QXmlStreamEntityResolver
32    (int (*)(...))QXmlStreamEntityResolver::resolveEntity
40    (int (*)(...))QXmlStreamEntityResolver::resolveUndeclaredEntity

Class QXmlStreamEntityResolver
   size=8 align=8
   base size=8 base align=8
QXmlStreamEntityResolver (0x0x7fdc35292c60) 0 nearly-empty
    vptr=((& QXmlStreamEntityResolver::_ZTV24QXmlStreamEntityResolver) + 16u)

Class QXmlStreamReader
   size=8 align=8
   base size=8 base align=8
QXmlStreamReader (0x0x7fdc35292cc0) 0

Class QXmlStreamWriter
   size=8 align=8
   base size=8 base align=8
QXmlStreamWriter (0x0x7fdc34f98720) 0

Class QNetworkRequest
   size=8 align=8
   base size=8 base align=8
QNetworkRequest (0x0x7fdc34f98840) 0

Class QNetworkCacheMetaData
   size=8 align=8
   base size=8 base align=8
QNetworkCacheMetaData (0x0x7fdc34f98d80) 0

Class QAbstractNetworkCache::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractNetworkCache::QPrivateSignal (0x0x7fdc35036480) 0 empty

Vtable for QAbstractNetworkCache
QAbstractNetworkCache::_ZTV21QAbstractNetworkCache: 22u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI21QAbstractNetworkCache)
16    (int (*)(...))QAbstractNetworkCache::metaObject
24    (int (*)(...))QAbstractNetworkCache::qt_metacast
32    (int (*)(...))QAbstractNetworkCache::qt_metacall
40    0u
48    0u
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))__cxa_pure_virtual
136   (int (*)(...))__cxa_pure_virtual
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))__cxa_pure_virtual
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))__cxa_pure_virtual

Class QAbstractNetworkCache
   size=16 align=8
   base size=16 base align=8
QAbstractNetworkCache (0x0x7fdc34fc4958) 0
    vptr=((& QAbstractNetworkCache::_ZTV21QAbstractNetworkCache) + 16u)
  QObject (0x0x7fdc35036420) 0
      primary-for QAbstractNetworkCache (0x0x7fdc34fc4958)

Class QAbstractSocket::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractSocket::QPrivateSignal (0x0x7fdc35036540) 0 empty

Vtable for QAbstractSocket
QAbstractSocket::_ZTV15QAbstractSocket: 41u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QAbstractSocket)
16    (int (*)(...))QAbstractSocket::metaObject
24    (int (*)(...))QAbstractSocket::qt_metacast
32    (int (*)(...))QAbstractSocket::qt_metacall
40    (int (*)(...))QAbstractSocket::~QAbstractSocket
48    (int (*)(...))QAbstractSocket::~QAbstractSocket
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAbstractSocket::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QAbstractSocket::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QAbstractSocket::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QAbstractSocket::bytesAvailable
184   (int (*)(...))QAbstractSocket::bytesToWrite
192   (int (*)(...))QAbstractSocket::canReadLine
200   (int (*)(...))QAbstractSocket::waitForReadyRead
208   (int (*)(...))QAbstractSocket::waitForBytesWritten
216   (int (*)(...))QAbstractSocket::readData
224   (int (*)(...))QAbstractSocket::readLineData
232   (int (*)(...))QAbstractSocket::writeData
240   (int (*)(...))QAbstractSocket::resume
248   (int (*)(...))QAbstractSocket::connectToHost
256   (int (*)(...))QAbstractSocket::connectToHost
264   (int (*)(...))QAbstractSocket::disconnectFromHost
272   (int (*)(...))QAbstractSocket::setReadBufferSize
280   (int (*)(...))QAbstractSocket::socketDescriptor
288   (int (*)(...))QAbstractSocket::setSocketDescriptor
296   (int (*)(...))QAbstractSocket::setSocketOption
304   (int (*)(...))QAbstractSocket::socketOption
312   (int (*)(...))QAbstractSocket::waitForConnected
320   (int (*)(...))QAbstractSocket::waitForDisconnected

Class QAbstractSocket
   size=16 align=8
   base size=16 base align=8
QAbstractSocket (0x0x7fdc34fc49c0) 0
    vptr=((& QAbstractSocket::_ZTV15QAbstractSocket) + 16u)
  QIODevice (0x0x7fdc34fc4a28) 0
      primary-for QAbstractSocket (0x0x7fdc34fc49c0)
    QObject (0x0x7fdc350364e0) 0
        primary-for QIODevice (0x0x7fdc34fc4a28)

Class QAuthenticator
   size=8 align=8
   base size=8 base align=8
QAuthenticator (0x0x7fdc35036ae0) 0

Class QDnsDomainNameRecord
   size=8 align=8
   base size=8 base align=8
QDnsDomainNameRecord (0x0x7fdc35036b40) 0

Class QDnsHostAddressRecord
   size=8 align=8
   base size=8 base align=8
QDnsHostAddressRecord (0x0x7fdc35036e40) 0

Class QDnsMailExchangeRecord
   size=8 align=8
   base size=8 base align=8
QDnsMailExchangeRecord (0x0x7fdc3512c180) 0

Class QDnsServiceRecord
   size=8 align=8
   base size=8 base align=8
QDnsServiceRecord (0x0x7fdc3512c480) 0

Class QDnsTextRecord
   size=8 align=8
   base size=8 base align=8
QDnsTextRecord (0x0x7fdc3512c780) 0

Class QDnsLookup::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QDnsLookup::QPrivateSignal (0x0x7fdc3512cae0) 0 empty

Vtable for QDnsLookup
QDnsLookup::_ZTV10QDnsLookup: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QDnsLookup)
16    (int (*)(...))QDnsLookup::metaObject
24    (int (*)(...))QDnsLookup::qt_metacast
32    (int (*)(...))QDnsLookup::qt_metacall
40    (int (*)(...))QDnsLookup::~QDnsLookup
48    (int (*)(...))QDnsLookup::~QDnsLookup
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QDnsLookup
   size=16 align=8
   base size=16 base align=8
QDnsLookup (0x0x7fdc35146478) 0
    vptr=((& QDnsLookup::_ZTV10QDnsLookup) + 16u)
  QObject (0x0x7fdc3512ca80) 0
      primary-for QDnsLookup (0x0x7fdc35146478)

Class QIPv6Address
   size=16 align=1
   base size=16 base align=1
QIPv6Address (0x0x7fdc3512cb40) 0

Class QHostAddress
   size=8 align=8
   base size=8 base align=8
QHostAddress (0x0x7fdc3512cba0) 0

Class QHostInfo
   size=8 align=8
   base size=8 base align=8
QHostInfo (0x0x7fdc34ded3c0) 0

Class QHstsPolicy
   size=8 align=8
   base size=8 base align=8
QHstsPolicy (0x0x7fdc34ded8a0) 0

Class QHttpPart
   size=8 align=8
   base size=8 base align=8
QHttpPart (0x0x7fdc34e870c0) 0

Class QHttpMultiPart::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QHttpMultiPart::QPrivateSignal (0x0x7fdc34e87420) 0 empty

Vtable for QHttpMultiPart
QHttpMultiPart::_ZTV14QHttpMultiPart: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QHttpMultiPart)
16    (int (*)(...))QHttpMultiPart::metaObject
24    (int (*)(...))QHttpMultiPart::qt_metacast
32    (int (*)(...))QHttpMultiPart::qt_metacall
40    (int (*)(...))QHttpMultiPart::~QHttpMultiPart
48    (int (*)(...))QHttpMultiPart::~QHttpMultiPart
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QHttpMultiPart
   size=16 align=8
   base size=16 base align=8
QHttpMultiPart (0x0x7fdc34e546e8) 0
    vptr=((& QHttpMultiPart::_ZTV14QHttpMultiPart) + 16u)
  QObject (0x0x7fdc34e873c0) 0
      primary-for QHttpMultiPart (0x0x7fdc34e546e8)

Class QLocalServer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QLocalServer::QPrivateSignal (0x0x7fdc34e874e0) 0 empty

Vtable for QLocalServer
QLocalServer::_ZTV12QLocalServer: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QLocalServer)
16    (int (*)(...))QLocalServer::metaObject
24    (int (*)(...))QLocalServer::qt_metacast
32    (int (*)(...))QLocalServer::qt_metacall
40    (int (*)(...))QLocalServer::~QLocalServer
48    (int (*)(...))QLocalServer::~QLocalServer
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QLocalServer::hasPendingConnections
120   (int (*)(...))QLocalServer::nextPendingConnection
128   (int (*)(...))QLocalServer::incomingConnection

Class QLocalServer
   size=16 align=8
   base size=16 base align=8
QLocalServer (0x0x7fdc34e54750) 0
    vptr=((& QLocalServer::_ZTV12QLocalServer) + 16u)
  QObject (0x0x7fdc34e87480) 0
      primary-for QLocalServer (0x0x7fdc34e54750)

Class QLocalSocket::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QLocalSocket::QPrivateSignal (0x0x7fdc34e87720) 0 empty

Vtable for QLocalSocket
QLocalSocket::_ZTV12QLocalSocket: 30u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI12QLocalSocket)
16    (int (*)(...))QLocalSocket::metaObject
24    (int (*)(...))QLocalSocket::qt_metacast
32    (int (*)(...))QLocalSocket::qt_metacall
40    (int (*)(...))QLocalSocket::~QLocalSocket
48    (int (*)(...))QLocalSocket::~QLocalSocket
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QLocalSocket::isSequential
120   (int (*)(...))QLocalSocket::open
128   (int (*)(...))QLocalSocket::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QIODevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QLocalSocket::bytesAvailable
184   (int (*)(...))QLocalSocket::bytesToWrite
192   (int (*)(...))QLocalSocket::canReadLine
200   (int (*)(...))QLocalSocket::waitForReadyRead
208   (int (*)(...))QLocalSocket::waitForBytesWritten
216   (int (*)(...))QLocalSocket::readData
224   (int (*)(...))QIODevice::readLineData
232   (int (*)(...))QLocalSocket::writeData

Class QLocalSocket
   size=16 align=8
   base size=16 base align=8
QLocalSocket (0x0x7fdc34e548f0) 0
    vptr=((& QLocalSocket::_ZTV12QLocalSocket) + 16u)
  QIODevice (0x0x7fdc34e54958) 0
      primary-for QLocalSocket (0x0x7fdc34e548f0)
    QObject (0x0x7fdc34e876c0) 0
        primary-for QIODevice (0x0x7fdc34e54958)

Class QTcpSocket::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTcpSocket::QPrivateSignal (0x0x7fdc34e877e0) 0 empty

Vtable for QTcpSocket
QTcpSocket::_ZTV10QTcpSocket: 41u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QTcpSocket)
16    (int (*)(...))QTcpSocket::metaObject
24    (int (*)(...))QTcpSocket::qt_metacast
32    (int (*)(...))QTcpSocket::qt_metacall
40    (int (*)(...))QTcpSocket::~QTcpSocket
48    (int (*)(...))QTcpSocket::~QTcpSocket
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAbstractSocket::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QAbstractSocket::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QAbstractSocket::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QAbstractSocket::bytesAvailable
184   (int (*)(...))QAbstractSocket::bytesToWrite
192   (int (*)(...))QAbstractSocket::canReadLine
200   (int (*)(...))QAbstractSocket::waitForReadyRead
208   (int (*)(...))QAbstractSocket::waitForBytesWritten
216   (int (*)(...))QAbstractSocket::readData
224   (int (*)(...))QAbstractSocket::readLineData
232   (int (*)(...))QAbstractSocket::writeData
240   (int (*)(...))QAbstractSocket::resume
248   (int (*)(...))QAbstractSocket::connectToHost
256   (int (*)(...))QAbstractSocket::connectToHost
264   (int (*)(...))QAbstractSocket::disconnectFromHost
272   (int (*)(...))QAbstractSocket::setReadBufferSize
280   (int (*)(...))QAbstractSocket::socketDescriptor
288   (int (*)(...))QAbstractSocket::setSocketDescriptor
296   (int (*)(...))QAbstractSocket::setSocketOption
304   (int (*)(...))QAbstractSocket::socketOption
312   (int (*)(...))QAbstractSocket::waitForConnected
320   (int (*)(...))QAbstractSocket::waitForDisconnected

Class QTcpSocket
   size=16 align=8
   base size=16 base align=8
QTcpSocket (0x0x7fdc34e549c0) 0
    vptr=((& QTcpSocket::_ZTV10QTcpSocket) + 16u)
  QAbstractSocket (0x0x7fdc34e54a28) 0
      primary-for QTcpSocket (0x0x7fdc34e549c0)
    QIODevice (0x0x7fdc34e54a90) 0
        primary-for QAbstractSocket (0x0x7fdc34e54a28)
      QObject (0x0x7fdc34e87780) 0
          primary-for QIODevice (0x0x7fdc34e54a90)

Class QSslCertificate
   size=8 align=8
   base size=8 base align=8
QSslCertificate (0x0x7fdc34e879c0) 0

Class QSslError
   size=8 align=8
   base size=8 base align=8
QSslError (0x0x7fdc34e87de0) 0

Class QSslSocket::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QSslSocket::QPrivateSignal (0x0x7fdc34ba5780) 0 empty

Vtable for QSslSocket
QSslSocket::_ZTV10QSslSocket: 41u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QSslSocket)
16    (int (*)(...))QSslSocket::metaObject
24    (int (*)(...))QSslSocket::qt_metacast
32    (int (*)(...))QSslSocket::qt_metacall
40    (int (*)(...))QSslSocket::~QSslSocket
48    (int (*)(...))QSslSocket::~QSslSocket
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAbstractSocket::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QSslSocket::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QSslSocket::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QSslSocket::bytesAvailable
184   (int (*)(...))QSslSocket::bytesToWrite
192   (int (*)(...))QSslSocket::canReadLine
200   (int (*)(...))QSslSocket::waitForReadyRead
208   (int (*)(...))QSslSocket::waitForBytesWritten
216   (int (*)(...))QSslSocket::readData
224   (int (*)(...))QAbstractSocket::readLineData
232   (int (*)(...))QSslSocket::writeData
240   (int (*)(...))QSslSocket::resume
248   (int (*)(...))QSslSocket::connectToHost
256   (int (*)(...))QAbstractSocket::connectToHost
264   (int (*)(...))QSslSocket::disconnectFromHost
272   (int (*)(...))QSslSocket::setReadBufferSize
280   (int (*)(...))QAbstractSocket::socketDescriptor
288   (int (*)(...))QSslSocket::setSocketDescriptor
296   (int (*)(...))QSslSocket::setSocketOption
304   (int (*)(...))QSslSocket::socketOption
312   (int (*)(...))QSslSocket::waitForConnected
320   (int (*)(...))QSslSocket::waitForDisconnected

Class QSslSocket
   size=16 align=8
   base size=16 base align=8
QSslSocket (0x0x7fdc34baa478) 0
    vptr=((& QSslSocket::_ZTV10QSslSocket) + 16u)
  QTcpSocket (0x0x7fdc34baa4e0) 0
      primary-for QSslSocket (0x0x7fdc34baa478)
    QAbstractSocket (0x0x7fdc34baa548) 0
        primary-for QTcpSocket (0x0x7fdc34baa4e0)
      QIODevice (0x0x7fdc34baa5b0) 0
          primary-for QAbstractSocket (0x0x7fdc34baa548)
        QObject (0x0x7fdc34ba5720) 0
            primary-for QIODevice (0x0x7fdc34baa5b0)

Class QSslConfiguration
   size=8 align=8
   base size=8 base align=8
QSslConfiguration (0x0x7fdc34ba57e0) 0

Class QSslPreSharedKeyAuthenticator
   size=8 align=8
   base size=8 base align=8
QSslPreSharedKeyAuthenticator (0x0x7fdc34ba5f60) 0

Class QNetworkAccessManager::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkAccessManager::QPrivateSignal (0x0x7fdc34c4d8a0) 0 empty

Vtable for QNetworkAccessManager
QNetworkAccessManager::_ZTV21QNetworkAccessManager: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI21QNetworkAccessManager)
16    (int (*)(...))QNetworkAccessManager::metaObject
24    (int (*)(...))QNetworkAccessManager::qt_metacast
32    (int (*)(...))QNetworkAccessManager::qt_metacall
40    (int (*)(...))QNetworkAccessManager::~QNetworkAccessManager
48    (int (*)(...))QNetworkAccessManager::~QNetworkAccessManager
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QNetworkAccessManager::createRequest

Class QNetworkAccessManager
   size=16 align=8
   base size=16 base align=8
QNetworkAccessManager (0x0x7fdc34c65270) 0
    vptr=((& QNetworkAccessManager::_ZTV21QNetworkAccessManager) + 16u)
  QObject (0x0x7fdc34c4d840) 0
      primary-for QNetworkAccessManager (0x0x7fdc34c65270)

Class QNetworkConfiguration
   size=8 align=8
   base size=8 base align=8
QNetworkConfiguration (0x0x7fdc34c4d900) 0

Class QNetworkConfigurationManager::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkConfigurationManager::QPrivateSignal (0x0x7fdc34c4dd80) 0 empty

Vtable for QNetworkConfigurationManager
QNetworkConfigurationManager::_ZTV28QNetworkConfigurationManager: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI28QNetworkConfigurationManager)
16    (int (*)(...))QNetworkConfigurationManager::metaObject
24    (int (*)(...))QNetworkConfigurationManager::qt_metacast
32    (int (*)(...))QNetworkConfigurationManager::qt_metacall
40    (int (*)(...))QNetworkConfigurationManager::~QNetworkConfigurationManager
48    (int (*)(...))QNetworkConfigurationManager::~QNetworkConfigurationManager
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify

Class QNetworkConfigurationManager
   size=16 align=8
   base size=16 base align=8
QNetworkConfigurationManager (0x0x7fdc34c65478) 0
    vptr=((& QNetworkConfigurationManager::_ZTV28QNetworkConfigurationManager) + 16u)
  QObject (0x0x7fdc34c4dd20) 0
      primary-for QNetworkConfigurationManager (0x0x7fdc34c65478)

Class QNetworkCookie
   size=8 align=8
   base size=8 base align=8
QNetworkCookie (0x0x7fdc34cf2120) 0

Class QNetworkCookieJar::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkCookieJar::QPrivateSignal (0x0x7fdc34cf2900) 0 empty

Vtable for QNetworkCookieJar
QNetworkCookieJar::_ZTV17QNetworkCookieJar: 20u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QNetworkCookieJar)
16    (int (*)(...))QNetworkCookieJar::metaObject
24    (int (*)(...))QNetworkCookieJar::qt_metacast
32    (int (*)(...))QNetworkCookieJar::qt_metacall
40    (int (*)(...))QNetworkCookieJar::~QNetworkCookieJar
48    (int (*)(...))QNetworkCookieJar::~QNetworkCookieJar
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QNetworkCookieJar::cookiesForUrl
120   (int (*)(...))QNetworkCookieJar::setCookiesFromUrl
128   (int (*)(...))QNetworkCookieJar::insertCookie
136   (int (*)(...))QNetworkCookieJar::updateCookie
144   (int (*)(...))QNetworkCookieJar::deleteCookie
152   (int (*)(...))QNetworkCookieJar::validateCookie

Class QNetworkCookieJar
   size=16 align=8
   base size=16 base align=8
QNetworkCookieJar (0x0x7fdc34c65c98) 0
    vptr=((& QNetworkCookieJar::_ZTV17QNetworkCookieJar) + 16u)
  QObject (0x0x7fdc34cf28a0) 0
      primary-for QNetworkCookieJar (0x0x7fdc34c65c98)

Class QNetworkDatagram
   size=8 align=8
   base size=8 base align=8
QNetworkDatagram (0x0x7fdc34cf2960) 0

Class QNetworkDiskCache::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkDiskCache::QPrivateSignal (0x0x7fdc349de960) 0 empty

Vtable for QNetworkDiskCache
QNetworkDiskCache::_ZTV17QNetworkDiskCache: 23u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI17QNetworkDiskCache)
16    (int (*)(...))QNetworkDiskCache::metaObject
24    (int (*)(...))QNetworkDiskCache::qt_metacast
32    (int (*)(...))QNetworkDiskCache::qt_metacall
40    (int (*)(...))QNetworkDiskCache::~QNetworkDiskCache
48    (int (*)(...))QNetworkDiskCache::~QNetworkDiskCache
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QNetworkDiskCache::metaData
120   (int (*)(...))QNetworkDiskCache::updateMetaData
128   (int (*)(...))QNetworkDiskCache::data
136   (int (*)(...))QNetworkDiskCache::remove
144   (int (*)(...))QNetworkDiskCache::cacheSize
152   (int (*)(...))QNetworkDiskCache::prepare
160   (int (*)(...))QNetworkDiskCache::insert
168   (int (*)(...))QNetworkDiskCache::clear
176   (int (*)(...))QNetworkDiskCache::expire

Class QNetworkDiskCache
   size=16 align=8
   base size=16 base align=8
QNetworkDiskCache (0x0x7fdc349e76e8) 0
    vptr=((& QNetworkDiskCache::_ZTV17QNetworkDiskCache) + 16u)
  QAbstractNetworkCache (0x0x7fdc349e7750) 0
      primary-for QNetworkDiskCache (0x0x7fdc349e76e8)
    QObject (0x0x7fdc349de900) 0
        primary-for QAbstractNetworkCache (0x0x7fdc349e7750)

Class QNetworkAddressEntry
   size=8 align=8
   base size=8 base align=8
QNetworkAddressEntry (0x0x7fdc349de9c0) 0

Class QNetworkInterface
   size=8 align=8
   base size=8 base align=8
QNetworkInterface (0x0x7fdc34a300c0) 0

Class QNetworkProxyQuery
   size=8 align=8
   base size=8 base align=8
QNetworkProxyQuery (0x0x7fdc34a307e0) 0

Class QNetworkProxy
   size=8 align=8
   base size=8 base align=8
QNetworkProxy (0x0x7fdc34a30e40) 0

Vtable for QNetworkProxyFactory
QNetworkProxyFactory::_ZTV20QNetworkProxyFactory: 5u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QNetworkProxyFactory)
16    0u
24    0u
32    (int (*)(...))__cxa_pure_virtual

Class QNetworkProxyFactory
   size=8 align=8
   base size=8 base align=8
QNetworkProxyFactory (0x0x7fdc34ade660) 0 nearly-empty
    vptr=((& QNetworkProxyFactory::_ZTV20QNetworkProxyFactory) + 16u)

Class QNetworkReply::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkReply::QPrivateSignal (0x0x7fdc34ade840) 0 empty

Vtable for QNetworkReply
QNetworkReply::_ZTV13QNetworkReply: 36u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QNetworkReply)
16    (int (*)(...))QNetworkReply::metaObject
24    (int (*)(...))QNetworkReply::qt_metacast
32    (int (*)(...))QNetworkReply::qt_metacall
40    0u
48    0u
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QNetworkReply::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QNetworkReply::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QIODevice::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QIODevice::bytesAvailable
184   (int (*)(...))QIODevice::bytesToWrite
192   (int (*)(...))QIODevice::canReadLine
200   (int (*)(...))QIODevice::waitForReadyRead
208   (int (*)(...))QIODevice::waitForBytesWritten
216   (int (*)(...))__cxa_pure_virtual
224   (int (*)(...))QIODevice::readLineData
232   (int (*)(...))QNetworkReply::writeData
240   (int (*)(...))QNetworkReply::setReadBufferSize
248   (int (*)(...))__cxa_pure_virtual
256   (int (*)(...))QNetworkReply::ignoreSslErrors
264   (int (*)(...))QNetworkReply::sslConfigurationImplementation
272   (int (*)(...))QNetworkReply::setSslConfigurationImplementation
280   (int (*)(...))QNetworkReply::ignoreSslErrorsImplementation

Class QNetworkReply
   size=16 align=8
   base size=16 base align=8
QNetworkReply (0x0x7fdc34a55dd0) 0
    vptr=((& QNetworkReply::_ZTV13QNetworkReply) + 16u)
  QIODevice (0x0x7fdc34a55e38) 0
      primary-for QNetworkReply (0x0x7fdc34a55dd0)
    QObject (0x0x7fdc34ade7e0) 0
        primary-for QIODevice (0x0x7fdc34a55e38)

Class QNetworkSession::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QNetworkSession::QPrivateSignal (0x0x7fdc34adea20) 0 empty

Vtable for QNetworkSession
QNetworkSession::_ZTV15QNetworkSession: 14u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QNetworkSession)
16    (int (*)(...))QNetworkSession::metaObject
24    (int (*)(...))QNetworkSession::qt_metacast
32    (int (*)(...))QNetworkSession::qt_metacall
40    (int (*)(...))QNetworkSession::~QNetworkSession
48    (int (*)(...))QNetworkSession::~QNetworkSession
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QNetworkSession::connectNotify
104   (int (*)(...))QNetworkSession::disconnectNotify

Class QNetworkSession
   size=24 align=8
   base size=24 base align=8
QNetworkSession (0x0x7fdc34a55ea0) 0
    vptr=((& QNetworkSession::_ZTV15QNetworkSession) + 16u)
  QObject (0x0x7fdc34ade9c0) 0
      primary-for QNetworkSession (0x0x7fdc34a55ea0)

Class QTcpServer::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QTcpServer::QPrivateSignal (0x0x7fdc3479c000) 0 empty

Vtable for QTcpServer
QTcpServer::_ZTV10QTcpServer: 17u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QTcpServer)
16    (int (*)(...))QTcpServer::metaObject
24    (int (*)(...))QTcpServer::qt_metacast
32    (int (*)(...))QTcpServer::qt_metacall
40    (int (*)(...))QTcpServer::~QTcpServer
48    (int (*)(...))QTcpServer::~QTcpServer
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QTcpServer::hasPendingConnections
120   (int (*)(...))QTcpServer::nextPendingConnection
128   (int (*)(...))QTcpServer::incomingConnection

Class QTcpServer
   size=16 align=8
   base size=16 base align=8
QTcpServer (0x0x7fdc34797000) 0
    vptr=((& QTcpServer::_ZTV10QTcpServer) + 16u)
  QObject (0x0x7fdc34adef60) 0
      primary-for QTcpServer (0x0x7fdc34797000)

Class QSslCertificateExtension
   size=8 align=8
   base size=8 base align=8
QSslCertificateExtension (0x0x7fdc3479c060) 0

Class QSslCipher
   size=8 align=8
   base size=8 base align=8
QSslCipher (0x0x7fdc3479c360) 0

Class QSslDiffieHellmanParameters
   size=8 align=8
   base size=8 base align=8
QSslDiffieHellmanParameters (0x0x7fdc3479cb40) 0

Class QSslEllipticCurve
   size=4 align=4
   base size=4 base align=4
QSslEllipticCurve (0x0x7fdc34871660) 0

Class QSslKey
   size=8 align=8
   base size=8 base align=8
QSslKey (0x0x7fdc34871d80) 0

Class QUdpSocket::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QUdpSocket::QPrivateSignal (0x0x7fdc348c0120) 0 empty

Vtable for QUdpSocket
QUdpSocket::_ZTV10QUdpSocket: 41u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI10QUdpSocket)
16    (int (*)(...))QUdpSocket::metaObject
24    (int (*)(...))QUdpSocket::qt_metacast
32    (int (*)(...))QUdpSocket::qt_metacall
40    (int (*)(...))QUdpSocket::~QUdpSocket
48    (int (*)(...))QUdpSocket::~QUdpSocket
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))QAbstractSocket::isSequential
120   (int (*)(...))QIODevice::open
128   (int (*)(...))QAbstractSocket::close
136   (int (*)(...))QIODevice::pos
144   (int (*)(...))QIODevice::size
152   (int (*)(...))QIODevice::seek
160   (int (*)(...))QAbstractSocket::atEnd
168   (int (*)(...))QIODevice::reset
176   (int (*)(...))QAbstractSocket::bytesAvailable
184   (int (*)(...))QAbstractSocket::bytesToWrite
192   (int (*)(...))QAbstractSocket::canReadLine
200   (int (*)(...))QAbstractSocket::waitForReadyRead
208   (int (*)(...))QAbstractSocket::waitForBytesWritten
216   (int (*)(...))QAbstractSocket::readData
224   (int (*)(...))QAbstractSocket::readLineData
232   (int (*)(...))QAbstractSocket::writeData
240   (int (*)(...))QAbstractSocket::resume
248   (int (*)(...))QAbstractSocket::connectToHost
256   (int (*)(...))QAbstractSocket::connectToHost
264   (int (*)(...))QAbstractSocket::disconnectFromHost
272   (int (*)(...))QAbstractSocket::setReadBufferSize
280   (int (*)(...))QAbstractSocket::socketDescriptor
288   (int (*)(...))QAbstractSocket::setSocketDescriptor
296   (int (*)(...))QAbstractSocket::setSocketOption
304   (int (*)(...))QAbstractSocket::socketOption
312   (int (*)(...))QAbstractSocket::waitForConnected
320   (int (*)(...))QAbstractSocket::waitForDisconnected

Class QUdpSocket
   size=16 align=8
   base size=16 base align=8
QUdpSocket (0x0x7fdc348945b0) 0
    vptr=((& QUdpSocket::_ZTV10QUdpSocket) + 16u)
  QAbstractSocket (0x0x7fdc34894618) 0
      primary-for QUdpSocket (0x0x7fdc348945b0)
    QIODevice (0x0x7fdc34894680) 0
        primary-for QAbstractSocket (0x0x7fdc34894618)
      QObject (0x0x7fdc348c00c0) 0
          primary-for QIODevice (0x0x7fdc34894680)

Class QSourceLocation
   size=24 align=8
   base size=24 base align=8
QSourceLocation (0x0x7fdc348c0180) 0

Class QAbstractMessageHandler::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractMessageHandler::QPrivateSignal (0x0x7fdc348c0600) 0 empty

Vtable for QAbstractMessageHandler
QAbstractMessageHandler::_ZTV23QAbstractMessageHandler: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI23QAbstractMessageHandler)
16    (int (*)(...))QAbstractMessageHandler::metaObject
24    (int (*)(...))QAbstractMessageHandler::qt_metacast
32    (int (*)(...))QAbstractMessageHandler::qt_metacall
40    0u
48    0u
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual

Class QAbstractMessageHandler
   size=16 align=8
   base size=16 base align=8
QAbstractMessageHandler (0x0x7fdc34894888) 0
    vptr=((& QAbstractMessageHandler::_ZTV23QAbstractMessageHandler) + 16u)
  QObject (0x0x7fdc348c05a0) 0
      primary-for QAbstractMessageHandler (0x0x7fdc34894888)

Class QAbstractUriResolver::QPrivateSignal
   size=1 align=1
   base size=0 base align=1
QAbstractUriResolver::QPrivateSignal (0x0x7fdc348c06c0) 0 empty

Vtable for QAbstractUriResolver
QAbstractUriResolver::_ZTV20QAbstractUriResolver: 15u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QAbstractUriResolver)
16    (int (*)(...))QAbstractUriResolver::metaObject
24    (int (*)(...))QAbstractUriResolver::qt_metacast
32    (int (*)(...))QAbstractUriResolver::qt_metacall
40    0u
48    0u
56    (int (*)(...))QObject::event
64    (int (*)(...))QObject::eventFilter
72    (int (*)(...))QObject::timerEvent
80    (int (*)(...))QObject::childEvent
88    (int (*)(...))QObject::customEvent
96    (int (*)(...))QObject::connectNotify
104   (int (*)(...))QObject::disconnectNotify
112   (int (*)(...))__cxa_pure_virtual

Class QAbstractUriResolver
   size=16 align=8
   base size=16 base align=8
QAbstractUriResolver (0x0x7fdc348948f0) 0
    vptr=((& QAbstractUriResolver::_ZTV20QAbstractUriResolver) + 16u)
  QObject (0x0x7fdc348c0660) 0
      primary-for QAbstractUriResolver (0x0x7fdc348948f0)

Class QXmlName
   size=8 align=8
   base size=8 base align=8
QXmlName (0x0x7fdc348c0720) 0

Class QPatternist::NodeIndexStorage
   size=24 align=8
   base size=24 base align=8
QPatternist::NodeIndexStorage (0x0x7fdc348c0ae0) 0

Class QXmlNodeModelIndex
   size=24 align=8
   base size=24 base align=8
QXmlNodeModelIndex (0x0x7fdc348c0ba0) 0

Vtable for QAbstractXmlNodeModel
QAbstractXmlNodeModel::_ZTV21QAbstractXmlNodeModel: 24u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI21QAbstractXmlNodeModel)
16    0u
24    0u
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual
72    (int (*)(...))__cxa_pure_virtual
80    (int (*)(...))__cxa_pure_virtual
88    (int (*)(...))__cxa_pure_virtual
96    (int (*)(...))QAbstractXmlNodeModel::iterate
104   (int (*)(...))QAbstractXmlNodeModel::sequencedTypedValue
112   (int (*)(...))QAbstractXmlNodeModel::type
120   (int (*)(...))QAbstractXmlNodeModel::namespaceForPrefix
128   (int (*)(...))QAbstractXmlNodeModel::isDeepEqual
136   (int (*)(...))QAbstractXmlNodeModel::sendNamespaces
144   (int (*)(...))__cxa_pure_virtual
152   (int (*)(...))__cxa_pure_virtual
160   (int (*)(...))__cxa_pure_virtual
168   (int (*)(...))QAbstractXmlNodeModel::copyNodeTo
176   (int (*)(...))__cxa_pure_virtual
184   (int (*)(...))__cxa_pure_virtual

Class QAbstractXmlNodeModel
   size=24 align=8
   base size=24 base align=8
QAbstractXmlNodeModel (0x0x7fdc34894af8) 0
    vptr=((& QAbstractXmlNodeModel::_ZTV21QAbstractXmlNodeModel) + 16u)
  QSharedData (0x0x7fdc348c0c00) 8

Class QXmlItem
   size=24 align=8
   base size=24 base align=8
QXmlItem (0x0x7fdc348c0f00) 0

Vtable for QAbstractXmlReceiver
QAbstractXmlReceiver::_ZTV20QAbstractXmlReceiver: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI20QAbstractXmlReceiver)
16    0u
24    0u
32    (int (*)(...))__cxa_pure_virtual
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual
72    (int (*)(...))__cxa_pure_virtual
80    (int (*)(...))__cxa_pure_virtual
88    (int (*)(...))__cxa_pure_virtual
96    (int (*)(...))__cxa_pure_virtual
104   (int (*)(...))__cxa_pure_virtual
112   (int (*)(...))__cxa_pure_virtual
120   (int (*)(...))__cxa_pure_virtual
128   (int (*)(...))QAbstractXmlReceiver::whitespaceOnly
136   (int (*)(...))QAbstractXmlReceiver::item

Class QAbstractXmlReceiver
   size=16 align=8
   base size=16 base align=8
QAbstractXmlReceiver (0x0x7fdc3458d360) 0
    vptr=((& QAbstractXmlReceiver::_ZTV20QAbstractXmlReceiver) + 16u)

Class QXmlNamePool
   size=8 align=8
   base size=8 base align=8
QXmlNamePool (0x0x7fdc3458d420) 0

Class QXmlQuery
   size=8 align=8
   base size=8 base align=8
QXmlQuery (0x0x7fdc3458d4e0) 0

Vtable for QSimpleXmlNodeModel
QSimpleXmlNodeModel::_ZTV19QSimpleXmlNodeModel: 24u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI19QSimpleXmlNodeModel)
16    0u
24    0u
32    (int (*)(...))QSimpleXmlNodeModel::baseUri
40    (int (*)(...))__cxa_pure_virtual
48    (int (*)(...))__cxa_pure_virtual
56    (int (*)(...))__cxa_pure_virtual
64    (int (*)(...))__cxa_pure_virtual
72    (int (*)(...))__cxa_pure_virtual
80    (int (*)(...))QSimpleXmlNodeModel::stringValue
88    (int (*)(...))__cxa_pure_virtual
96    (int (*)(...))QAbstractXmlNodeModel::iterate
104   (int (*)(...))QAbstractXmlNodeModel::sequencedTypedValue
112   (int (*)(...))QAbstractXmlNodeModel::type
120   (int (*)(...))QAbstractXmlNodeModel::namespaceForPrefix
128   (int (*)(...))QAbstractXmlNodeModel::isDeepEqual
136   (int (*)(...))QAbstractXmlNodeModel::sendNamespaces
144   (int (*)(...))QSimpleXmlNodeModel::namespaceBindings
152   (int (*)(...))QSimpleXmlNodeModel::elementById
160   (int (*)(...))QSimpleXmlNodeModel::nodesByIdref
168   (int (*)(...))QAbstractXmlNodeModel::copyNodeTo
176   (int (*)(...))__cxa_pure_virtual
184   (int (*)(...))__cxa_pure_virtual

Class QSimpleXmlNodeModel
   size=24 align=8
   base size=24 base align=8
QSimpleXmlNodeModel (0x0x7fdc34894ea0) 0
    vptr=((& QSimpleXmlNodeModel::_ZTV19QSimpleXmlNodeModel) + 16u)
  QAbstractXmlNodeModel (0x0x7fdc34894f08) 0
      primary-for QSimpleXmlNodeModel (0x0x7fdc34894ea0)
    QSharedData (0x0x7fdc3458d540) 8

Vtable for QXmlSerializer
QXmlSerializer::_ZTV14QXmlSerializer: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI14QXmlSerializer)
16    (int (*)(...))QXmlSerializer::~QXmlSerializer
24    (int (*)(...))QXmlSerializer::~QXmlSerializer
32    (int (*)(...))QXmlSerializer::startElement
40    (int (*)(...))QXmlSerializer::endElement
48    (int (*)(...))QXmlSerializer::attribute
56    (int (*)(...))QXmlSerializer::comment
64    (int (*)(...))QXmlSerializer::characters
72    (int (*)(...))QXmlSerializer::startDocument
80    (int (*)(...))QXmlSerializer::endDocument
88    (int (*)(...))QXmlSerializer::processingInstruction
96    (int (*)(...))QXmlSerializer::atomicValue
104   (int (*)(...))QXmlSerializer::namespaceBinding
112   (int (*)(...))QXmlSerializer::startOfSequence
120   (int (*)(...))QXmlSerializer::endOfSequence
128   (int (*)(...))QAbstractXmlReceiver::whitespaceOnly
136   (int (*)(...))QXmlSerializer::item

Class QXmlSerializer
   size=16 align=8
   base size=16 base align=8
QXmlSerializer (0x0x7fdc34894f70) 0
    vptr=((& QXmlSerializer::_ZTV14QXmlSerializer) + 16u)
  QAbstractXmlReceiver (0x0x7fdc3458d600) 0
      primary-for QXmlSerializer (0x0x7fdc34894f70)

Vtable for QXmlFormatter
QXmlFormatter::_ZTV13QXmlFormatter: 18u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI13QXmlFormatter)
16    (int (*)(...))QXmlFormatter::~QXmlFormatter
24    (int (*)(...))QXmlFormatter::~QXmlFormatter
32    (int (*)(...))QXmlFormatter::startElement
40    (int (*)(...))QXmlFormatter::endElement
48    (int (*)(...))QXmlFormatter::attribute
56    (int (*)(...))QXmlFormatter::comment
64    (int (*)(...))QXmlFormatter::characters
72    (int (*)(...))QXmlFormatter::startDocument
80    (int (*)(...))QXmlFormatter::endDocument
88    (int (*)(...))QXmlFormatter::processingInstruction
96    (int (*)(...))QXmlFormatter::atomicValue
104   (int (*)(...))QXmlSerializer::namespaceBinding
112   (int (*)(...))QXmlFormatter::startOfSequence
120   (int (*)(...))QXmlFormatter::endOfSequence
128   (int (*)(...))QAbstractXmlReceiver::whitespaceOnly
136   (int (*)(...))QXmlFormatter::item

Class QXmlFormatter
   size=16 align=8
   base size=16 base align=8
QXmlFormatter (0x0x7fdc345e9000) 0
    vptr=((& QXmlFormatter::_ZTV13QXmlFormatter) + 16u)
  QXmlSerializer (0x0x7fdc345e9068) 0
      primary-for QXmlFormatter (0x0x7fdc345e9000)
    QAbstractXmlReceiver (0x0x7fdc3458d6c0) 0
        primary-for QXmlSerializer (0x0x7fdc345e9068)

Vtable for QXmlResultItems
QXmlResultItems::_ZTV15QXmlResultItems: 4u entries
0     (int (*)(...))0
8     (int (*)(...))(& _ZTI15QXmlResultItems)
16    (int (*)(...))QXmlResultItems::~QXmlResultItems
24    (int (*)(...))QXmlResultItems::~QXmlResultItems

Class QXmlResultItems
   size=16 align=8
   base size=16 base align=8
QXmlResultItems (0x0x7fdc3458d720) 0
    vptr=((& QXmlResultItems::_ZTV15QXmlResultItems) + 16u)

Class QXmlSchema
   size=8 align=8
   base size=8 base align=8
QXmlSchema (0x0x7fdc3458d840) 0

Class QXmlSchemaValidator
   size=8 align=8
   base size=8 base align=8
QXmlSchemaValidator (0x0x7fdc3458d900) 0

